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 23E09CD613C for ; Mon, 9 Oct 2023 22:22:26 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 9EAD28D0097; Mon, 9 Oct 2023 18:22:25 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 99AF18D0089; Mon, 9 Oct 2023 18:22:25 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 8623F8D0097; Mon, 9 Oct 2023 18:22:25 -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 73DEB8D0089 for ; Mon, 9 Oct 2023 18:22:25 -0400 (EDT) Received: from smtpin05.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay02.hostedemail.com (Postfix) with ESMTP id 28E9F120420 for ; Mon, 9 Oct 2023 22:22:25 +0000 (UTC) X-FDA: 81327347850.05.BD396B9 Received: from NAM12-DM6-obe.outbound.protection.outlook.com (mail-dm6nam12on2041.outbound.protection.outlook.com [40.107.243.41]) by imf02.hostedemail.com (Postfix) with ESMTP id 45E988000E for ; Mon, 9 Oct 2023 22:22:22 +0000 (UTC) Authentication-Results: imf02.hostedemail.com; dkim=pass header.d=Nvidia.com header.s=selector2 header.b=RXNuUria; dmarc=pass (policy=reject) header.from=nvidia.com; arc=pass ("microsoft.com:s=arcselector9901:i=1"); spf=pass (imf02.hostedemail.com: domain of jgg@nvidia.com designates 40.107.243.41 as permitted sender) smtp.mailfrom=jgg@nvidia.com ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1696890142; 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=yOUhl0ZJKimcg0f/PRvV2xvmojg8INli926KGinV//U=; b=Jzej0EszXzL4wkoswnd35P/jYBvP/zSiWzG56naYSa7+D5avAQ0XRDoMuLsIFG2q1EDTEd yNTAYFU+2ujGwZ2Tq4r//eRXeO6Mipyvh3bB1T1OBOgOTVaDkJ1njsjjdi9HdJrs0tYxZz l4JZM6Ky9glcpdGwJ1mOpqJcETGV38g= ARC-Authentication-Results: i=2; imf02.hostedemail.com; dkim=pass header.d=Nvidia.com header.s=selector2 header.b=RXNuUria; dmarc=pass (policy=reject) header.from=nvidia.com; arc=pass ("microsoft.com:s=arcselector9901:i=1"); spf=pass (imf02.hostedemail.com: domain of jgg@nvidia.com designates 40.107.243.41 as permitted sender) smtp.mailfrom=jgg@nvidia.com ARC-Seal: i=2; s=arc-20220608; d=hostedemail.com; t=1696890142; a=rsa-sha256; cv=pass; b=HWx6s6IQuBEbH9M3uSgZGXyT1n32DIH1Di3Bi5eRttVUUMyGZkwTgJJF3dGHv2Ch49NJ3/ iGUe2ojYe9Xk+nMoJVHerTH3yw6yVCAaVqNQRAuZn2oJadlXB1PJvIw/jnM0hBjg/m4TGd fDoTDwdocEt+VY9v1VgO74cShGvGnUg= ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=kvRw3eB3fVjej916cD97q3lP4Em/kzHLzROYNczUNtz3qDUJOROoOm3X9zwrgwXAlzCLwwZa0C277MkBRROpwZM0PgOZu2zWncj+gAP0mq6ibC/VuqjL9YaW3OnHiAu0HaE7tq3PUURjtT6n+a9OIyvNKq/FtEiLsjd3nGLQWD7q+X9TGp7jAhj/WtOQAuCxMgAajzlxDFZLzaSi4OS2sNzPLAt1cdZ/9K8oWDjsKEtdvbq9VBhlIPwNUUSCiAJQ5hdDCsHCGVSW2gwEbsPRb77ARWpL7ScZrBNmAAtzWX1uNooa3kIkSuLZOF5S03SAIwbl5gAtmZn049FQcvmLuA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=yOUhl0ZJKimcg0f/PRvV2xvmojg8INli926KGinV//U=; b=cuJXW7LH62b2Z922/u1iQyXNvycAymfLo7Pi78IzcPnHyMHNnmMg5xd+wDheFP5x5+IaDsE7HRt23HRyP2+VTkoVFeuNdPy8ihA+Hlv0h3Dfekb1rg8X5XYXw5r3uFCuJOtXCzjl+PINBAYDpEs4gqlAR64/uIVhDzrhINiKak39nNyy1VIITAmIG2r2ukNInO6UK2WIEpIUkJNCcRLpKMkjS+tKxxVDXMSx8s7h2XHwx6ksk5sl/AZuJviyRXaxi6GlM2gL5z6IUNYRFNE6E1kZBmvvG/x7/EM1XnV3Yc+X08BH5WnmRD1XH0bEU/Y6X9gMdLmo04HlFeyM/Im8Hg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nvidia.com; dmarc=pass action=none header.from=nvidia.com; dkim=pass header.d=nvidia.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=yOUhl0ZJKimcg0f/PRvV2xvmojg8INli926KGinV//U=; b=RXNuUriakoFyLrTHMgHEt2Llir6V1C4nCKE6lnxPlutBdismfKgQ3N3zGES9sw61UaB9SNRCKR+1ayuB3NVasFtGqrGGGRweXeYqe7LKYcVeDYivAUVYKpOSqo1V4o5J0Hz2QCyT2e5RfJ/vibM5dmzfLxGxzh0KnOjCI3m3wktCb5XOjy1hHMMrRmtJ/i+svYHJN/Kgizuro1oq/KRnvpg28ZRnVjgEbB/f/J9arF5U9XGr9pJ6npM4jeB+NHT1jAOIHwgnv3yOvFr5Mo3DAUkTngO5JVsbSHnkO8hEKboFnciFfqOBibthzvtF5lNz7PrJhJSzPrLT1MIZ63fmtQ== Received: from LV2PR12MB5869.namprd12.prod.outlook.com (2603:10b6:408:176::16) by SN7PR12MB8772.namprd12.prod.outlook.com (2603:10b6:806:341::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6863.36; Mon, 9 Oct 2023 22:22:20 +0000 Received: from LV2PR12MB5869.namprd12.prod.outlook.com ([fe80::3f66:c2b6:59eb:78c2]) by LV2PR12MB5869.namprd12.prod.outlook.com ([fe80::3f66:c2b6:59eb:78c2%6]) with mapi id 15.20.6838.040; Mon, 9 Oct 2023 22:22:19 +0000 Date: Mon, 9 Oct 2023 19:22:18 -0300 From: Jason Gunthorpe To: Lorenzo Stoakes Cc: David Hildenbrand , 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 , John Hubbard , Arnd Bergmann Subject: Re: [PATCH 3/4] mm/gup: make failure to pin an error if FOLL_NOWAIT not specified Message-ID: <20231009222218.GD3952@nvidia.com> References: <6161e8a8-64a4-c4ea-626d-daac45ccd836@redhat.com> <6a421da0-8479-4873-8e46-6f92aed342c6@lucifer.local> Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <6a421da0-8479-4873-8e46-6f92aed342c6@lucifer.local> X-ClientProxiedBy: MN2PR12CA0020.namprd12.prod.outlook.com (2603:10b6:208:a8::33) To LV2PR12MB5869.namprd12.prod.outlook.com (2603:10b6:408:176::16) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: LV2PR12MB5869:EE_|SN7PR12MB8772:EE_ X-MS-Office365-Filtering-Correlation-Id: 2d7fd0f3-7fb5-44d0-38f9-08dbc91633c2 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 8AXyKoLNzdBMcUArKdMRS3/dsSwtpL7XGRanlZOmZu77nAs2IOqxQ0MUDctagvYlEVCEKAYtpHcp9Ks32nMJIVS40OyTmHl35xmUpyldWnsdW+0vENA1gyWI2ScvfiQLWwE8YnJ1t+NBo04auvbtvtI1r3Q4htb0VG5QY0RcGdovbXXjlVBbwPT7UECq1mfPVS8qCK9pxs7yboSGisd2GacvqesBc2BPWOOxXY1B/yCWiaG8IT0Xs+jPpi2d01XEkYFUK/hkKGLi2q2D2Iged0d+ErO2Zn9hW21wfEk7eKok/0zyTV5Rak9Q7EJNVARsDBt2vX9Qg/uWNNIsnjtwoEdq7sm6PrtDH14siFZGhDK7496bYwYk86TwbaRFzOXnispGOp033R6HwiGF42nWgSJmX8XN7OhRj7LV9MzJ/a9WnMIhXNvjVXlNrLPBrw5zK9T94OKDFO8ssQ4wxgWRAzig8/2EqDpzmAnwVG8+AWWs3Uxqz/zf0VDJnuZwNi/2yh6Qjj/36Pb5mRHKQ6HiiETKKTx+lMcQUtaifCXWtA/K0c72jUR4G0M1C7QcSTrA X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:LV2PR12MB5869.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230031)(346002)(136003)(396003)(39860400002)(366004)(376002)(230922051799003)(451199024)(64100799003)(186009)(1800799009)(86362001)(38100700002)(33656002)(36756003)(66899024)(2906002)(6486002)(6512007)(478600001)(41300700001)(8676002)(4326008)(5660300002)(6506007)(8936002)(2616005)(83380400001)(1076003)(316002)(66476007)(66556008)(6916009)(66946007)(7416002)(54906003)(26005);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?ckN9rdyxDymDRSx4sj7jUdNrnCjbY9utkHdEHLvKmkH+axyycjWZV2kzVYVO?= =?us-ascii?Q?pkAnA+gD7d8r0ESROhTex56YP8jNhZmL7e/O+xOoPBWPv/YMqMk3u998T8jB?= =?us-ascii?Q?sM608AG/wfhnU59yrWzlg9ZtiVvtUQ1NMPpZse9gssxmGYhrDEW5Cgm08NHT?= =?us-ascii?Q?YUvbKYvaI0Kjvg+7OFIy7FxUtQh6rwTxA1czv0bNJVaFx9txgvdphgGNpfl+?= =?us-ascii?Q?33Wnpf5RsK45raPMyWQEgWLaatxxoDygKi9cYvyXPqfXYYms51HIFwDAj+ql?= =?us-ascii?Q?MsNQMAObTX8YC6IjZ9nND9tlSLk6InTABK1Fb/mfiV4gsx0SetSMnQ2kQXNL?= =?us-ascii?Q?P675/mKmSGbKIEKZHHgCUle70vcJmNc+U9aNEJUBsf+wZBJf+VIsVc3TaJr+?= =?us-ascii?Q?vqEpQnC/eBa9kU5c4o81RwjXt2qqnI3nLIYaduePgeV8TI23G5X8/la1Xhml?= =?us-ascii?Q?T4Y0PANbRaDzOi1vQW2r6fU/+lrMp+zzc2l2RZ46cRXzvhYUl4H6Ill9E1mL?= =?us-ascii?Q?WhkQ9p7LHn3qxEkbrVXGg4nUusfbex/ZDWhxy3J1+uhBN5YPxspxtrLqFpVm?= =?us-ascii?Q?tgMW+HoaUta/pPs42EtjAZ+mhqhkq6ix2lkunlUt/csutezP4qmL5ge6JFWx?= =?us-ascii?Q?a6cFL20Empn72SWPQeus8L21oTcUwggFuXrQ7ALWX5Iz84U7iH4eFdhe2w7V?= =?us-ascii?Q?pMrec2VR4MS4Cd3GdmU4Qi2sW36/Tk9LPNFonwjE1b0zJPq7gWfKpbs/Z5c+?= =?us-ascii?Q?k3bn8+MK2VHNOya3DBvXlDBe3I5H/Wm2bk60cMsJwU0eF5/4IV2oq68bKxoR?= =?us-ascii?Q?q5srxX0c2tg1opd1Nrg82Io9V+ePRBnheJmyuUBpG3WLwtiUbvlEspcnYYa5?= =?us-ascii?Q?ZCVR5hebmxSpAp9IDmHcx64EyboMlcMyuUVWh7RpAsn4tbkiEJrMBUjX+z9Z?= =?us-ascii?Q?RvfNMTHJBdTTJVSaLH0ndRyHDIGF4VwY7CFvaZdrZp4QARcZqIit48FMZ0wI?= =?us-ascii?Q?8bCthOPCDnQ5P/uII7DSoait4F+MgIh2p0WbkG89jSvsAEvoyuvOR5aD98Xl?= =?us-ascii?Q?VKdn3YNLaiZhURxooyqqQJU3cETW1t4CekdyG2TveM32uUPlF7FNeKMHog5i?= =?us-ascii?Q?oEJEeCszwaPNFgyj2PBuVsyfVv6OM9oiClr4mDONPOH3DQWxhYXJAw4zOvLs?= =?us-ascii?Q?hj+9nJVRdpBYb46ZLRF7LJwsAeu7TLrAByJajKXEEuod/6r3RJf2/nLvKXYV?= =?us-ascii?Q?BXLT6cSZg7wb+9l1aIQ4esuXq0CGt2hUOZ3ucDt0impMBccsnpH9lna8bUeY?= =?us-ascii?Q?VXlUAro+HExzUcynWP5A19YtcvIkfx+7y1B4zAVO5VSOHoTIClJTASkQYdMA?= =?us-ascii?Q?o9+vaXiiWjlO4ZKNfjV6mIzZvHNxyaYlNsmnHpFgsKLv3A4WJqcyKZUCvKD1?= =?us-ascii?Q?YyunO3TbfXpBFpQmKIPj5VdGkZ1lMosU3DpwJ/UYsBs+doJ2VnRAhDUiUXAQ?= =?us-ascii?Q?9QsDhiFYkVsJ4l3jNjzaix5rciCtigWsEMBQKjA/pSfY3Z/I5xhjMufipTBt?= =?us-ascii?Q?8wYMgj547fuDSiuTilM=3D?= X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: 2d7fd0f3-7fb5-44d0-38f9-08dbc91633c2 X-MS-Exchange-CrossTenant-AuthSource: LV2PR12MB5869.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Oct 2023 22:22:19.9275 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: UeNB/A9AUnwDqRYPma/2j+wvRSGUt0LwJWhJGYsPQj0rglM4kVYisQjKPyiCA0r2 X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN7PR12MB8772 X-Rspam-User: X-Rspamd-Server: rspam12 X-Rspamd-Queue-Id: 45E988000E X-Stat-Signature: xcznnfx5panm7pjjisy5pzfbx7rr831b X-HE-Tag: 1696890142-349029 X-HE-Meta: U2FsdGVkX18SJVk++AJ/Oql+zRL0bIh7y/PtObf+MizfM83HyDQYNlKNIhK+9KzapuuWLcIYRUnW8GA/xrt6VB2n0VmeVXZ495Va5oGVeWtZGntunyrg1pkJrpQO4yFbvxDX3vYBUGKeLvouJSWocpzmb53VT4FxgdU530xOeerUMQPKOZBz8WdLxnT7/CATRaOVeoFXhtgC58ET6Jhv8Sibvt7E8z6NKefXxYbxnZf67q2H783xBZnUSduoj5NaMoKK62uStLGexzcO5QPS+3OZmjEtlanSuCeiY1WklyDDxk7Bs/MLuHIt7JIQzSE/U0hvY7Gzi8hgEMm/3l19cT4whb88BMqYH4YnxnGHT0rIvtsA9iLML/6UTIXZIK5miVp7gUxXeBJ7CJY3zAJQHlu5lxdJCt+Jli+YdFYIRCysCYSYR7Y4KgkDnISkyjNDIqUIq7Lh05/VewTtU2DhHwmC1b3FAYzyX5vZ5UWlKNXpm17V7PvpMqQBzaN0rtrh03maDm9SQr4/d9Px6WVd3cGlDi8uKIsPSmKHcBz5Va63C4Rxy+Gm+ySE5ZFFS/ghC89SDVH8Q0u9IF3kuwmUcGHbqXz25W7VcMFirB+N4dLAKkD/ohZFG5EaTx+flEIVessIzFxa+V4AMwpYRN4Os3Tawkpe43OFszlkY153/TWj7Q5ILDPipk4sg7CuV/zZsjGvAWAKQtz1M6yLB0fUEofGF0AfUb3hAbGXI/JqpjSZDdHyk5+43nY2XAWfSMLDmGPQzonA7MQ0Kc134MzjjppUTL92GSrhDSOtO3bgGyqOsqZPH2DzO4gUi/EugwWAftVERw8vQLX9OpgjXOxNeZB5N+O/eS99awOF8HJozjmxMH66/Ubq4UqyunEH8o8RhujYNVFVUaYG4qQnloQcHm5zldLGkN+fFm5bciGjxpeij+6MgTLlzbXF4fC+QfQuAcUkJ08NZqIGZS4C7n3 LRxO1SCG 79/bk4eGXre2osFgfD7Z0KpeJKv14LhhmfvYghuqS83t8pk6SzhsgV1UsGyvijy68ljavie31cklUVZqgAI+I+0qI9vkQN+HmPb23uJgCFB0oNyue32Xe7e396A6ujqH8pT47ubSkuT9JjapoqvBNWdHqOwLaoPCYH/IWKCQpv+Y+U1rF9dDMsZB9sQUhEJOfOc5x63anQOfRfgEHuz9ds4ZMBioJ3rdsALqAqI/mfNvMjh6eSYm+tZaYzC6S5wC1BZqX 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 11:51:04PM +0100, Lorenzo Stoakes wrote: > > > diff --git a/mm/gup.c b/mm/gup.c > > > index b21b33d1787e..fb2218d74ca5 100644 > > > --- a/mm/gup.c > > > +++ b/mm/gup.c > > > @@ -1471,6 +1471,9 @@ static __always_inline long __get_user_pages_locked(struct mm_struct *mm, > > > long ret, pages_done; > > > bool must_unlock = false; > > > + if (!nr_pages) > > > + return 0; > > > + > > > > Probably unlikely() is reasonable. I even wonder if WARN_ON_ONCE() would be > > appropriate, but likely there are weird callers that end up calling this > > with nr_pages==0 ... probably they should be identified and changed. Future > > work. > > > > > /* > > > * The internal caller expects GUP to manage the lock internally and the > > > * lock must be released when this returns. > > > @@ -1595,6 +1598,14 @@ static __always_inline long __get_user_pages_locked(struct mm_struct *mm, > > > mmap_read_unlock(mm); > > > *locked = 0; > > > } > > > + > > > + /* > > > + * Failing to pin anything implies something has gone wrong except when > > > + * FOLL_NOWAIT is specified, so explicitly make this an error. > > > + */ > > > + if (pages_done == 0 && !(flags & FOLL_NOWAIT)) > > > + return -EFAULT; > > > + > > > > But who would be affected by that and why do we care about adding this > > check? > > > > This smells like a "if (WARN_ON_ONCE())", correct? > > Sure it does somewhat, however there are 'ordinary' (maybe) scenarios where > this could possibly happen - FOLL_UNLOCKABLE and __get_user_pages() returns > 0, or lock retained for non-FOLL_NOWAIT scenario and __get_user_pages() 0 > also. > > So I think the safest option might be to leave without-WARN, however you > could argue since we're making it an error now maybe we want to draw > attention to it by warning. > > I just want to avoid a warning that _might_ be a product of a particular > faulting scenario. > > Jason or John may have an opinion on this. Ideally the subfunctions would never return 0 when they are not supposed to return zero and this would be a warn on to try to enforce that. There should be a clear limited set of flags where the caller is expected to handle a 0 return - and those flags should have guidance what the caller should do to handle it.. Jason