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 7601BC6FD1D for ; Tue, 21 Mar 2023 20:54:42 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id E56156B0074; Tue, 21 Mar 2023 16:54:41 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id DDE386B0078; Tue, 21 Mar 2023 16:54:41 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id C808B6B007B; Tue, 21 Mar 2023 16:54:41 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0015.hostedemail.com [216.40.44.15]) by kanga.kvack.org (Postfix) with ESMTP id B0D936B0074 for ; Tue, 21 Mar 2023 16:54:41 -0400 (EDT) Received: from smtpin01.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay02.hostedemail.com (Postfix) with ESMTP id 76B6612022C for ; Tue, 21 Mar 2023 20:54:41 +0000 (UTC) X-FDA: 80594109162.01.D170E07 Received: from mail-wr1-f41.google.com (mail-wr1-f41.google.com [209.85.221.41]) by imf26.hostedemail.com (Postfix) with ESMTP id A200F14001E for ; Tue, 21 Mar 2023 20:54:39 +0000 (UTC) Authentication-Results: imf26.hostedemail.com; dkim=pass header.d=gmail.com header.s=20210112 header.b=lKekWqTE; spf=pass (imf26.hostedemail.com: domain of lstoakes@gmail.com designates 209.85.221.41 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=1679432079; 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=36n+db1kX7z8fa60FDrINMxCjVwayNeaAfJ4998fhB0=; b=MaiQ8yVU4yBGrYRlkfhc8bAfCOaNxTGs4EDlcjVhpAtmbfnNCp1LQsSUWwfvdLxKfy8uVI qS1IotU4Oo34vc8c7J//ZUq5LixWEPIRVMk724kOxaVYw67XTXM0TKF81WUFrN6jgyQUOx W5nmNyB39qewj15BivWzYGCvz8bTw14= ARC-Authentication-Results: i=1; imf26.hostedemail.com; dkim=pass header.d=gmail.com header.s=20210112 header.b=lKekWqTE; spf=pass (imf26.hostedemail.com: domain of lstoakes@gmail.com designates 209.85.221.41 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=1679432079; a=rsa-sha256; cv=none; b=VVcl2iW3JNAFJqVPMTXiPusw4pFpJCV8N0N8MP1O8L1aO9EAFvDRGx2ZQ2+4KRAlLtUmbf /jqT8WCGwJ5qQL+4O/XGLJA7IiiT0qHHFiMPbtHs2VwgB29FKOs8sKTJLzasqrtiZJPrtL uc95Sbl6NCB3UHnTlMydVjbV55mqqfs= Received: by mail-wr1-f41.google.com with SMTP id v1so8948208wrv.1 for ; Tue, 21 Mar 2023 13:54:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; t=1679432078; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=36n+db1kX7z8fa60FDrINMxCjVwayNeaAfJ4998fhB0=; b=lKekWqTEnnL9WUbfLF6H6trNCIZVnKpoynvj8BOFaOFif9U+k8BNOn32nJAcmuAw0H mpipoVpLX16cSa4bmq8xfUuoVbuv3RzPUTkQPtGrVfif9+nnspnDj8dZoVItgxXN+rLs 9W7acderdn4iMA6Dp4izlt8belJXPdrexPiHxUlWVYL+ecJe5625kcdoMeFgNtZlNrXs 0yTi0d50npI72KPQAIwKaCBCgC0mwbr16XYFIa6Da2FD66g/gC34amQHguPdkz4zieUu Uvdu4ZNAGAqTC+FJpZoPi7bt/evaoYATfdP/cpobMwwA0vjT35vIWSKi4p641rmvEp+i /G3A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1679432078; 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=36n+db1kX7z8fa60FDrINMxCjVwayNeaAfJ4998fhB0=; b=s/ffrcAqb+agilVMJoREWoFxVnnrrJS1FXkfacRaJH/z4GFIc8sTpgVnLWR/290sSj wv6TE+PmT2t2g0RmgdjWBj+f3oAKEQW03fGWKnCqWCSOUdGwymiTEMyWki+wbGzyERUX 6sMYE7UyXIcjAP3v0PnAnKU9JMsNeY87A/ExEfECk09thoVSCDTm51VueisuRdWc4WNw AbDOYXDQlgjQXM6TKUIkNtxhQ6d0919oplBcQkGoEyCq2LII5Pz664V13WCDAY1uscXc Yd3d1Bz25f0nSjLr4U6jjdubhSPAHCv+QeBLjUzKxgQ/wXUUsB1YEmP3BUZM+XWd3MMS F1tQ== X-Gm-Message-State: AO0yUKUpDforo2LVL1dAcgGx329EB/DeQ6TKNpz91nJOESPAUHEBRu5O OJH3LTLjQa/c1wIJy4U+6x3zYNEDPQw= X-Google-Smtp-Source: AK7set/Sxj5SUVNX9MbVtbcFGvxNSLhcd0e+8lJ/DDA0/rA2xAijgYqmzqynBDmqpErowI5PCT3qmw== X-Received: by 2002:adf:d4c5:0:b0:2cf:f3ea:533e with SMTP id w5-20020adfd4c5000000b002cff3ea533emr3778783wrk.63.1679432077719; Tue, 21 Mar 2023 13:54:37 -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 a8-20020a056000100800b002d8566128e5sm3744575wrx.25.2023.03.21.13.54.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 21 Mar 2023 13:54:36 -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 v4 0/4] convert read_kcore(), vread() to use iterators Date: Tue, 21 Mar 2023 20:54:29 +0000 Message-Id: X-Mailer: git-send-email 2.39.2 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Rspamd-Server: rspam07 X-Rspamd-Queue-Id: A200F14001E X-Rspam-User: X-Stat-Signature: 68frz5cb6h9a99ohahgwazwbubc1ax3b X-HE-Tag: 1679432079-453368 X-HE-Meta: U2FsdGVkX18mV/hcmWMHqYpIvqv4caOwdeFCBb+3UX3lR+u1F77y3MhKdiSTV3hlRkkFXrzUNR/UFmDfbHjPVrlXoDcsfT1cweyJ4755YJ06yIMf2ppHAPqpTT2Ee6f3OFv31CvRSX3gXJM9BHYjPKLnpRJVtrg4ouqBH6dNxo0MLwwJ1PygGPyrttfuT0hAU14iH+5Q+CBRjauc3QNhqevmvZeA3LcMM7ayoJwZnbGRRKY9kO4OpKZSUvxBfmBLEnCUsj3IDeTCW9zD+8j+4BEdmXbuL4cB1PNgwH8GoijMJZrmfgElycTdej7UkJBDlSX5RGYU6CgDhGItRBiD3SldvQn7iGFtZr6mvwTWU8P2iZij/r/FWH1RsENymWSVKZyITQyzg20g5YzPLpD0kGYfYE/L9E1oXfPoFOhl/2IAkYk85b/rmIcPseBd2TnaSeD7kUQvpYqbHKdSuPmsLODd5PoKNN2ZP+7cXSlUVBg1u63qIgetYKAdRvypwvoq/mHgzUoU7Zm2G2JRPGR8zuvkFymlonW+6hKFQPXpY4yN/XQba/7Xs1OTceM5qlgQr0N6s5TqPkJdf7iZ4LL/oGqnYcOVOvxR/o7iMgGLerdeYjjeRO13lDUVljP5CwWd7uuoGIPte6EdmGyv1Al8FWeEvid2ZFs2dEMf6MxYxATBvORh647MEzFk+nRnaq21aaRthyxy6QCtjRuCs5r4IIdIv2fAegW/SyK58yfa+rEoKil10AtPD8TgeSZVyZX1Ee+IOR9n8+2q00AzcIH5S+PIlgjorY4ev2ptpuBUIQZjNiYMB8BdCE6v3JiCebNi0iocOEE1cyfYpWqDuesJaxVCGLKvujE6pl8lpybkKLl+K5C+hkAOhA3x2CZfDp2RYM+h85MVODRaYphWjdocRO3dunbRRxIK9XEqc9X5wDzjEqi4VLpnKiL54X2dEkQxJzuXgprSY2MW8rbi/dk vMS7E2+7 HQiZRCfh+PqH5KpotCbNjha4nhpEoMgKnwsEQCb6xDTRtU0fUiZsNCbTh1KRJYZV4ZUMbej2T617HirDZWYrr5+4EL4uxib6pToA2tWyBXYUT25YVyYURYBe2F2SCf9vDJpfLQ3uI4lHcAo1LGdiAJqRCs6Q3lLzJEADOZBAW90ggZxjPTHAmoS5/pXa2IZB2Z+3ZNHTA4+UYfR+O//RHCP45iqBs+kvmp2lV0YQwLUQ85Aon1FmJPKPes6qGTLMSnyY01pGmp7HSI2IxNdDqk9nLQ/ctrnMemmBU09r/6SfY4o4HQdv+29NJsnF/9lCZtBn5S94SLCMQ91RkSHimZ+38WdcnabFCdWIdtupUDQcS7uSpJodd7cwzhY1VYayeKu13gYdLPPmehTYDRIz6YBjf1Df1BGalywTdBo5UyABlbg8Y9EQY4buv4W9AU/JR3nJ02uRCLoLf0NjzR9ArIzvxXmW27MtIy5tr7fLkcjPxjIT6RsY3b6OMOhxHrghcKoppxo9ObPO+gsrCUJimkbB/17A+cTrnTuI20uCtcF2y4y1Lz4JZfZgIKYv22LJIG9ker6+xmlkwkdDj0oZcINv+0bmMl4YaMmCSyTX7uPhSG4fPWEuLi6z/x81Ewq+inydj3Nqtr9lbcFAFUJl1+DdFkLUykr37EFgp 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 v4: - Fixup mistake in email client which orphaned patch emails from the cover letter. 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. https://lore.kernel.org/all/cover.1679354384.git.lstoakes@gmail.com/ 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