From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 0B5B3C6FD1C for ; Mon, 20 Mar 2023 23:42:59 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 350C56B0075; Mon, 20 Mar 2023 19:42:59 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 301806B0078; Mon, 20 Mar 2023 19:42:59 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 1CA366B007B; Mon, 20 Mar 2023 19:42:59 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0012.hostedemail.com [216.40.44.12]) by kanga.kvack.org (Postfix) with ESMTP id 099726B0075 for ; Mon, 20 Mar 2023 19:42:59 -0400 (EDT) Received: from smtpin02.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay09.hostedemail.com (Postfix) with ESMTP id BA79180F7C for ; Mon, 20 Mar 2023 23:42:58 +0000 (UTC) X-FDA: 80590904436.02.F2D2EBF Received: from mail-wm1-f44.google.com (mail-wm1-f44.google.com [209.85.128.44]) by imf18.hostedemail.com (Postfix) with ESMTP id F0B1C1C0005 for ; Mon, 20 Mar 2023 23:42:56 +0000 (UTC) Authentication-Results: imf18.hostedemail.com; dkim=pass header.d=gmail.com header.s=20210112 header.b=hBKYIOkk; spf=pass (imf18.hostedemail.com: domain of lstoakes@gmail.com designates 209.85.128.44 as permitted sender) smtp.mailfrom=lstoakes@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1679355777; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-transfer-encoding:content-transfer-encoding: in-reply-to:references:dkim-signature; bh=aPQG/I/mhAvQC4xeeznjLyrdZONKek1qCY1BYNNuVGw=; b=eO75nC8+xVy9bUZaHp3wm4/kU7hngHypkA4k5QvNl5ParD6+wtUsrRbKIp1z87mzEmduWN GQLm4du6DPUK1ZA7XpYIk4JmVBZU0XZT041I25GwO6UJhg+sVkRoZdRM0yCFYpTuXTX5Kf 2N3GkLUWq0n59PR1c+t8mYwouWjhuxQ= ARC-Authentication-Results: i=1; imf18.hostedemail.com; dkim=pass header.d=gmail.com header.s=20210112 header.b=hBKYIOkk; spf=pass (imf18.hostedemail.com: domain of lstoakes@gmail.com designates 209.85.128.44 as permitted sender) smtp.mailfrom=lstoakes@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1679355777; a=rsa-sha256; cv=none; b=jJHdFlWyVDwd9ILp/jmJ1swnz2h1m2mnTUH2omB4JngiZad3cuE9bRQ1xLanOOHKAvEvL0 9/onzyHgrcacwrq85C4fuUO3oAn5b+4cMBYE5jUPEEJM/Gvrz2Guz/gRZYfHFCneRN3YZs QZkZpyR7W4o+PUsaab4HDThpJ3g3I1o= Received: by mail-wm1-f44.google.com with SMTP id i5-20020a05600c354500b003edd24054e0so3373289wmq.4 for ; Mon, 20 Mar 2023 16:42:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; t=1679355775; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=aPQG/I/mhAvQC4xeeznjLyrdZONKek1qCY1BYNNuVGw=; b=hBKYIOkkfobPOor7ReMCrt7R/APu69Pn4BJpGo/9oflmlHdVtXJGb8EauDM+ueIWcE aEJW9pLLVIjPs70C6QZEsvrpd/dsWjCMQ/QSAWBQ4H0S4o6EzOK1zMscFf+JRpD+1WTM rgbvF//M5D17ecnc/LVfbJhoEShmR2UfaGs55FqvuZCFnrKfsZCYsnyNPnVRJYZKhdNl CQd5EL2C2rm5i4ZdVKKfvBGTWcN4vByDq/hyypqkGcNx30MMQUhnce51iOHJ7RL9gTN2 ZnjNd+OlZBCZbleglq+pfsAlG/V8ms9WrUuo22u9hBE60uA3s8VDThehSXKqXBK2qXTe XWWQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1679355775; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=aPQG/I/mhAvQC4xeeznjLyrdZONKek1qCY1BYNNuVGw=; b=aCXU40wuQwOTIXAYnLowmdSG0Ng7bS5Xz3k34z+dxN1J/gHpenIUYVpVfFSYRgpiBZ BQB8B65f5WeX8yZ1njfQXl1PqZm7e58AYWRDHkQA5H/5XvB0eKN5NuWPr+VOAa6XA1Xf kUZnA1xxxHdpsm0HoPO7l7kVinmjAn0Q3WIZ5EfhldtZqI+XsO8anZhhEdqW73bXIqK6 tYSHKeeKTjgStS8YhkE8PaRGgyHPAAD7/sgAQ3TrS+1NNaOOUw6X3QYLGOEPBsjr86BW VEDLuDmiqLIRBSnCYkUM4KnWeo27/JuPG8DGcatEeSua3lKwnFBhAMJqyPCpZsx6thUO DfUw== X-Gm-Message-State: AO0yUKWMueChqIJBbgj0u+LlS5ww7kM/5CQ96bsQDqkSK1+K1RiHCEUA sQwQdup91KPICS8PcUoR26Iu4nUEoO8= X-Google-Smtp-Source: AK7set8uPDcbvle2xiXNDQ1TbFeBZlmpL7r2uUyucIn52DSXIFQckL3tCLQSdqrhjoQy+ZIwrJE6WA== X-Received: by 2002:a1c:6a08:0:b0:3ea:ed4d:38eb with SMTP id f8-20020a1c6a08000000b003eaed4d38ebmr869636wmc.24.1679355774582; Mon, 20 Mar 2023 16:42:54 -0700 (PDT) Received: from lucifer.home (host86-146-209-214.range86-146.btcentralplus.com. [86.146.209.214]) by smtp.googlemail.com with ESMTPSA id u1-20020a05600c440100b003e209186c07sm17504541wmn.19.2023.03.20.16.42.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 20 Mar 2023 16:42:52 -0700 (PDT) From: Lorenzo Stoakes To: linux-mm@kvack.org, linux-kernel@vger.kernel.org, linux-fsdevel@vger.kernel.org, Andrew Morton Cc: Baoquan He , Uladzislau Rezki , Matthew Wilcox , David Hildenbrand , Liu Shixin , Jiri Olsa , Jens Axboe , Alexander Viro , Lorenzo Stoakes Subject: [PATCH v3 0/4] convert read_kcore(), vread() to use iterators Date: Mon, 20 Mar 2023 23:42:41 +0000 Message-Id: X-Mailer: git-send-email 2.39.2 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Rspam-User: X-Rspamd-Server: rspam04 X-Rspamd-Queue-Id: F0B1C1C0005 X-Stat-Signature: whwnogm9s71u7k4sws99bijmh5769h1t X-HE-Tag: 1679355776-282483 X-HE-Meta: U2FsdGVkX1+NzCeybHMgTuep73bIpLlGhr5ilANxDunpZucZEgmw8pAeL2BnW6vGG8jfyPIdKcK9ZL7ltB5cOpupxBQw/xkXqrOx2KxrN/bAQx8nAV9IEmX3pETRbowibTIsI3Ai4X1gHnY1Mg2N4G+b8BGEIfwe55FoFbLqpii6YxNqWFinOJrvzwBAtHJ8tQWkXkbOyRM0NZETQ6zpQ1fHVBEk0FPKX5TWPoeDbwdWidXHZc/2jb6rwjruTXTJiyePH/oAA4IQTUu5u7lDaMOVvt8iIFycm4EUn37jl/C5lzmQKuFlvJ5kj2MwtkHhg3Xmj1O0Fn1zlEJ53StaFaH3V5MyrKN6GwA2RuapQIBM3dzytLkOpmi5R3Qfiy34pdIwOqwRI40IQ8kqvABkmLOHoSkpYNw5pe/qC1glITGNR0fadsikxiAuE/9ZXeYVUUnfXxx1D+fUlXI7tgwiJxgsv/7WEBZ+tgTwbVQ5y8o8KW/kwKIVl/qviodeavGCdjuEZt+CTWsJk+wbF+1YkuGyS5YomABz0PXxmygPA8AVJZZMnVmX6M4FyX1ZEwLmGmG+/TVfjZOUXH/zSciveArkcbjfz2xIff6pyJE301EWQPOyhDeJeKB5VS25BLvEP68gzRuzso5wR//EXIamefr6YLhfHBh8ax4wvAtomCwG2v+sgAgtUnlMRZTSnYGjtQ8wHpAQEdv2unv9ItZ1/3nVXJuIjPF+XVFWqYyS6b8NuoDK1K1YdiWZVwKq+I9hzOYAdi/mRdz53G79r1GOQdDPfxXJ4q4yJMjk6IUpiU0C3YoRoACpW0Ss0zBKNn3pqvXIli8ovVkbXAZoSXLF+4U0zjJHEytqt9ZPe1fNTB7hxXbpDZFnjmvvVx2GkuGqljpJA+A54E/0DWhnVQuP1/lR7kqfMZHC2OED065vnY4pzfhiO+RxLw5pB32F9uaMbV/ULFN+DEQ/pJehObP LRCSUJ23 mnzhzseVQtylhZMGE8Ha7Dzxz4muLVOorcbdkLL1VgJ6W0SEd5G/fNsR9VH3AfAdJIyO96qp5T5GAO+oObvjdFLI74U94uC01P9BnDinzkRuACowlIWUUp1Yh9T/u287IjEXpiIE9lenQNxSZaitir7xmcbzQ07lPrmBXb+a7oqgkmOFnfb3BVl+8FL7yB84myt4V2QQMNZFeoFA5H+R5hJDEXRHIIsX36rcstb9yXeIz7cOTyXoLZJji0vhqy95PFxm8U7e3kx4BVejj4OuyMU6z/U/SqiENTkg0YO4B5jGK+tKvOLPmIIxqrkvZZ291Gl2B/Pm+YZdnrW0CjLhxRdvOeSEFI3enoUQzE0TTzMHzQtbqfJDpPsJ5FbLpw295bibBL4wgbl3458Sk3GVgnkoGTIX3heSEVWighKTKahUXiwhhcZNAKl/OarbbzLAwOKQ8uUg6hNxPOcixFeofaDVjjSo8SVFl2/hAN/mtR7rm9QX8GXXs+4RmcLsalOnv+bVbAGSsJucixFAIqTxa1qlXlmOGzy7Wqh9rI2TXSxDRiYBtfaZe/A/2j33HZcaaPsO82xcl6e5luVFzsnw1OXod4f2I30aRznd6iMnGHsD092q4Zc7WDIYMDDcub53V9yRxEaKnUJRoioP7u8eI1Fh36Lf9dkrrv4cm X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: While reviewing Baoquan's recent changes to permit vread() access to vm_map_ram regions of vmalloc allocations, Willy pointed out [1] that it would be nice to refactor vread() as a whole, since its only user is read_kcore() and the existing form of vread() necessitates the use of a bounce buffer. This patch series does exactly that, as well as adjusting how we read the kernel text section to avoid the use of a bounce buffer in this case as well. This has been tested against the test case which motivated Baoquan's changes in the first place [2] which continues to function correctly, as do the vmalloc self tests. [1] https://lore.kernel.org/all/Y8WfDSRkc%2FOHP3oD@casper.infradead.org/ [2] https://lore.kernel.org/all/87ilk6gos2.fsf@oracle.com/T/#u v3: - Revert introduction of mutex/rwsem in vmalloc - Introduce copy_page_to_iter_atomic() iovec function - Update vread_iter() and descendent functions to use only this - Fault in user pages before calling vread_iter() - Use const char* in vread_iter() and descendent functions - Updated commit messages based on feedback - Extend vread functions to always check how many bytes we could copy. If at any stage we are unable to copy/zero, abort and return the number of bytes we did copy. v2: - Fix ordering of vread_iter() parameters - Fix nommu vread() -> vread_iter() https://lore.kernel.org/all/cover.1679209395.git.lstoakes@gmail.com/ v1: https://lore.kernel.org/all/cover.1679183626.git.lstoakes@gmail.com/ Lorenzo Stoakes (4): fs/proc/kcore: Avoid bounce buffer for ktext data fs/proc/kcore: convert read_kcore() to read_kcore_iter() iov_iter: add copy_page_to_iter_atomic() mm: vmalloc: convert vread() to vread_iter() fs/proc/kcore.c | 89 ++++++--------- include/linux/uio.h | 2 + include/linux/vmalloc.h | 3 +- lib/iov_iter.c | 28 +++++ mm/nommu.c | 10 +- mm/vmalloc.c | 234 +++++++++++++++++++++++++--------------- 6 files changed, 218 insertions(+), 148 deletions(-) -- 2.39.2