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 6BC4EC77B78 for ; Wed, 19 Apr 2023 08:40:19 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id E48E8900002; Wed, 19 Apr 2023 04:40:18 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id DF6AF8E0001; Wed, 19 Apr 2023 04:40:18 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id C6FD1900002; Wed, 19 Apr 2023 04:40:18 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0013.hostedemail.com [216.40.44.13]) by kanga.kvack.org (Postfix) with ESMTP id B61BD8E0001 for ; Wed, 19 Apr 2023 04:40:18 -0400 (EDT) Received: from smtpin14.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay08.hostedemail.com (Postfix) with ESMTP id 704581401A2 for ; Wed, 19 Apr 2023 08:40:18 +0000 (UTC) X-FDA: 80697493716.14.49F7562 Received: from mail-ej1-f46.google.com (mail-ej1-f46.google.com [209.85.218.46]) by imf20.hostedemail.com (Postfix) with ESMTP id 532341C0012 for ; Wed, 19 Apr 2023 08:40:15 +0000 (UTC) Authentication-Results: imf20.hostedemail.com; dkim=pass header.d=gmail.com header.s=20221208 header.b=DxJtLunx; spf=pass (imf20.hostedemail.com: domain of ckoenig.leichtzumerken@gmail.com designates 209.85.218.46 as permitted sender) smtp.mailfrom=ckoenig.leichtzumerken@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1681893615; a=rsa-sha256; cv=none; b=mBCgH/ciAtJRNikovCg2pd2EY7sQ7zVQ0vsFQSU/Nlxmr0ufUh4KlhmgeNi6XpHyCXTBoV H4rpzkxTbYulqMY9+IebD51F8itebclhT1yEEEekvQxLrmoWd7saSi0JmQnDLRplXXaGvx gaawQx8xudjbH4h/Pu6WtJM9Dc/A0Bo= ARC-Authentication-Results: i=1; imf20.hostedemail.com; dkim=pass header.d=gmail.com header.s=20221208 header.b=DxJtLunx; spf=pass (imf20.hostedemail.com: domain of ckoenig.leichtzumerken@gmail.com designates 209.85.218.46 as permitted sender) smtp.mailfrom=ckoenig.leichtzumerken@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=1681893615; 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:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=11sl8AqwZce1ertKq6Ztt8iuR+fB42Oex6pJ+U7xw2I=; b=W0Lt1ZxcI6qbyH73Zm+HjDGae3WH2C5gMGA6u8XoC/JxspePp9IFw9C3lOmw+cjHernAgJ zxZD9Z4NHTreMa+hptvWbfzqcmURZUXBEclhpWdNiUrsPaG6z+Ikn5mgsq6FETG7h/ce1i j8WKU8fG8pHWsgZb4ohVJKIZc4Ymcsg= Received: by mail-ej1-f46.google.com with SMTP id fw30so26825130ejc.5 for ; Wed, 19 Apr 2023 01:40:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1681893614; x=1684485614; h=content-transfer-encoding:in-reply-to:from:references:cc:to :content-language:subject:user-agent:mime-version:date:message-id :from:to:cc:subject:date:message-id:reply-to; bh=11sl8AqwZce1ertKq6Ztt8iuR+fB42Oex6pJ+U7xw2I=; b=DxJtLunx5h16pRRZ84LYqFPi6EJHNEhDJ/4M06dgxM2ur0kqsRc/6YtsMxfHQkzoDi ylakpROJRFG1jWkLkiLWH6m6zs8oZIVmbqf6QE9Rh/UhnpnDwyUZLPXmRvssJpYoZDq4 dA3oUTNV0tBOII15372NBzNp9bOvYkzlTfEGJZxIKEZikoq9gVKGcJkNHYO6vsl30gna Gw8nQ26WHKu+rcmyKVnUkkkfKQfl1+bOO1WVUamcinpol0p8Vo9pbY75wEeWdU0DqoDB dgYTurZ1swwpQk3ZMlRno2Rs8y2I93xbBQuelN2GGxgHUd1i/SzDDEWa3kQT/R19xDwt vpiQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1681893614; x=1684485614; h=content-transfer-encoding:in-reply-to:from:references:cc:to :content-language:subject:user-agent:mime-version:date:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=11sl8AqwZce1ertKq6Ztt8iuR+fB42Oex6pJ+U7xw2I=; b=GE41ZNR105K67DSFcto/qzjII5jnq3pTHFjFXnQCN1v56HcfgGtTsVc6m0MPjA0FQm bA8tFn8UBPm4Qxq1T20Vzr+GPO22QFv1UwrY5hdGWxmip7M2hyEMZYg+Nt8ovDnS4KBD ZSkDjXMD3JNzQLg6pJ8Nd/WYhdwT+zk0YOa+YLObnATGk9nF7iu7E9Z44S8Dqjevpr2c FGS+vWYKqbjv0DFPf9I7hJ9BSbwuzKbrdDT8rMQH2Xcw3IYoOeDED32CVW29jYorY9U2 wFtNFescnwxw59ZZzR5JYb3+K8i3wG3r0tepoKK4aR7UAzsmEeK91cefq/IF4XHQPUdO nK0w== X-Gm-Message-State: AAQBX9c8NrzatSIjYcjLJobT2A2SsyA5aHSI5J5xNJoM+3/oT3ktTWRC AWWOg71GVmHBGuIFBRRCK60= X-Google-Smtp-Source: AKy350aFo85fWHrw1usKNUqmGwHdN9xEddgt1lB/ijvfifKCIrYYuxvdWJI7HS4UtLXKs9qddbPlAw== X-Received: by 2002:a17:906:9153:b0:94e:6504:d134 with SMTP id y19-20020a170906915300b0094e6504d134mr13768717ejw.42.1681893613729; Wed, 19 Apr 2023 01:40:13 -0700 (PDT) Received: from ?IPV6:2a02:908:1256:79a0:6273:6c76:9697:9b4c? ([2a02:908:1256:79a0:6273:6c76:9697:9b4c]) by smtp.gmail.com with ESMTPSA id qm5-20020a170907674500b0094e3ddcf153sm8949825ejc.115.2023.04.19.01.40.12 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Wed, 19 Apr 2023 01:40:13 -0700 (PDT) Message-ID: <6703b9b2-539f-9a1b-82b8-244328472640@gmail.com> Date: Wed, 19 Apr 2023 10:40:12 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.10.0 Subject: Re: [PATCH v4 1/6] mm/gup: remove unused vmas parameter from get_user_pages() Content-Language: en-US To: Lorenzo Stoakes , linux-mm@kvack.org, linux-kernel@vger.kernel.org, Andrew Morton Cc: Dimitri Sivanich , Matthew Wilcox , Arnd Bergmann , kvm@vger.kernel.org, David Hildenbrand , Xinhui Pan , x86@kernel.org, Greg Kroah-Hartman , dri-devel@lists.freedesktop.org, Jason Gunthorpe , Jarkko Sakkinen , Ingo Molnar , Borislav Petkov , amd-gfx@lists.freedesktop.org, Daniel Vetter , "H . Peter Anvin" , Paolo Bonzini , Thomas Gleixner , David Airlie , linux-sgx@vger.kernel.org References: From: =?UTF-8?Q?Christian_K=c3=b6nig?= In-Reply-To: Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit X-Rspam-User: X-Rspamd-Queue-Id: 532341C0012 X-Rspamd-Server: rspam01 X-Stat-Signature: rsa6w9ahwqefs15mxiogncrpst7c3bg9 X-HE-Tag: 1681893615-272152 X-HE-Meta: U2FsdGVkX1/017Lud28P9S+bFYCalXLKprgSL9gTLO6UNJocmmFlKgHbLItPgkMGTlj3/JSv+9Ygfi4LMyVq0UZPHD9Q/348rl2HqpoDJZkDE3WFqHXIa6kl926fJKPZyXJUlhobyu/YfBDeECQNNqYNtobAIENgCPfBdOmvq0uwBKuOGZXr5l1ubP92PILoJqGWVBM2TjWPtkAOEh15sG+MwSTmhPyK8/bgn9btvGe/dgLpVTlkkNR/Z2OB6XR0//R31HqrY1yEcKZ/R0CBNa+XXdPX+wCW6E52igZGTy4XqWTJblGEMYA64q+HHQQsyDjAAa/am/IjY/D1hXjU2lbzQbSpq+WSBODg8E2CFBWBp28vTrvaBKX6f3G2OmVSR5+g+AwT7oN+sFGoL73SlGtZYCNOAHyjL7l7MFR7tG+xprc9D77MhPZXAx37lPaOS7HAxOw77Z5AHtcQJ/pj2w+NXYuJuZNsJ/k8YximAGroC8tdTHSjvXVpzk5IxlC2BdNHJWJdgkYPwh3n/2PeIXSrXr/K6EgkOMVdImoyEWeTC3votbuL0dUALEvzVyd1L3f0O9lB+9dTbXg7SPRDykkZ/l0D5CPhInPC4Ox+dRZ3raF8OMrvg8wN3PFwBBTszqRSAMnT81V8VhtjIP/nujjNVBbZqBFzJzcTi58TZVmqIv8PBbe/Gse+Zpbs6dpK4UAuUleR1OQZQUIsPKftQ7XDU4sd60ou5Zbi7NZcVDG85aaKYTEMUpoIeqk5CepXjpD2OJzLhB3jarZ5t5jhGaXU/i/hE5SN6AoanHWLGGA2ToZmXK0CZ2ESfkaYHy3cJDFR0ev7XAvD0Z2xDyFmC31K7ZyTvS9NEEpFTCZjBulS5zGUyW8Pq9SQwOGc3Vqe/hwC+1sjxfdMNUCdNEHh2g6GH+rECamkj7dzTD7EBRp9P/Ku9rBgwGEZsXIZhd5hDTgLfmFpdLccYdx7+vH VQ1SoCgx dUFAa9+f5xH0NHaBb4VLj0C6TzVFBX0VDnF/kSibWgTAPX57bC7KN79ZFC/qwtQaC0jCtgzpdp98NNftr30Fz+xQZsKe8bpd2nG1Q0nk+GI/A0EnG4tFG8Cm4RwdTiQtxTbjgOMDfkLWGbVKQU+xP27tye+pi+a8GiJX7Mbun8wa9qCDPwvz+KF54MDZbks+3a/cebzss8n24rG6ULdqVs+g/a4MGkI0IifudhJHJffHwaz88p+pegS+wVpft2nXLHrQ83zTWH6b424hbftZyjEfzAJf/Ghnz+Z2xancAjF17Sd0iFfvXLzKAQ3Qq2C8lVZnIvEMZi5NbixSofbhvzb8A+iNW8dQx7NtQ6ev0Js7nx+1p4Ke1zx5u+tpNoT8+P/X7puMCxNsYL4JPq5xlCf3uhmvzDi5uo20+ISVH+M24GFF1X6/lcwynvRlzUesNW2PI6WhzBAo9RJ06pLtlMCJ3n9M9pTFG2wdFvOzO0ErZt9Oyp8rR3xHa9qcKPIJD0nArbgFds2tIUDqXEQz91K6kufVh4+x7VfqumsRanVYhgm4eJW/DNK09tVRDlO7ltmSN5UOh46s/SIQ0zxdrKIqkHbKt/0CkhUxecycS1FrWJ+pjyFaQgZdQv/qtzvrBrsKjQLxJ9cYhlrgrSX/U40agH4T4i0YR3QdXRnIC3wXAoxMdjl1VKCOLCnt/f+VE+ej+Gyc4mTbVhDp75Gug2F3fK6y1HR7oq5M/fpiCLWOGtBwIFSuY78mg7jydafI4rOUlX3qA3Jy/Ons= 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: Am 18.04.23 um 17:49 schrieb Lorenzo Stoakes: > No invocation of get_user_pages() uses the vmas parameter, so remove > it. > > The GUP API is confusing and caveated. Recent changes have done much to > improve that, however there is more we can do. Exporting vmas is a prime > target as the caller has to be extremely careful to preclude their use > after the mmap_lock has expired or otherwise be left with dangling > pointers. > > Removing the vmas parameter focuses the GUP functions upon their primary > purpose - pinning (and outputting) pages as well as performing the actions > implied by the input flags. > > This is part of a patch series aiming to remove the vmas parameter > altogether. Astonishing that there are so few users of the original get_user_pages() API left. > > Suggested-by: Matthew Wilcox (Oracle) > Acked-by: Greg Kroah-Hartman > Acked-by: David Hildenbrand > Reviewed-by: Jason Gunthorpe > Signed-off-by: Lorenzo Stoakes Acked-by: Christian König for the radeon parts. Regards, Christian. > --- > arch/x86/kernel/cpu/sgx/ioctl.c | 2 +- > drivers/gpu/drm/radeon/radeon_ttm.c | 2 +- > drivers/misc/sgi-gru/grufault.c | 2 +- > include/linux/mm.h | 3 +-- > mm/gup.c | 9 +++------ > mm/gup_test.c | 5 ++--- > virt/kvm/kvm_main.c | 2 +- > 7 files changed, 10 insertions(+), 15 deletions(-) > > diff --git a/arch/x86/kernel/cpu/sgx/ioctl.c b/arch/x86/kernel/cpu/sgx/ioctl.c > index 21ca0a831b70..5d390df21440 100644 > --- a/arch/x86/kernel/cpu/sgx/ioctl.c > +++ b/arch/x86/kernel/cpu/sgx/ioctl.c > @@ -214,7 +214,7 @@ static int __sgx_encl_add_page(struct sgx_encl *encl, > if (!(vma->vm_flags & VM_MAYEXEC)) > return -EACCES; > > - ret = get_user_pages(src, 1, 0, &src_page, NULL); > + ret = get_user_pages(src, 1, 0, &src_page); > if (ret < 1) > return -EFAULT; > > diff --git a/drivers/gpu/drm/radeon/radeon_ttm.c b/drivers/gpu/drm/radeon/radeon_ttm.c > index 1e8e287e113c..0597540f0dde 100644 > --- a/drivers/gpu/drm/radeon/radeon_ttm.c > +++ b/drivers/gpu/drm/radeon/radeon_ttm.c > @@ -362,7 +362,7 @@ static int radeon_ttm_tt_pin_userptr(struct ttm_device *bdev, struct ttm_tt *ttm > struct page **pages = ttm->pages + pinned; > > r = get_user_pages(userptr, num_pages, write ? FOLL_WRITE : 0, > - pages, NULL); > + pages); > if (r < 0) > goto release_pages; > > diff --git a/drivers/misc/sgi-gru/grufault.c b/drivers/misc/sgi-gru/grufault.c > index b836936e9747..378cf02a2aa1 100644 > --- a/drivers/misc/sgi-gru/grufault.c > +++ b/drivers/misc/sgi-gru/grufault.c > @@ -185,7 +185,7 @@ static int non_atomic_pte_lookup(struct vm_area_struct *vma, > #else > *pageshift = PAGE_SHIFT; > #endif > - if (get_user_pages(vaddr, 1, write ? FOLL_WRITE : 0, &page, NULL) <= 0) > + if (get_user_pages(vaddr, 1, write ? FOLL_WRITE : 0, &page) <= 0) > return -EFAULT; > *paddr = page_to_phys(page); > put_page(page); > diff --git a/include/linux/mm.h b/include/linux/mm.h > index 37554b08bb28..b14cc4972d0b 100644 > --- a/include/linux/mm.h > +++ b/include/linux/mm.h > @@ -2380,8 +2380,7 @@ long pin_user_pages_remote(struct mm_struct *mm, > unsigned int gup_flags, struct page **pages, > struct vm_area_struct **vmas, int *locked); > long get_user_pages(unsigned long start, unsigned long nr_pages, > - unsigned int gup_flags, struct page **pages, > - struct vm_area_struct **vmas); > + unsigned int gup_flags, struct page **pages); > long pin_user_pages(unsigned long start, unsigned long nr_pages, > unsigned int gup_flags, struct page **pages, > struct vm_area_struct **vmas); > diff --git a/mm/gup.c b/mm/gup.c > index 1f72a717232b..7e454d6b157e 100644 > --- a/mm/gup.c > +++ b/mm/gup.c > @@ -2251,8 +2251,6 @@ long get_user_pages_remote(struct mm_struct *mm, > * @pages: array that receives pointers to the pages pinned. > * Should be at least nr_pages long. Or NULL, if caller > * only intends to ensure the pages are faulted in. > - * @vmas: array of pointers to vmas corresponding to each page. > - * Or NULL if the caller does not require them. > * > * This is the same as get_user_pages_remote(), just with a less-flexible > * calling convention where we assume that the mm being operated on belongs to > @@ -2260,16 +2258,15 @@ long get_user_pages_remote(struct mm_struct *mm, > * obviously don't pass FOLL_REMOTE in here. > */ > long get_user_pages(unsigned long start, unsigned long nr_pages, > - unsigned int gup_flags, struct page **pages, > - struct vm_area_struct **vmas) > + unsigned int gup_flags, struct page **pages) > { > int locked = 1; > > - if (!is_valid_gup_args(pages, vmas, NULL, &gup_flags, FOLL_TOUCH)) > + if (!is_valid_gup_args(pages, NULL, NULL, &gup_flags, FOLL_TOUCH)) > return -EINVAL; > > return __get_user_pages_locked(current->mm, start, nr_pages, pages, > - vmas, &locked, gup_flags); > + NULL, &locked, gup_flags); > } > EXPORT_SYMBOL(get_user_pages); > > diff --git a/mm/gup_test.c b/mm/gup_test.c > index 8ae7307a1bb6..9ba8ea23f84e 100644 > --- a/mm/gup_test.c > +++ b/mm/gup_test.c > @@ -139,8 +139,7 @@ static int __gup_test_ioctl(unsigned int cmd, > pages + i); > break; > case GUP_BASIC_TEST: > - nr = get_user_pages(addr, nr, gup->gup_flags, pages + i, > - NULL); > + nr = get_user_pages(addr, nr, gup->gup_flags, pages + i); > break; > case PIN_FAST_BENCHMARK: > nr = pin_user_pages_fast(addr, nr, gup->gup_flags, > @@ -161,7 +160,7 @@ static int __gup_test_ioctl(unsigned int cmd, > pages + i, NULL); > else > nr = get_user_pages(addr, nr, gup->gup_flags, > - pages + i, NULL); > + pages + i); > break; > default: > ret = -EINVAL; > diff --git a/virt/kvm/kvm_main.c b/virt/kvm/kvm_main.c > index d255964ec331..7f31e0a4adb5 100644 > --- a/virt/kvm/kvm_main.c > +++ b/virt/kvm/kvm_main.c > @@ -2474,7 +2474,7 @@ static inline int check_user_page_hwpoison(unsigned long addr) > { > int rc, flags = FOLL_HWPOISON | FOLL_WRITE; > > - rc = get_user_pages(addr, 1, flags, NULL, NULL); > + rc = get_user_pages(addr, 1, flags, NULL); > return rc == -EHWPOISON; > } >