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 69801C05027 for ; Fri, 20 Jan 2023 19:02:40 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id EF0FC6B0071; Fri, 20 Jan 2023 14:02:39 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id EA0BA6B0073; Fri, 20 Jan 2023 14:02:39 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id D1A606B0074; Fri, 20 Jan 2023 14:02:39 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0017.hostedemail.com [216.40.44.17]) by kanga.kvack.org (Postfix) with ESMTP id BFB196B0071 for ; Fri, 20 Jan 2023 14:02:39 -0500 (EST) Received: from smtpin25.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay09.hostedemail.com (Postfix) with ESMTP id 7AEC2808A0 for ; Fri, 20 Jan 2023 19:02:39 +0000 (UTC) X-FDA: 80376098838.25.84453BC Received: from NAM04-BN8-obe.outbound.protection.outlook.com (mail-bn8nam04on2050.outbound.protection.outlook.com [40.107.100.50]) by imf03.hostedemail.com (Postfix) with ESMTP id 6BE2820024 for ; Fri, 20 Jan 2023 19:02:35 +0000 (UTC) Authentication-Results: imf03.hostedemail.com; dkim=pass header.d=Nvidia.com header.s=selector2 header.b="L/8K+Vhk"; arc=pass ("microsoft.com:s=arcselector9901:i=1"); spf=pass (imf03.hostedemail.com: domain of jhubbard@nvidia.com designates 40.107.100.50 as permitted sender) smtp.mailfrom=jhubbard@nvidia.com; dmarc=pass (policy=reject) header.from=nvidia.com ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1674241355; 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=IgzOTcJQqMsi95csnBe0a/+0qUfZ8LjPhUqzMYP9WYY=; b=KerSyDh4EHBmgmyLJYaE+PLmvsE0BkPyQeEMgNKAHjvKQN2Jgdn4oZlPTyhKvm8gMOk6Ia qQa8rctUoFoBNIyRp+g7TzIE7zowABiVd1Z04plLfffT1+Im3nxeCRqUCbBEycljhhMono gpjDvHNSxBcBiu8PLr1AIXJbkR0EFac= ARC-Authentication-Results: i=2; imf03.hostedemail.com; dkim=pass header.d=Nvidia.com header.s=selector2 header.b="L/8K+Vhk"; arc=pass ("microsoft.com:s=arcselector9901:i=1"); spf=pass (imf03.hostedemail.com: domain of jhubbard@nvidia.com designates 40.107.100.50 as permitted sender) smtp.mailfrom=jhubbard@nvidia.com; dmarc=pass (policy=reject) header.from=nvidia.com ARC-Seal: i=2; s=arc-20220608; d=hostedemail.com; t=1674241355; a=rsa-sha256; cv=pass; b=RyoMhrNowt3RV58UGZ2q2QuvtNgEQDeCDY0IOENdqc2qMW4Tyt8v4IsqUUdQVBuGZDeC2L k6Tq1AK0/vnv58OSogedep2POjtCeDWAQZU7Tc88FZFFTMl4br72P911P39a1kf79QPNGq IPAYwGboSF3Iuv6FWy9+6mGsTCrwiaA= ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=X7eDCFFQMsUmUUBW8bn2bjPW4YJRCyP9szYTgJAMZXsLy7zF0MLUnD1sFF1QKMhZugVYn0eewFwEPaMNv35UA91cksugT1ygBOmyS1LDNfVAUI05v5Lvt+EYCcMLjTKzgqSHPak9XNPTv9NHh9SpZpvbrbbAbcJWS8+87zC9+spT5vtYHTM1GOjbP5vJ9fj+w+INyIc0p/6Zmkd6SPlY/yclX5Wzd4VnjKglccY+49Te99S2BgVafDztjDbjzifT2S1NKKWI6BvAgdMk+Am+qtg6UEnuIPlodI+kN0A0rU0eAy6Nff9+T+ujsUmhd5On3mZ0CiRF/THr/GdeXDvvfg== 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=IgzOTcJQqMsi95csnBe0a/+0qUfZ8LjPhUqzMYP9WYY=; b=bUimRe6xhzFh69tUEJNVwyizsBe+UHnqKqPmAoo/pEvgwBUQ9YBnaQEoHtMNR2PflKBvQOg4m7zKGjFkRWUe62MiAplPaNdtcbf+pD1E204M2PpXhfqeBPVaPlT62uIfcTRcs6wKbFj8C5NZtDKnsbT1iW1Er4jdYW69vYyYXRn1rRQsCzgjpnS6kbjweDLAgeUoW1S2+Z9ouvgtiZaBsdPGflfyAB/PdOKwuKFssWM55IwOtI3gnqjG/owK4N2AVUqfcf8ok8AJzO2O4zkj0Zt1mQWb/VhIkuwSuavAA8DAq90kH6Jg1yJJtUgxOKY6vna1ljk06wTLfyGfPDPp2A== 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=IgzOTcJQqMsi95csnBe0a/+0qUfZ8LjPhUqzMYP9WYY=; b=L/8K+VhkbIwKmv3B8OC0s3ydglgIPnT3P2kyWTK1YkoMUqsZVm0AGDwMEKzjdRDFmlxE3o1l0C5QaC5LchmbctMBY7j35yzMIdnlwxIrysjCQ55JQWBI+uCGfQvjtyMAeFBabgh+wcoYz5bw5qnC66/QpaEj8vezd4AbrYhbEu6QZmaqbDPy5QL9Lmt/FO0kqvbZXUdClYGBjn7m1GasnSf6TItGKIjLSCG1xL4aVGO2sR2bcyMJ6sVNNC01lv8JmKLnBpiN2FsLQMnpQJ1ihhe4G2y7vFnyyYSCDc7p167oRc1V3kCcygtWsVLSIiQO+C3MzGm4qp1+4C1SvuK4fA== Received: from BY5PR12MB4130.namprd12.prod.outlook.com (2603:10b6:a03:20b::16) by CH3PR12MB8533.namprd12.prod.outlook.com (2603:10b6:610:159::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6002.26; Fri, 20 Jan 2023 19:02:30 +0000 Received: from BY5PR12MB4130.namprd12.prod.outlook.com ([fe80::7895:c4d1:27d2:5b0a]) by BY5PR12MB4130.namprd12.prod.outlook.com ([fe80::7895:c4d1:27d2:5b0a%9]) with mapi id 15.20.6002.024; Fri, 20 Jan 2023 19:02:30 +0000 Message-ID: <61d7b8f2-95f9-04a0-7a9f-ff9456cb583e@nvidia.com> Date: Fri, 20 Jan 2023 11:02:28 -0800 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.6.1 Subject: Re: [PATCH 5/8] mm/gup: add FOLL_UNLOCK Content-Language: en-US To: Jason Gunthorpe Cc: Alistair Popple , linux-mm@kvack.org References: <5-v1-dd94f8f0d5ad+716-gup_tidy_jgg@nvidia.com> From: John Hubbard In-Reply-To: <5-v1-dd94f8f0d5ad+716-gup_tidy_jgg@nvidia.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-ClientProxiedBy: BY5PR04CA0012.namprd04.prod.outlook.com (2603:10b6:a03:1d0::22) To BY5PR12MB4130.namprd12.prod.outlook.com (2603:10b6:a03:20b::16) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BY5PR12MB4130:EE_|CH3PR12MB8533:EE_ X-MS-Office365-Filtering-Correlation-Id: 380e98cf-c04a-4b55-97df-08dafb18e0de X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: Z+t4YXZEsf7Q27WRKS25WQ+IdbqSOpmVWJcrbCHw7XvaGfVZ8zdqV2mj4EcFVir4Pq23X/LdNGzDb/6Eo8kvR5Y4H5FT/0v2Hz+R37P79bRQMpd5auk3k6V1UDAH8LFHlIVPf4+FOYBl3VAoDOyguEvdiptAY93CwKl7zpLCc56rS1adSsriDJaq4XzARR4ClAHKl+diQP9n6pXTmsaBemAzi8C0X7uNha2BEKZh6WMSdVtj1tARZkfspB3QCmf59ENUr1gsLsU6hrhpKZ69mEdSkKudxpfO+uDKV2YD+RAYjcT0f5acDp/LFga7NTrMO4bsiCv4ISCOmP+P3eUV5zOhYskY2bzPwGMfQ+7qI5h4zhyv7+p0hULoHeV+GLeFup4e1mWbuRU613hw2M33L3PLgDGMplc0XwWLhcHf1fDTnGDL00ncHIJzEUI7Fp/pL1pl5WwwDvgmiuxYUDFyDEalD/ZbyBAnheiIQ6rqjG7CUXse+pyaV8zVcPWbD9+9xUxhibpnLF2/7wftRikMtSXEDCDugmWCeiEvMO3AFBYbxJExP2SoK4VPhHR8O4ZjW+PqIPVe/0/iTeqtaPS5/vKn+RjX41h5qABQqi6K/VnqzB0uPqamX0HN/Zwk7kwkcBe8NSRDTxCXXJwQvQMjRHd3I1uxha/m9UqPIKIaJqitHop/b6d8KMIKzPG+cRuQq1HUfT5/C/HXP44Fstcdv6qCPqpsuTLts1id5KqGK/s= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BY5PR12MB4130.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230022)(4636009)(366004)(136003)(376002)(346002)(396003)(39860400002)(451199015)(31696002)(31686004)(6506007)(6486002)(478600001)(53546011)(86362001)(2906002)(37006003)(6636002)(66556008)(4326008)(2616005)(6862004)(5660300002)(316002)(8676002)(83380400001)(66476007)(66946007)(41300700001)(38100700002)(8936002)(26005)(6512007)(36756003)(186003)(45980500001)(43740500002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?UXVXVWowb1JSRmN4V2NLWEZ5aFJOMTMwY2N6cGRSZWtIeWVrM1g5alZUckJk?= =?utf-8?B?amdwZjlaRXhjb1Z4SzFrUFhRRHFZb05lTGs2eDNlUzVhMUdvMEo4VXV0ZlJU?= =?utf-8?B?U0t2MWJhRjkzTGx3OFhPbXhTcnpGQ3dUWUtqdW1reGFPZit4djBVS01DaGd4?= =?utf-8?B?b0g3KzJacmtYOFdxNi9ST1JISllFUjZITWF3UFJLS2FZMUVybWs0eDFHSWRG?= =?utf-8?B?MHZpdm5tMitET2lkQ2JZOXltSHNRTW9KdlROSGdBTmtSeEN2bncwZVQyaVJk?= =?utf-8?B?SmFEWWloZXVPV1ZodVZiamxaeEVUWFcralFvUXh2RTdncmJSdkZZZTE3QUFl?= =?utf-8?B?QXJMWWNVckJqUGxUMCsrZ1NDQmo0Rys0QlV1L1o2WjlORTN1Z1dZNzJtVG1u?= =?utf-8?B?eHRJcFFxTi9HdkM4MEVXcEJwS0VNdTB4YjJJMXhpZmpoNnlXSDlGMXIrRzVt?= =?utf-8?B?WXI2NzBsUzlpYnpWby9nRzBFVVgwWUFsbEtJTUhCeXdMWEtYM2xpTnhtRlor?= =?utf-8?B?K20yZEUrVzVGRlFtSmkrOGJKNE1VMHNMYVlpbWlXKzNHU285cWVEYWM4Qk5w?= =?utf-8?B?c3czaGo5UjV5SXRoSEdyOEpBOTVvSDl2akk3cGxPN3liKzg0WUhqS21NMVh1?= =?utf-8?B?TDAxV0NQOVNDdm1BbHd1QUhPc0N5TmYrU0w1RVdHQW9tbjBlVytiZWtERXlB?= =?utf-8?B?SGZNbktEaFBpVmc4Q0F3TnBlNHdaNGo4clp1djA2ZDIwK2ovcTNyd1doMExH?= =?utf-8?B?dDVsZEJ5azA0ck5lUkNNSWhvQUdQbWZZZnNVTlRJbFNSN1FKWnJrUVF1STZL?= =?utf-8?B?TEVFZXhBSXpGYlJnZ3J5Y25aZEhRd2FYZmJ6NnlvZTdORXVPWlE1bHFFZlEy?= =?utf-8?B?MUtZNGkrcWg5ZGhZWFBlbzdsa1hOWU4zeC9FNEE3RUJXU2J5TEltTEJEYTQ4?= =?utf-8?B?Zmh0WkV6cGY3Y1MzMTNmeEZHdXBjMDhGTUJUczZjNUVoZFdEMlZJUUZIUklB?= =?utf-8?B?ODJUbTY1eGN4UjRhZkJuZUZoUUFrUmYzODVlR2FkR0hhQnVZK0FSZHZmNG9L?= =?utf-8?B?MUZ1KzlGYmxuS0JuUlpYNmVZRGdCbVdWY0FLZzk1a3VQYkRUaEZjL3A5Y0ww?= =?utf-8?B?blp3a2lqOFpLVmsvUFVCQlJQYk03d1NMakRsWEI0aHBJcVBJNExGNy9TSlVo?= =?utf-8?B?ZVc3REhibEI4T0dicG11SG5PMncybGg2azVQVFY3dnJpcGViWVorSlpYZ0Js?= =?utf-8?B?RmFxci9OMmIzTlB5UVo3MS9XcEhTTmZoNFJxMDVWRWErUHR0Sk01allFWFRy?= =?utf-8?B?MnlLOHRBYmUxeDJsVDBJcGFtNGNKSXh5NURrenI3WGczTktKWmRHbHByalZx?= =?utf-8?B?czFJLzgvN1ZIU3NTVmpNSWk2NzJxK1l2b3JFOVZ6MWNGYjExdkJybXVOVmx4?= =?utf-8?B?YjRCU2VsSmV6bkIxVkp1ZlZvd2UzQ0ZPSmFHVDVOeXFRb0tvUGVGT2lyRmxQ?= =?utf-8?B?RVovMlc2aUZKNkpmaG9OZlJITzREU3pkUzB0MVcyUytmS3JodE0rREsvbS9O?= =?utf-8?B?bVcrZXgvaFd0T3p4OEhRcEQ3VjhjQjVIeG1Ic2VsQnR3YjhIaHhjTExENm9L?= =?utf-8?B?L1BzTmtPRHo4RHdkNzkvNWYxa2E0ekFaNTJZYXo3ZDQ2MkVPK2g5cHExWDgx?= =?utf-8?B?dVNKc0tIYThwNTJpcXN3bkg4NGs1VlRaanhhcU4zS0QrWXhSZEhCRnUxdm1o?= =?utf-8?B?SlhMRTJjUlJxeEtoNUlXRXNZcGtyTnoxZUM0aDBUSWl4eFU1T211RWZFZFJJ?= =?utf-8?B?SlFpeVJjdjVxS1M3Vjl5TWkzNVhFTmpiRmx3TUdvdCt4TUQzVGN0dEwzVnBH?= =?utf-8?B?emtaVG55VVBDejMwNUwyNDdVcXhYV2pndjBCZ2NXa2RhenZGMzR1Mk1Dand1?= =?utf-8?B?NUxOWDJHWTM0Q1czKytpclZQNW9OMUpGMXY0K3doaGh2MU5kbzVSa1hPTXpx?= =?utf-8?B?T2ZzTEJzVnZmOVUxVnBuWStmdzQyN3NTMERLTlNNNk4wZW5ySjhNL1J6ZUJP?= =?utf-8?B?d1ZiMDhFVE01Y1NraHZTcWJJSGk4SnZVSHhVOUR0eWJKTmhDUmlTc2IzSmFS?= =?utf-8?Q?lWvGb/QxTDtXa+12W+Kwy0T5Z?= X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: 380e98cf-c04a-4b55-97df-08dafb18e0de X-MS-Exchange-CrossTenant-AuthSource: BY5PR12MB4130.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Jan 2023 19:02:29.8379 (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: lRfLm8VIZACacozC0zjjXmyEEQBMxUlfifMNIar0m3et4WTKRJAAMmAd9a4v8HgHLftCtG4gyGff1CCRp1Wb9w== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH3PR12MB8533 X-Rspamd-Server: rspam05 X-Rspamd-Queue-Id: 6BE2820024 X-Stat-Signature: 7d4ib73fqfzhno8efbfdisc5kraiw746 X-Rspam-User: X-HE-Tag: 1674241355-177578 X-HE-Meta: U2FsdGVkX19KRjOuEL9sKjtr/RrhmTK+zEVAR+v8yck3OUpp5RSAm6Q8BfpDOrOAfkXoyYERe1jihcLXfSUsL4+FFf5gfDzJJq5qOoFZz3j42hYgR5g2H+WyoZi+XS9jh3vxpJ7n1S11XnEOza0x5SE0Fl1RnrNyHuaMjZ5a8oiYH06qgW9iPllO1dDA/BJ5dQQe+XJa3G/Wt4JS9Fs1cQpnl2vIwjZep18XXpj0N5WCUBjoknVkI2OBktwveXPmF7AplCnE+oOyDCIAgcGSliw7QfduFiTviwyfYNbuiurHBTbyjhEdcATtN+/6Mga4zuj6CKwlojP4tQwdxbsMppnCU4BCsU+swb/Sjt/1GOb15MPX6SxGyxisXw9aHrTIqMY3JXTBFRRd2aRNjd5WF2g48kbftYnmqqW1RlNHL1Ewlycvc+1Nd70MRLHDUYETLNwjj1+l+99QmXtMhnaY/ogH9xCMtYqa8VHGGAZswhVaZSURkA2L2peUtHXdkUR/9ZjHjdWmsUrVsTW2MZSpylaS4ZFGNdlFPfYJcw3fuuce8NO2XDLQ5EfqURHBF2nMos9I/Mvy2WFwfu5+P4N/x0tQ/P/iDcwx6CeULV1kIy0xHNpb4L5gdUmGai31hO3r5ZA3Ont54tCKgKVeT78C4BThBYIy8K9zAfXSRhTc4XPkqJopl87i81L4zGWe67zFDRisDcC3j7fvXboKOKyMz8iTIHaUiZ8NlGM7nSx4kiKkRHKXejJ+vP6fGAYOSQAHoaILVvpYPNXobwBVaGnEKp6V4MJ3VBh0AlC/pD6oR3FDBBREJC9fNsKRNc7et/0jnOwwQcY0aQIrkRiWpd9a3qcp5Jx/a3GispIximnRPbn5/GjGchiELzeQON4/5TJyjYnyeP18L+722xeIRDGKtsCxKN0ZjseM9UVn2E+gJ/DAhLbgPuO2c8eLCYTiQWUZgICsER+LVFAlQLcIJsX pd4zFweJ ERa9YXk4yDcv0r2/2cRZt/zeAbrMYqpLWD8EwmtWm8lDYSO3ZAdDsYlhqt1UB9lPekZdtcEO6NE8Tf0/yfHDSVHsajvlTQTUT2Y41KHmrvSvkk8VxHyPLrpNvWOPz0+Hs9bsDcbI2U7JS0eOEybSJt8Fds/IY5JUhpsJKtAmZmv5GWFCvkJrE8KiMFAdQT/qba1dWaBlRSz4AatevNPzgfilYmadAitl/Y9wv1kOZ1tpcR9SYmRMNSwoNABWCy57MTZFmaqOFW2GjUtNOPki6eOlP0SWeOeEtyDPcN/lNofWVt4qzO2/BxyCk2eyzBij8vdSalVsyHIEWh6Y= 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 1/17/23 07:58, Jason Gunthorpe wrote: > Setting FOLL_UNLOCK allows GUP to lock/unlock the mmap lock on its own. It > is a more explicit replacement for locked != NULL. This clears the way for > passing in locked = 1, without intending that the lock can be unlocked. > > Set the flag in all cases where it is used, eg locked is present in the > external interface or locked is used internally with locked = 0. > > Signed-off-by: Jason Gunthorpe > --- > include/linux/mm.h | 1 + > mm/gup.c | 31 +++++++++++++++++++------------ > 2 files changed, 20 insertions(+), 12 deletions(-) > > diff --git a/include/linux/mm.h b/include/linux/mm.h > index f3f196e4d66d6f..7496a5c8acede1 100644 > --- a/include/linux/mm.h > +++ b/include/linux/mm.h > @@ -3089,6 +3089,7 @@ struct page *follow_page(struct vm_area_struct *vma, unsigned long address, > #define FOLL_FAST_ONLY 0x80000 /* gup_fast: prevent fall-back to slow gup */ > #define FOLL_PCI_P2PDMA 0x100000 /* allow returning PCI P2PDMA pages */ > #define FOLL_INTERRUPTIBLE 0x200000 /* allow interrupts from generic signals */ > +#define FOLL_UNLOCK 0x400000 /* allow unlocking the mmap lock */ Looks good. Admin note: that this will conflict with commit b5054174ac7c ("mm: move FOLL_* defs to mm_types.h), which is in mm-stable. Because the FOLL_* items were moved. Reviewed-by: John Hubbard thanks, -- John Hubbard NVIDIA > > /* > * FOLL_PIN and FOLL_LONGTERM may be used in various combinations with each > diff --git a/mm/gup.c b/mm/gup.c > index d203e268793b9c..4c360fb05cf3e4 100644 > --- a/mm/gup.c > +++ b/mm/gup.c > @@ -896,7 +896,7 @@ static int faultin_page(struct vm_area_struct *vma, > fault_flags |= FAULT_FLAG_WRITE; > if (*flags & FOLL_REMOTE) > fault_flags |= FAULT_FLAG_REMOTE; > - if (locked) { > + if (*flags & FOLL_UNLOCK) { > fault_flags |= FAULT_FLAG_ALLOW_RETRY | FAULT_FLAG_KILLABLE; > /* > * FAULT_FLAG_INTERRUPTIBLE is opt-in. GUP callers must set > @@ -1379,9 +1379,11 @@ static __always_inline long __get_user_pages_locked(struct mm_struct *mm, > for (;;) { > ret = __get_user_pages(mm, start, nr_pages, flags, pages, > vmas, locked); > - if (!locked) > + if (!(flags & FOLL_UNLOCK)) { > /* VM_FAULT_RETRY couldn't trigger, bypass */ > - return ret; > + pages_done = ret; > + break; > + } > > /* VM_FAULT_RETRY or VM_FAULT_COMPLETED cannot return errors */ > if (!*locked) { > @@ -2106,12 +2108,20 @@ static bool is_valid_gup_args(struct page **pages, struct vm_area_struct **vmas, > * interfaces: > * - FOLL_PIN/FOLL_TRIED/FOLL_FAST_ONLY is internal only > * - FOLL_REMOTE is internal only and used on follow_page() > + * - FOLL_UNLOCK is internal only and used if locked is !NULL > */ > - if (WARN_ON_ONCE(gup_flags & (FOLL_PIN | FOLL_TRIED | > + if (WARN_ON_ONCE(gup_flags & (FOLL_PIN | FOLL_TRIED | FOLL_UNLOCK | > FOLL_REMOTE | FOLL_FAST_ONLY))) > return false; > > gup_flags |= to_set; > + if (locked) { > + /* At the external interface locked must be set */ > + if (WARN_ON_ONCE(*locked != 1)) > + return false; > + > + gup_flags |= FOLL_UNLOCK; > + } > > /* FOLL_GET and FOLL_PIN are mutually exclusive. */ > if (WARN_ON_ONCE((gup_flags & (FOLL_PIN | FOLL_GET)) == > @@ -2126,10 +2136,6 @@ static bool is_valid_gup_args(struct page **pages, struct vm_area_struct **vmas, > if (WARN_ON_ONCE((gup_flags & (FOLL_GET | FOLL_PIN)) && !pages)) > return false; > > - /* At the external interface locked must be set */ > - if (WARN_ON_ONCE(locked && *locked != 1)) > - return false; > - > /* We want to allow the pgmap to be hot-unplugged at all times */ > if (WARN_ON_ONCE((gup_flags & FOLL_LONGTERM) && > (gup_flags & FOLL_PCI_P2PDMA))) > @@ -2139,7 +2145,7 @@ static bool is_valid_gup_args(struct page **pages, struct vm_area_struct **vmas, > * Can't use VMAs with locked, as locked allows GUP to unlock > * which invalidates the vmas array > */ > - if (WARN_ON_ONCE(vmas && locked)) > + if (WARN_ON_ONCE(vmas && (gup_flags & FOLL_UNLOCK))) > return false; > > *gup_flags_p = gup_flags; > @@ -2279,7 +2285,8 @@ long get_user_pages_unlocked(unsigned long start, unsigned long nr_pages, > { > int locked = 0; > > - if (!is_valid_gup_args(pages, NULL, NULL, &gup_flags, FOLL_TOUCH)) > + if (!is_valid_gup_args(pages, NULL, NULL, &gup_flags, > + FOLL_TOUCH | FOLL_UNLOCK)) > return -EINVAL; > > return __get_user_pages_locked(current->mm, start, nr_pages, pages, > @@ -2967,7 +2974,7 @@ static int internal_get_user_pages_fast(unsigned long start, > pages += nr_pinned; > ret = __gup_longterm_locked(current->mm, start, nr_pages - nr_pinned, > pages, NULL, &locked, > - gup_flags | FOLL_TOUCH); > + gup_flags | FOLL_TOUCH | FOLL_UNLOCK); > if (ret < 0) { > /* > * The caller has to unpin the pages we already pinned so > @@ -3194,7 +3201,7 @@ long pin_user_pages_unlocked(unsigned long start, unsigned long nr_pages, > int locked = 0; > > if (!is_valid_gup_args(pages, NULL, NULL, &gup_flags, > - FOLL_PIN | FOLL_TOUCH)) > + FOLL_PIN | FOLL_TOUCH | FOLL_UNLOCK)) > return 0; > > return __gup_longterm_locked(current->mm, start, nr_pages, pages, NULL,