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 EAF96C7EE25 for ; Tue, 16 May 2023 18:37:31 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 7DF53900005; Tue, 16 May 2023 14:37:31 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 78EEB900002; Tue, 16 May 2023 14:37:31 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 656F5900005; Tue, 16 May 2023 14:37:31 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0016.hostedemail.com [216.40.44.16]) by kanga.kvack.org (Postfix) with ESMTP id 56130900002 for ; Tue, 16 May 2023 14:37:31 -0400 (EDT) Received: from smtpin21.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay01.hostedemail.com (Postfix) with ESMTP id 24CB31C710D for ; Tue, 16 May 2023 18:37:31 +0000 (UTC) X-FDA: 80796976302.21.A071E31 Received: from mail-wr1-f44.google.com (mail-wr1-f44.google.com [209.85.221.44]) by imf16.hostedemail.com (Postfix) with ESMTP id 65616180013 for ; Tue, 16 May 2023 18:37:27 +0000 (UTC) Authentication-Results: imf16.hostedemail.com; dkim=pass header.d=gmail.com header.s=20221208 header.b=ByOFPTS8; spf=pass (imf16.hostedemail.com: domain of lstoakes@gmail.com designates 209.85.221.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=1684262247; 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-type:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=yaslgZEeUfyG0dbWvN9RhS0f93vIcfVbTpmBHRl31SQ=; b=BVLvOOE2wkmS/ObxyTt+Gtb+YEz0p3GwPcnmTMxIvGMoOh/2A+jJnGxAQg87SIQ24tiXhA gNWC3G4r/p+c1ZCZyc9A+H94AxnUEMp+/vSctHLhIz1xZ3y8k8LwSv8j0vH1RWymPF14P2 DiRad6oavkPi3Q9RarhlbPhYJywZhw0= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1684262247; a=rsa-sha256; cv=none; b=WJJeeJDrITAi7Gq80eJFpUdL/qDW1e+eDJNSlO0amI32EHcx7HNS1IAAfgTuOk3sSjQ0DR N0v9AVxnDeyesQ/afRRWlGwrOw71SuWKYExzgRq108YRz4n8PlbohqpWhkx4vVULOhvDss 1zFDVvVw4p7tXVNym2+FIP4zDt89drI= ARC-Authentication-Results: i=1; imf16.hostedemail.com; dkim=pass header.d=gmail.com header.s=20221208 header.b=ByOFPTS8; spf=pass (imf16.hostedemail.com: domain of lstoakes@gmail.com designates 209.85.221.44 as permitted sender) smtp.mailfrom=lstoakes@gmail.com; dmarc=pass (policy=none) header.from=gmail.com Received: by mail-wr1-f44.google.com with SMTP id ffacd0b85a97d-3093a6311dcso658733f8f.1 for ; Tue, 16 May 2023 11:37:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1684262246; x=1686854246; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=yaslgZEeUfyG0dbWvN9RhS0f93vIcfVbTpmBHRl31SQ=; b=ByOFPTS8wX1VocazZm5K+Z/cV+JAF1+/AEe+abUpe++GbuDmB2pEMIzzMc0Yrg+AFo t1/2xGnROfijw9CNIHJfrhJA18laHF/O37aX7TWS9v+ye8bw/8ieT5MZvJk47O1k0LmC xH609mx8Ukcznx13GNlVzb/lPR1B4vT6iO2oGCLO0KwZIPwOfdIgV9f7Zx75dp/vMUiU 6Hw7fZokzaskSvKzuW4yn9td7ihuacbj74EfwAguGShiogskn6VrXoSU3Zelpiodam6z xOV/YzPM4V5atP0720m3Ct7bzaJ/CcfJqKIhq5QoFK0DuXoaX9z60S2NujzYokH04xie IKgQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1684262246; x=1686854246; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=yaslgZEeUfyG0dbWvN9RhS0f93vIcfVbTpmBHRl31SQ=; b=Rr8h3azD+Gnm0mEuh9KXyDfSMQXvT5LOIjCGciYZuhHKloYkz2wGY9nlmbUUGdsP3I MBYFVmcHLarxNzVUsEPdC9nx3zIrNPs/S2mS2QUz+ow/uNx/aLV++Aoekso6vmcJreUb DSbMdKm4nXmYAHNsdH/TsMomLq0Ko79vg5VjwwJJDoArUfNiGT+Y4M4Tnh5busbke9jZ hZGFTH1sp97ol14ND0HpdUqj9y0YKXjYAljhmeBdz/0xL0tOFzg/qjf0PxnAo/jZgVRl n3vtUATwo/pcVuNURv/n7uB3HOtN4IVR1ObReRxv7QnLI3ML0o+egTjwGv2HTQ6OJHKb HxlQ== X-Gm-Message-State: AC+VfDzB0a9B38nfYRC2pvagC2Pn+wqcZlkGjttOq8uvCig+NqMvJEag zEfjRtN8krviNk848jKvMHs= X-Google-Smtp-Source: ACHHUZ5FbzA2y39DLkphw8Nq0JUTk+Jyh31cY6z+5LmeNOVBA5+4d41LJGOyvlXiibxy7NLJ7ZRP9A== X-Received: by 2002:a5d:4d44:0:b0:306:484e:e568 with SMTP id a4-20020a5d4d44000000b00306484ee568mr28717336wru.40.1684262245393; Tue, 16 May 2023 11:37:25 -0700 (PDT) Received: from localhost (host86-156-84-164.range86-156.btcentralplus.com. [86.156.84.164]) by smtp.gmail.com with ESMTPSA id x9-20020a5d6509000000b00304b5b2f5ffsm212309wru.53.2023.05.16.11.37.24 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 16 May 2023 11:37:24 -0700 (PDT) Date: Tue, 16 May 2023 19:37:23 +0100 From: Lorenzo Stoakes To: Anders Roxell Cc: linux-mm@kvack.org, linux-kernel@vger.kernel.org, Andrew Morton , Matthew Wilcox , David Hildenbrand , linux-arm-kernel@lists.infradead.org, kvm@vger.kernel.org, linux-s390@vger.kernel.org, linux-fsdevel@vger.kernel.org, linux-perf-users@vger.kernel.org, linux-security-module@vger.kernel.org, Catalin Marinas , Will Deacon , Christian Borntraeger , Janosch Frank , Claudio Imbrenda , Heiko Carstens , Vasily Gorbik , Alexander Gordeev , Sven Schnelle , Eric Biederman , Kees Cook , Alexander Viro , Christian Brauner , Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Mark Rutland , Alexander Shishkin , Jiri Olsa , Namhyung Kim , Ian Rogers , Adrian Hunter , Kentaro Takeda , Tetsuo Handa , Paul Moore , James Morris , "Serge E . Hallyn" , Paolo Bonzini , Jens Axboe , Pavel Begunkov , Jason Gunthorpe , John Hubbard Subject: Re: [PATCH v5 3/6] mm/gup: remove vmas parameter from get_user_pages_remote() Message-ID: <0db8b45d-8f7d-46bc-8739-c167c086bcfc@lucifer.local> References: <20230516094919.GA411@mutt> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20230516094919.GA411@mutt> X-Stat-Signature: w3p7rg8z8iqn8es1131sfn1s6jro17mp X-Rspamd-Server: rspam03 X-Rspam-User: X-Rspamd-Queue-Id: 65616180013 X-HE-Tag: 1684262247-909530 X-HE-Meta: U2FsdGVkX18E7Ff3+cmbADnZYvLWRA/QMtExVBClfisX4RJL0/gTirSbI3NjfZktGQlOYo3Dl2BUti+UAD4pn8oo0C46E3y64GVjuf2bQK0qhh/VPacjxGNxBiN1hkR40Abb08HMdmDakehk8U9tABiLVTLi38GNmrY0nCZT4Nozecu1xlPyuqpisbVBVy+MSmAjna5cFYyt8W9Lt1pXbpDDuQ7DnCHPvEUOszdERwCcpkoF20LkhaYqxAARdOGSNFIrp/PjyxJ65KZIefZFNNb+3rRhVkGoML2G2pDA3MzbKjjBxsAN3HxZks/NTo+6nDYNm4DfpmejGHzbnOHMvcsx9GH1fiyiDaxpucj0/6Wb/IWrMJium7MsCCEqn3tNXnH6a80LTpQpzZ/opoJWPHgHqIyyZwWBUUh6R9zlNcZT84qG7hSzsGecZnpPnuGPosQbcNa/fMvxfFjzEf8O1BUuEeOhSu9ZrHfzQ/rT3vAEp4w/UKxVaUHQYHeDJU1I6Sh4N0rTrN4tvGreojnCSy4+J4XiWDovNIgxwD3QBp36AEPKAGBSORxcWKnBCp2rSTeW/5HjtNLiU1Lj5AnKueqEWdcAMYvIJRbgF/LaAoLctK7sLm2YbT0QK2f/QP7d7F4WkNYouUQuWawIYA6lm0rdzrVTzLqe2tJry8ECgv6KG1JRDyTTG3wkv+iabRt6kEJ5iMFnimKZpFEb04s5ET+zaaP8nPVuFTpR1NY04z30XN86+HtMOBDWCaty4GqSSaJNkfSItiqIfTA8E/6NZgqRRQ/DU2I9xuiJ93hDF4z2P9pOkREHo67/fUrMxWUKf/IGJoW6Myi/jwRg0olouAATQ+EHnNoHD1OgTaJ/7L7DeXwKsipNavjuD5McI872wftz5Scffg1yVqRtiYvjCp7jnp1p4EEqvMn3jHdeqbzH/0OIa+SIKIc0nT9FOxyqFfnuXQy+fs4TGxjo7ki QA6ieZUK p2Qoq0vUkpJ9QERCcYIkoxdh7nZy/uWFaTlFO5X3Ljo+HDVnT0PuyI/jHtP8KW8MRSsaU0/CAQl69O/wgTdvIvjwTRqr6Lrcv/kDK1NecMhkmKUCpaqlos9uHPedK9ZZq5z5GcHYEH19kkm82wrcrtbPSoZRk2nklSbgd26OJW/Wn2XZ7/am8Cyfr0yA0ogLcMKhxCPTi6eA7prdOFc+dmntwMp0ExOnKNxxB2YwNrudmc2Y7iEdud3wejjWZs8A+SoGqc9Hb6B8QrnDS1SeCJmHoNYFioPdsu8HCR2TJBHvnfO8A6lQHLjq2zv21+fQdSW9TRESFt0wC+vP3+g0A+wj7xxxk48H0ZhHXTLYfljATWNukw5KkbAby8oOEBlpD/DMShuotUjsyFdv/ynhRY6it5RcA14fxrmABnHNCqZtvdjcneH71aUotS0MVcXGBQAPFOONud3z0T9GPpy+Sdof9OBcgOrnb0bLF9xFPdXNolyOa6PClpBL5AgyL0o7v77xynpaWEwUHKjpV5efkhM6RscUcanlzz85xHbtKOZR7RIl6CYUCjhI9rxJHz7G/bRGst2w2OqD/npUB4XzM9lcbrX9ZyaHKu1fmeBU4ZWgS+hcSeMVro4pfEqb7iz86xQPM3w7nfozT9w8= 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: On Tue, May 16, 2023 at 11:49:19AM +0200, Anders Roxell wrote: > On 2023-05-14 22:26, Lorenzo Stoakes wrote: > > The only instances of get_user_pages_remote() invocations which used the > > vmas parameter were for a single page which can instead simply look up the > > VMA directly. In particular:- > > > > - __update_ref_ctr() looked up the VMA but did nothing with it so we simply > > remove it. > > > > - __access_remote_vm() was already using vma_lookup() when the original > > lookup failed so by doing the lookup directly this also de-duplicates the > > code. > > > > We are able to perform these VMA operations as we already hold the > > mmap_lock in order to be able to call get_user_pages_remote(). > > > > As part of this work we add get_user_page_vma_remote() which abstracts the > > VMA lookup, error handling and decrementing the page reference count should > > the VMA lookup fail. > > > > This forms part of a broader set of patches intended to eliminate the vmas > > parameter altogether. > > > > Reviewed-by: Catalin Marinas (for arm64) > > Acked-by: David Hildenbrand > > Reviewed-by: Janosch Frank (for s390) > > Signed-off-by: Lorenzo Stoakes > > --- > > arch/arm64/kernel/mte.c | 17 +++++++++-------- > > arch/s390/kvm/interrupt.c | 2 +- > > fs/exec.c | 2 +- > > include/linux/mm.h | 34 +++++++++++++++++++++++++++++++--- > > kernel/events/uprobes.c | 13 +++++-------- > > mm/gup.c | 12 ++++-------- > > mm/memory.c | 14 +++++++------- > > mm/rmap.c | 2 +- > > security/tomoyo/domain.c | 2 +- > > virt/kvm/async_pf.c | 3 +-- > > 10 files changed, 61 insertions(+), 40 deletions(-) > > > > [...] > > > diff --git a/mm/memory.c b/mm/memory.c > > index 146bb94764f8..63632a5eafc1 100644 > > --- a/mm/memory.c > > +++ b/mm/memory.c > > @@ -5590,7 +5590,6 @@ EXPORT_SYMBOL_GPL(generic_access_phys); > > int __access_remote_vm(struct mm_struct *mm, unsigned long addr, void *buf, > > int len, unsigned int gup_flags) > > { > > - struct vm_area_struct *vma; > > void *old_buf = buf; > > int write = gup_flags & FOLL_WRITE; > > > > @@ -5599,13 +5598,15 @@ int __access_remote_vm(struct mm_struct *mm, unsigned long addr, void *buf, > > > > /* ignore errors, just check how much was successfully transferred */ > > while (len) { > > - int bytes, ret, offset; > > + int bytes, offset; > > void *maddr; > > - struct page *page = NULL; > > + struct vm_area_struct *vma; > > + struct page *page = get_user_page_vma_remote(mm, addr, > > + gup_flags, &vma); > > + > > + if (IS_ERR_OR_NULL(page)) { > > + int ret = 0; > > I see the warning below when building without CONFIG_HAVE_IOREMAP_PROT set. > > make --silent --keep-going --jobs=32 \ > O=/home/anders/.cache/tuxmake/builds/1244/build ARCH=arm \ > CROSS_COMPILE=arm-linux-gnueabihf- /home/anders/src/kernel/next/mm/memory.c: In function '__access_remote_vm': > /home/anders/src/kernel/next/mm/memory.c:5608:29: warning: unused variable 'ret' [-Wunused-variable] > 5608 | int ret = 0; > | ^~~ > Ah damn, nice spot thanks! > > > > > - ret = get_user_pages_remote(mm, addr, 1, > > - gup_flags, &page, &vma, NULL); > > - if (ret <= 0) { > > #ifndef CONFIG_HAVE_IOREMAP_PROT > > break; > > #else > > @@ -5613,7 +5614,6 @@ int __access_remote_vm(struct mm_struct *mm, unsigned long addr, void *buf, > > * Check if this is a VM_IO | VM_PFNMAP VMA, which > > * we can access using slightly different code. > > */ > > - vma = vma_lookup(mm, addr); > > if (!vma) > > break; > > if (vma->vm_ops && vma->vm_ops->access) > > Cheers, > Anders I enclose a -fix patch for this below:- ----8<---- >From 6a4bb033a1ec60920e4945e7e063443f91489d06 Mon Sep 17 00:00:00 2001 From: Lorenzo Stoakes Date: Tue, 16 May 2023 19:16:22 +0100 Subject: [PATCH] mm/gup: remove vmas parameter from get_user_pages_remote() Fix unused variable warning as reported by Anders Roxell. Signed-off-by: Lorenzo Stoakes --- mm/memory.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mm/memory.c b/mm/memory.c index 63632a5eafc1..b1b25e61294a 100644 --- a/mm/memory.c +++ b/mm/memory.c @@ -5605,11 +5605,11 @@ int __access_remote_vm(struct mm_struct *mm, unsigned long addr, void *buf, gup_flags, &vma); if (IS_ERR_OR_NULL(page)) { - int ret = 0; - #ifndef CONFIG_HAVE_IOREMAP_PROT break; #else + int ret = 0; + /* * Check if this is a VM_IO | VM_PFNMAP VMA, which * we can access using slightly different code. -- 2.40.1