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 AAD57E776CF for ; Mon, 2 Oct 2023 22:56:42 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 1916D8D001A; Mon, 2 Oct 2023 18:56:42 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 142158D0003; Mon, 2 Oct 2023 18:56:42 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 00A138D001A; Mon, 2 Oct 2023 18:56:41 -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 E5A8D8D0003 for ; Mon, 2 Oct 2023 18:56:41 -0400 (EDT) Received: from smtpin15.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay10.hostedemail.com (Postfix) with ESMTP id 875AAC0116 for ; Mon, 2 Oct 2023 22:56:41 +0000 (UTC) X-FDA: 81302032602.15.C47E439 Received: from mail-wm1-f45.google.com (mail-wm1-f45.google.com [209.85.128.45]) by imf25.hostedemail.com (Postfix) with ESMTP id 96E6CA0018 for ; Mon, 2 Oct 2023 22:56:39 +0000 (UTC) Authentication-Results: imf25.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=b9lrYJMr; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf25.hostedemail.com: domain of lstoakes@gmail.com designates 209.85.128.45 as permitted sender) smtp.mailfrom=lstoakes@gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1696287399; 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=ImvWh+2gFsWJ7StqF/6mOZboIVtJA4miy8m0Nl6hNSk=; b=SyM27kxMePb0rBm/YtiuVEarQ6hekjHEtB6MzvU6/p8b/wgRQBRkoS+mGOdPcwNUT31ju/ dJA1qcD7Pu0aI3rSqt/P73BNV3+sJEj/STi6MdRQjIWnVRSpY+V1aBnRsY00HIKcZyZ2rI gyZrr3yOxSy6D2aVOoMDpy0Vn/rv3tw= ARC-Authentication-Results: i=1; imf25.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=b9lrYJMr; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf25.hostedemail.com: domain of lstoakes@gmail.com designates 209.85.128.45 as permitted sender) smtp.mailfrom=lstoakes@gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1696287399; a=rsa-sha256; cv=none; b=Gyy9Fklmz5O8rfUwDdubFfTttfNn1awI3AJMVHM5pWwym//Wm4kp0xGfwPagDVbJEs4h8T 3VlCyhfLwXcdld6k7ulrn+qlEJQtUe9qwc80P3dFWi9xlYVIRQrNmouSynt55QjMVfpejK mjLaxZNig6/FP6C4gWSIMkGa9B9/Bvs= Received: by mail-wm1-f45.google.com with SMTP id 5b1f17b1804b1-4066692ad35so3137345e9.1 for ; Mon, 02 Oct 2023 15:56:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1696287398; x=1696892198; darn=kvack.org; 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=ImvWh+2gFsWJ7StqF/6mOZboIVtJA4miy8m0Nl6hNSk=; b=b9lrYJMrluBaj9RQo2lekIZ4VIljBoGAlzKCtN+bCws/8um/eDco9RLoTXjoYZVsVN q7qr4PVJIfkk4r2QfNCCuPrmhOxae2AnHt5QeSd4E2jH+YVX9JgoFkwzKoWg8Jh3dMOj WYVNN8z5SVU4vm/nhy+zdLkcLKpEJWnTd3Z/rA/W5vDTLKDI31etr/6oYUqM5lcTqto8 xYFrYHC8+mc8KLcUJI3TM56QSTdbpQDXAURAszF1U0vVoSyKFYCBgOcU01p5Cm9zWOIv V4Ev5slGuKYr22W+H5yiX35iiZG9iPz9Ku5he11xKaGGBx3peUSFaCqFmBnE/Lz1AGpo Z9ww== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1696287398; x=1696892198; 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=ImvWh+2gFsWJ7StqF/6mOZboIVtJA4miy8m0Nl6hNSk=; b=tCeFuIgEkd2uD+2iuwNkgCe5Cnu7ib//DjdShvyKXJ9L0cM3Vi3cM3LL1hfYk8iHXA RzqXLCBIOy8U4pJtWPoKWgxszwUctawVM1+0x+yb+pRn4VK8ljaXuoO3hc+iH1JobepK SyREGMlYkn+KrrWqE9nZo34QiJQJ9yFPUs4v63JnAb1uSejQlXjOu3uXHVOENtwqOu5Q dSyrVPeVzD8nMZpphx9IbysX1SylhoGZuY7BsthVmuFin1hqoVJWTiFS3lS3+QKIrvRw J7Tb/H2qUGy01W0nZ7hpqfRRryaz764yKcb/jSfzsppSJgT5hCMYVZuZCMJekz/3QjVZ c1Iw== X-Gm-Message-State: AOJu0YyF23xPhTEfLmyhxHt0hncVUMHaKN51c8veQWtn5g13dBNSJdSL OzeWrqlkhJSWVOgnIoRRND8= X-Google-Smtp-Source: AGHT+IFcnCA/4f2yRCa8G3jG6RHvM645UIAuU4RM06c4eQxvrBs6hJr6/bFhIF2Ft4Kcf/YlwHdJVQ== X-Received: by 2002:adf:eecd:0:b0:314:a3f:9c08 with SMTP id a13-20020adfeecd000000b003140a3f9c08mr10062481wrp.39.1696287397782; Mon, 02 Oct 2023 15:56:37 -0700 (PDT) Received: from localhost ([2a00:23c5:dc8c:8701:1663:9a35:5a7b:1d76]) by smtp.gmail.com with ESMTPSA id s11-20020adff80b000000b0031ad2f9269dsm34796wrp.40.2023.10.02.15.56.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 02 Oct 2023 15:56:37 -0700 (PDT) Date: Mon, 2 Oct 2023 23:56:36 +0100 From: Lorenzo Stoakes To: David Hildenbrand Cc: linux-mm@kvack.org, linux-kernel@vger.kernel.org, Andrew Morton , Catalin Marinas , Will Deacon , Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Mark Rutland , Alexander Shishkin , Jiri Olsa , Namhyung Kim , Ian Rogers , Adrian Hunter , Oleg Nesterov , Richard Cochran , Jason Gunthorpe , John Hubbard , Arnd Bergmann Subject: Re: [PATCH 4/4] mm/gup: adapt get_user_page_vma_remote() to never return NULL Message-ID: References: MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: X-Rspam-User: X-Stat-Signature: zqzw5shz3yghe48xf7nn1nukmjkkyg9h X-Rspamd-Server: rspam07 X-Rspamd-Queue-Id: 96E6CA0018 X-HE-Tag: 1696287399-141650 X-HE-Meta: U2FsdGVkX18oNfR1sXIT4l2iQeCw5GlKByc0A8grtEPEKFegV6INvggH7Qcrw2DuVC4lKO3mgwt7PEpgkq/j6a5294d49ctzKvyY1axh5dps2mD5NPXkCobPZAeGrkIo0s9DTIBhvEr5iCYkDiBlLl4zmOih4IIl5tdoIpz4coSXGABtIImIn6QnwFqVMoBk/LItt7hzWEAMm1++vyfXEIvrF5mKdwEoFqySwQquvqiIfaDKi0AA0ptRLGhD/4IKj2pDzCSSD9etCcfeLSJpvm4JhnIeycUmUAr6hUjZ8Q70SjpUhavC6SHgz2QLkwqm800pJzN+d04uZI9zLZZXwqpN33FHF01tqg5+O0Bk6SbyIzJHmS6aZbNLvZbBFYb3TqbBt80Q0IfT4yz9ykKlgYYaxudlnC+TuvW80zU42+PMNzlDD2lZYjAABVgfp1JX4NIdslcS20Y/WTIANoTFmmeqqNgJrAtukfIRn6RtSf5IekLZp9aHu1Jn7ekIjiEW6XxD/cA9iz5Zs9toRB6WBc1sz/rKDMuw81AZawyJglgWDv7uqGbJDvCWQzb3nhTbcVDlD2PcZurHkvZgOesmqGkEF4ynq3idjL7v8lnu4oOM5mQRkgi/IK6xAFd6/mwT/t1QMEOhBuoG0BNDFFw7IuBEHMJxcvw8B1Ni55nf2/RlHQJ9f0doS44FdzAW0cYd/d1Z+GdKzDYQ0rRlwhz7iBy5UoXW5+5Yco5UPo2T7lmb7LaUH4tShl5G6q3C4kfcQTxuTAwGnZ/LNBveecUOfljLaKN7qUh9SKFQx9BAoQMdqxyBnBGl+4r5E8yFGrGf5LqxU9QRLzYHiuuBoO2AYvEamCyhxLRWSeBy0hIJrwbN5jrdu1/QOzkTLoG9Z6l44zus3aUPGtwFVzRWk31k0BLA5V13N0BHV9ZW3zxJM/PeKTlW241wyIeO4NPBPejLeKXPjKSB8BQRji8Vni8 xhf56lOC lglbIBsooq3k7RgI49pxqYZScINaNbM2/WVWC5O2N6PysDbWE/PCm+WIoA+guliGN/WMwRH1/CYh2Uvtwb8AJo2zK0YRrwqwwenUAwI/xko4YLlv37iS+u+uI28yckqzNYqWBbKwVXf1x9bvgOOyHRpdxZsLMwK0TXzXf6YLTE72aoipxuj/88HR5m/LEQJ5hLI5ej0ZYNrUqlNl00vCmAAVb8kW1tBUBIsrHI4l3pl7IuzcOWuFov/tSJ2w7R2y497qsZvlg6U95PMNHMn8U3TljjJchHODKyM9zwLWx35ws0qUdQW5k2plzG1Ki7duW7Vt/4oQokgDl1GdnCfEBRqPXrdeU9FmOwt3r/q+nQoDwdQs5RgC8WzNMdsGJcPjS4SZlpPVmiP3OOr/0f4DWniYcCaDj50KJEFKJoDnUOW7ZkFgCBP2GaByecEFP2PQ05vFtXJsNB8T0LzG89oIjj9xl11iPy+GgKQuh 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 Mon, Oct 02, 2023 at 01:08:41PM +0200, David Hildenbrand wrote: > On 01.10.23 18:00, Lorenzo Stoakes wrote: > > get_user_pages_remote() will never return 0 except in the case of > > FOLL_NOWAIT being specified, which we explicitly disallow. > > > > This simplifies error handling for the caller and avoids the awkwardness of > > dealing with both errors and failing to pin. Failing to pin here is an > > error. > > > > Suggested-by: Arnd Bergmann > > Signed-off-by: Lorenzo Stoakes > > --- > > arch/arm64/kernel/mte.c | 4 ++-- > > include/linux/mm.h | 16 +++++++++++++--- > > kernel/events/uprobes.c | 4 ++-- > > mm/memory.c | 3 +-- > > 4 files changed, 18 insertions(+), 9 deletions(-) > > > > diff --git a/arch/arm64/kernel/mte.c b/arch/arm64/kernel/mte.c > > index 4edecaac8f91..8878b392df58 100644 > > --- a/arch/arm64/kernel/mte.c > > +++ b/arch/arm64/kernel/mte.c > > @@ -411,8 +411,8 @@ static int __access_remote_tags(struct mm_struct *mm, unsigned long addr, > > struct page *page = get_user_page_vma_remote(mm, addr, > > gup_flags, &vma); > > - if (IS_ERR_OR_NULL(page)) { > > - err = page == NULL ? -EIO : PTR_ERR(page); > > + if (IS_ERR(page)) { > > + err = PTR_ERR(page); > > break; > > } > > diff --git a/include/linux/mm.h b/include/linux/mm.h > > index 7b89f7bd420d..da9631683d38 100644 > > --- a/include/linux/mm.h > > +++ b/include/linux/mm.h > > @@ -2425,6 +2425,7 @@ long pin_user_pages_remote(struct mm_struct *mm, > > unsigned int gup_flags, struct page **pages, > > int *locked); > > +/* Either retrieve a single VMA and page, or an error. */ > > static inline struct page *get_user_page_vma_remote(struct mm_struct *mm, > > unsigned long addr, > > int gup_flags, > > @@ -2432,12 +2433,21 @@ static inline struct page *get_user_page_vma_remote(struct mm_struct *mm, > > { > > struct page *page; > > struct vm_area_struct *vma; > > - int got = get_user_pages_remote(mm, addr, 1, gup_flags, &page, NULL); > > + int got; > > + > > + if (unlikely(gup_flags & FOLL_NOWAIT)) > > + return ERR_PTR(-EINVAL); > > + > > Do we have any callers or do we want to make that official (document it) and > use WARN_ON_ONCE() instead? We have no callers who want to do that, will WARN_ON_ONCE() and update comment in v2. > > > + got = get_user_pages_remote(mm, addr, 1, gup_flags, &page, NULL); > > if (got < 0) > > return ERR_PTR(got); > > - if (got == 0) > > - return NULL; > > + > > + /* > > + * get_user_pages_remote() is guaranteed to not return 0 for > > + * non-FOLL_NOWAIT contexts, so this should never happen. > > + */ > > + VM_WARN_ON(got == 0); > > You should probably just drop that. Not worth the comment + code and its > better checked inside get_user_pages_remote(). > > Ideally, just document that behavior for get_user_pages_remote() "Will never > return 0 without FOLL_NOWAIT." Well you'd need to put it at all the other callers of __get_user_pages_locked() too :) so I think probably not worth doing that, at least in this patch series. In any case, we have explicitly added this check there to ensure that's not possible so I think we're good, will just strip in v2. > > -- > Cheers, > > David / dhildenb >