From nobody Sat Feb 7 22:21:30 2026 Received: from mx0a-00069f02.pphosted.com (mx0a-00069f02.pphosted.com [205.220.165.32]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id AB73E2E7BDE for ; Thu, 22 Jan 2026 13:02:55 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=205.220.165.32 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769086977; cv=fail; b=lGT9xGl8fsFpyHnMgQ+p+wSTAeYBAYy0bIu6ARJeEFQfcprHLF9FyWuimXnnwX+hbU0vBU9xw0BZ0SSRAWpqdofa/JTGIWd6lhD8+uLCmAvKYTnpg6Umh6xGLykCLJOOf4j+9Z2lpddeD31mEWItC9jFSlC1tsrm2xDJis4F2l8= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769086977; c=relaxed/simple; bh=ETBP3J6YG6Dsky6u2FevYlTUhOhXu/E0l0sBNN1uFak=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=bOzkVl8fSzBv4RbVppDuHrMQ6b+WbPlC176ss+3kT0yM8JOmx5N4myBuBR0CfVpXVrA9/9Tv9HukOA9vHjT0uZFAL//gj0eCvGzYsiMA6I7tHoOGhnivjPKUUziUEZzcde7ByLeTnjE9aRCuKgrjrN2r0JPW0PgEwlm4jEUSeyo= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oracle.com; spf=pass smtp.mailfrom=oracle.com; dkim=pass (2048-bit key) header.d=oracle.com header.i=@oracle.com header.b=Xa1W/CKx; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=K9SczQB3; arc=fail smtp.client-ip=205.220.165.32 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oracle.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oracle.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=oracle.com header.i=@oracle.com header.b="Xa1W/CKx"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="K9SczQB3" Received: from pps.filterd (m0246617.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 60M0wk5w3031717; Thu, 22 Jan 2026 13:02:09 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=cc :content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s= corp-2025-04-25; bh=HIMLuVVTSi12AhCgxMX/1m2syQDYlw08cP3yXSHaXxU=; b= Xa1W/CKxDIyOFWtMTjLJqvfBmuHjP9U5fHtmIJXw6BhPGkSQAO7SBkl11K7jURnz Xx2PbAY0NpFJ63JbFvCAlQCBftKqVjM2Z2R4MH3iCn6HJO+ISnDK3prh+IFj1PaL seGgTefZ/4jKBTCfyavT5TKeawq7cF6F1QUStQ6J5G9ZHGxfrMXglHpe5mDAA7D1 CRr/da+RLZXZJvEMS+ZiM8InkxQkh3i8MShPgFZH5eVUM2DPFxkY3E/E7EfR95ml ujpUshHkNuc/oDwyDH0ZeN/+6KOziSyY2XNKzuzqlFk9nGMruGI1KYsXZm74kNhQ h46Rso1gW/htm3wEN3ECEw== Received: from iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta02.appoci.oracle.com [147.154.18.20]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 4br2ypyjfe-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Thu, 22 Jan 2026 13:02:08 +0000 (GMT) Received: from pps.filterd (iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (8.18.1.2/8.18.1.2) with ESMTP id 60MCQMpK032121; Thu, 22 Jan 2026 13:02:07 GMT Received: from ch1pr05cu001.outbound.protection.outlook.com (mail-northcentralusazon11010040.outbound.protection.outlook.com [52.101.193.40]) by iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 4br0vgkfup-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Thu, 22 Jan 2026 13:02:07 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=VjnSQYiCPHB4aHEzswQBl60CP1G49+9HXNT6p1+6djLfIwLZRryHjXmm+BVcM5yWObxGSv3e5EZrx7uPCT3+cphEX6m/NNqlLPP1FqqgglKQOCDe/FPuK+uj2VwCKijE6bjpZjzojDPX3vsX1PJjFbJsxW1Qbl9p3jOzNQWRrLE0oZhe6atJIUoYVjjzCAORX1r9eDZOwCT9Bkv1LLjb+xPtk7f+q4nYGOx7j5UjRWL3LeL8I5DNTDV3gxzip4Nes7dPR8XOm8sdJOeSmlDfhQCEtJDgSW2dkYzbC9pydBuUUIosLggH9LpMnXGNRStCfS3hov/Fx2b289DdxdpQ9g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=HIMLuVVTSi12AhCgxMX/1m2syQDYlw08cP3yXSHaXxU=; b=E06nKOTAj7eb7QQSgp/16elhQmxpNaUSN06pz8VBoNVqQyIq5zQgcTCOwFREshD1L7biyjAdeJBJX5HmaLWzNcyOMVqtKeNj08Slz6/vp+klAgtytcm3XH9Sk+goNbvbeyA/jjFcKJ7aEyAZ+hg2BmlUtvP7juGCbQ9O80jOeAMqaYB7Gm4KHM8NIzO+Lf2a8uZ2eiT99EWqSIkve3Kr7Km4TPFIChIM0dlxVIYCl+tw11j5b9pjbU7RSVsbvsQcxvGVNFpJEGXiuNJwYagbCVL1M94++UE9q0K2WM/An5s/Sx5Qrbs9P5FwcuDWlovzPJrfdNbpab3RE9S6Aypg5Q== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oracle.com; dmarc=pass action=none header.from=oracle.com; dkim=pass header.d=oracle.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.onmicrosoft.com; s=selector2-oracle-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=HIMLuVVTSi12AhCgxMX/1m2syQDYlw08cP3yXSHaXxU=; b=K9SczQB3h/XhfbRkeLQpg+GZqpzf0/Q7u3ovqCVy0Z9A/aI77Pw2QcHXEu3Gan8OA7NTWVPv0T79hoAzxwvXuY8wFixCjK4ZFa0APsunNdtvtsWyw+J9+n1t8Tsr/zYIjVHbhherpixKcjDuc6VMRgmolMvYMRjnUqfymJIXBoQ= Received: from BL4PR10MB8229.namprd10.prod.outlook.com (2603:10b6:208:4e6::14) by PH7PR10MB6529.namprd10.prod.outlook.com (2603:10b6:510:200::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9542.11; Thu, 22 Jan 2026 13:02:03 +0000 Received: from BL4PR10MB8229.namprd10.prod.outlook.com ([fe80::552b:16d2:af:c582]) by BL4PR10MB8229.namprd10.prod.outlook.com ([fe80::552b:16d2:af:c582%6]) with mapi id 15.20.9520.005; Thu, 22 Jan 2026 13:02:03 +0000 From: Lorenzo Stoakes To: Andrew Morton Cc: David Hildenbrand , "Liam R . Howlett" , Vlastimil Babka , Mike Rapoport , Suren Baghdasaryan , Michal Hocko , Shakeel Butt , Jann Horn , linux-mm@kvack.org, linux-kernel@vger.kernel.org, linux-rt-devel@lists.linux.dev, Peter Zijlstra , Ingo Molnar , Will Deacon , Boqun Feng , Waiman Long , Sebastian Andrzej Siewior , Clark Williams , Steven Rostedt Subject: [PATCH RESEND v3 01/10] mm/vma: rename VMA_LOCK_OFFSET to VM_REFCNT_EXCLUDE_READERS_FLAG Date: Thu, 22 Jan 2026 13:01:53 +0000 Message-ID: X-Mailer: git-send-email 2.52.0 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: LO6P123CA0016.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:313::6) To BL4PR10MB8229.namprd10.prod.outlook.com (2603:10b6:208:4e6::14) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BL4PR10MB8229:EE_|PH7PR10MB6529:EE_ X-MS-Office365-Filtering-Correlation-Id: ce8e70c6-22b3-44b9-fbf9-08de59b67047 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|376014|7416014|366016; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?XmndNR1c7ngI9UhCvSUMgAQ4xuh2U2vjLB+VdMhxLLTXbrTplSQN0crMtt5J?= =?us-ascii?Q?nvkeGkBe1Qp2ZxCusdJjqz2/dxMxUe8ztg/W/VeHw35q/DobZNaIBDXwOEhB?= =?us-ascii?Q?+icmm/SHbPtFGkjNy4Z6INsY2D/xVrz3kNPnrkDnmbA+HnAjW9vvBItNfl6b?= =?us-ascii?Q?mKyFYhC75aJYMaOSnMyDx3s1f94qRhmoACIqq2/A9a2b3GqB5HjWeI02a4Qt?= =?us-ascii?Q?w2LCgqPYbOM/N/piFYPn2PrhEbv2h/p79Gy8/vjuEmRpgH/JB0tntLoFUJ+S?= =?us-ascii?Q?PUp2DRI6OXqFpRM08Cuu4GV33P3T+rzfuLRehVCshTKxKnwWNTRyMs+PD3ZS?= =?us-ascii?Q?2G7YcL15kg4LVicRI0LRZa4YpKkV0iOxM0E96Fsbuqjc42R7j4zFRheU9ZAd?= =?us-ascii?Q?a6/NJK9cOtAeA7KvnTTA2lT0XgZQi90E9dmnLYDwXvSf9HbY5ahOB6QW/2n2?= =?us-ascii?Q?LqFew1nmoZOUpmrCYVSM8Dfa8Mg1uKYVmHihQg6q5mtP1GUpVrLl7jGAWiSt?= =?us-ascii?Q?UpcKj7G/HuAtvf2ENePEfCZCNo9L9mwubQdiihk8R0Nr61MFnC47kB35/+gc?= =?us-ascii?Q?5jJ85aUUq2ZojwINYAqZU2PaIUUHYQw6urj4B7MpmoasEEFefiHeOaR11xFT?= =?us-ascii?Q?img8565Olq6P0QykdLPGf9HcNgT62aIsqAd/+AL5fjmQ6EaN1CdiUD2HybM1?= =?us-ascii?Q?SPIDPKpWO05XDCSlBeCJU8rhC1KYFZuaC4/i5Yny3Aoc8Gd4rnAUyZyEbRRH?= =?us-ascii?Q?BUBHR3dY2ej2eF6MUKBVLHhTM134Ihk7CmvvA2nDmIOkTB8plEY6yLP1Gtf0?= =?us-ascii?Q?sqE1J2WT9G5auUkop7es9i5Nx9HLEV937ThNj2mqUPCXkSxhwXUSbSxT7lf2?= =?us-ascii?Q?a1Y9E3wQ1BZoY3vv2+pjpu+8tgRZeD7X5BxiZ1PpwzQHgGQxzHwyXyMrWmu4?= =?us-ascii?Q?WScbRZqovg53nOVziR/HDM5iDqfXK+kEomyekGyt42LIZy8KPzIe6ZHuILRr?= =?us-ascii?Q?qVCRoVXamjQdawAK1K6PQv1hjNxitMxZtFp/fY5QvX+kPJxqMqd8+KblXczC?= =?us-ascii?Q?7oAjJQ5mQ4qDVFe8FRvlpxqI3ae3ia6Dy++puD7tdwxR+LhlC853FJIjTvZI?= =?us-ascii?Q?OZlqPCkdQ5GzmJq2rK2HMqyt1tcD1R0rFzCPtSQmlbh03npGtOQr/iaudJRm?= =?us-ascii?Q?gQRQOmChSb1PZJEbh4hRlsWxYxnnK3ZNuCiXQGSdyQ0wSXKIoaAjTENFFVY5?= =?us-ascii?Q?G8PWtDfEdnIzN+hXcIjzsozs9S59eWaJcKvRHtdPJWvK+rC4Km6duRJDVVjh?= =?us-ascii?Q?9HgabKN8IoXM8lKEr9FKi7CCWkoH6AFIk7qt0yB6yz1YvwHCacBtDaXNN02f?= =?us-ascii?Q?S4yG0s/a4hwWnCDaGamfp9moWdvI8GWEh+pysZzcLH9t1dP7dB2pBLNVuU9e?= =?us-ascii?Q?z2f7VSgkihI+1X13MdyW3a5c05fyrMWyEVc7X9GCOOe7JYtuJ4mtCHAbU6J8?= =?us-ascii?Q?Yx+wVLrtryPvTeMqHA23/Gye1kf5XMOWJRPkYAx7qxy2jAJNkB/+5DurrHrK?= =?us-ascii?Q?RxQuUK3w35IO5unFbEo=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BL4PR10MB8229.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(376014)(7416014)(366016);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?6XBIjyZztCS+pgtHKdWcZucKUWTwT1CZHaUIujdoxyPF++6StiXn/ILFJaUg?= =?us-ascii?Q?Qp2HOh/qSt+LvSKuvQ5FelUZdrk6SGts0lpo+JgE7W425Y5ToZTjo2ZR+SoX?= =?us-ascii?Q?3A1aEysCgbyXI2NEeuY522bXzVINJCa3JLsfC5Re7a88RhFe03YQqEi9LOQw?= =?us-ascii?Q?C7gJpu6U/H9YyiUOCI4aeAmMGrosKqZ99xu9D/MbVdbhHNlWsKwr5EzOQhJH?= =?us-ascii?Q?hukk+DvfQWTD3JZawwFdvxwl5YiHQFwf89s3nOl664JQDYC1SRQd6qTt78lB?= =?us-ascii?Q?YFs4CnZgOaUHqH+Iqs9Q7gzBsN4XwnIOh6uFVrOuMHfQj9B/OFSmRYmNlVGO?= =?us-ascii?Q?8ZYNpSYwU3VY41GzriWYK5MhVb3/9sFkT6wtNhcwBrkN3UPGkad6tCa+/gT6?= =?us-ascii?Q?cn76qo1IJTklqBAl7YiVtby1Zp4A3HgaivNlywBy+rwKXlQsC6xe1SuhsOeT?= =?us-ascii?Q?hazG7xczVHntFL3cKUD9ThNXvXrPslDF94YAXSUNdEb8w1yvd9VLqc722Dke?= =?us-ascii?Q?FY0dJ5qE25i6JBU31f+MuL7vlts+U3cwo86XVDo3y0vSzpSG6jFccH3DZ8re?= =?us-ascii?Q?3z19S2+ipwSTAYA8bsnByOW3z3gsguFVJi3N182duq74canB3RCtZGU2ELJf?= =?us-ascii?Q?wFVTrBxY0mwGUqbk7yGqst79Tucwhv9bc6Nj7zr/Z/owImNHTgYDJk+tx2fh?= =?us-ascii?Q?nJbBG6oZws8Y1Mc8HQZiD7oWORtbIg+REjZ7q+YE7TWkPmQjVehIo9N2X99Z?= =?us-ascii?Q?Pc8fRLCdpI6tjSHnPfyTtg1wCtC0+W/Zb+ZwelDC40+/IgvCuF+a8vWI+azd?= =?us-ascii?Q?mRao2NwQNyYTT6rCParj1aRC3a8ONwMFlsX+wuhRMQu84nLpF6d1BmnPayap?= =?us-ascii?Q?t7azzFqcyCTdG1FLaqbWCeN3q2T9INZxyEiilKgrltlMaQxiOdXUnekllNgx?= =?us-ascii?Q?P2Q1MHsmtXJi/3v1BHDgbRnsPpY0Wj6ZQ02MZ8BYPLAIl4uh3fZOCf9gsdJH?= =?us-ascii?Q?gpnDLNs2gwTWhC+PYBuXL5VPId4D72kNl4OTVbZ2mmXeMTb7NAnyhJYW2StV?= =?us-ascii?Q?lyQRsW/JzS0HreTuuzUbhnKPGPl2kJNYx8z+hBBn75W3KsLPCGbriE3b6+YO?= =?us-ascii?Q?P5W45aUi1w5XwRvMEZ7P1g0gzcqs7rLqVQDS9RibEzlQFRQ+wKTkTUooCBxb?= =?us-ascii?Q?XBWSpjoaGeN/CYkoc7VMVg4yksr/UhQA7Ts5PMfPhMljX0DKpIRPp1P2Be2X?= =?us-ascii?Q?NG/puJbnwfvOaK9qwLLHBlcv9uEuPsf7imXURYAjKYEhrpvYrT+XNBpMVLAP?= =?us-ascii?Q?JWTpEgk5b5Pox3eXZhV73Gq+dwRhY6jhlIwt+aujCYkvFrHTYplQmI3/ZUD6?= =?us-ascii?Q?QmFA0o7onsE1lLg4Xsc7lPRIOG15ehCS75TMgYOLVI1NB03ZDROXZWBv7FNY?= =?us-ascii?Q?HgYy730xCm4mFNKM5s9Ku2nD5SE3/NaWoupmhh2WXaXlHh7Xubnidl4q8lY8?= =?us-ascii?Q?TWDBjbyfwjsBM4r5k8OE7oVXqXV6UVTNfijU94b+3rAiyHTrrYPAdMeaSf5v?= =?us-ascii?Q?+i4lA4vmOzyy7nwbQMwwlOGJ0PRMXDZBRyxj9jK/3JFCpTGDhHtriWX9tWBE?= =?us-ascii?Q?IjCaDWuOOQ7STFKNzbF2a+pcqLAwU9St0qVYBBkauMGXsdsQ7xIZUYxrQ8Bl?= =?us-ascii?Q?YFt8GgPd0s/T3Zm2hC3kFgGlKBsJhGzwfxAd6nBgpu5/Nhq0gGM8GLw/oTmC?= =?us-ascii?Q?lnbyrM445rlt1FSbUSI2Ix8+8OfEd3M=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: TRpzp9A9S20uglKXMpEc0s93jUzWd/Sk8tsDAg+/RGlfJTXDSO3TNbqI1JVf79R0qO56vfJUiiM9fJed5wAO3qJ0kgoD62l+9bpH8iK7EdogpIjZNhRXVzSymVLeefpXm3zKwMPSZuUJivEeo9WPU5B/7drmmAMupVw6h9UnYoBZ50e4GhJlht33SmCHp05ITHlo7r7BaKwza9XJKEz/kLvu//cKgJ5nZztkP3M0WCYR+8CDlaELGLyKHKQj5ezOjZTwNUlKXjrRvfc8Cw9tHlDXOn4N1cphbtNo/WwKMQLJJ1d863tpuNRFR+ENx2r2lLS+JZ2G8AhehmlCUcvjE0YZK5LEE4SM1QMyMVMVUlF3EXoi/FZumXysPwWjJoXcW8K4jLKNOiPrkuUzL261NTDv6JbUJ3mb7+SsUB5BwB5l8j75Eut0Q+zJ7SxFGPWjj2v8bwB8nIcuT0pwPi8VdFOKg1x6QB1ODoKl0aEVt8uBpagAUY8THIF6t/yD+04S28Zj3ZVRkYbPbjG4DgY+oo5KS9PMgwURTchJ6AO86ylQ/ts9UdQeXYFCih3ydor3Gy+FbxqRAu6thi995qqSQJyFFKbu2CwUI0Tg4lSe88c= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: ce8e70c6-22b3-44b9-fbf9-08de59b67047 X-MS-Exchange-CrossTenant-AuthSource: BL4PR10MB8229.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Jan 2026 13:02:03.7009 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 4e2c6054-71cb-48f1-bd6c-3a9705aca71b X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: sd+6G0rZA1CGs8K9c6vYVv3Guq6UdWJjsNtbiXl3Dt0bcbMfdTI4re1GhlDqF+1iO5c/37uOo5p+AYPch51vpGVnAjoVxd7XfnOBKUpKB+w= X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR10MB6529 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.20,FMLib:17.12.100.49 definitions=2026-01-22_01,2026-01-22_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 malwarescore=0 bulkscore=0 adultscore=0 spamscore=0 phishscore=0 mlxscore=0 mlxlogscore=999 suspectscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2601150000 definitions=main-2601220097 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMTIyMDA5NiBTYWx0ZWRfXxAbaao2gftzj StVd2p1FKfkzOFGMrBJVKTGnPyWBC34eEdLV4M2X2eSBdkEOFlXCBd+pneOVQZ6JQJAz5J+qVsw 3PK/2F+r5elw6F+yIjK6/nsWFteEOfBvptYe8O6PHtlS5QguySvKVZ4/lvoCFsvf7AZoTdLXWqm kM6uhLN4v0ktycjVq+x96ricQT8JkMsH1ynn2hWZJjmfRISeZPWMw2hiu7XmesVcs/HUaJoO/dd jp/XsAFevmCsSmYIYq1nVgx9gVL/S4foNJgXLKPxS/xbUSV4WnRm0HnQkG4EWUXMKGfLpL9kgqq fI/rUKdTf6fjXpA7hWop/hlWudmVNjVdF4fTsIxpSSeQcXPE9YMSrlK9fpLaw8AzxfbFkjcCZPx 8QRBHX7WeAk0eKIbBAXxX6P6ZPfYXYSl3UCaStkNO7LGHvO0NV7OLh5ismlDcsqKgM5uEAXISBv PPU3KJp7BjY3qHz0vqHRgcMhX+hzbAOqhNOqmrs0= X-Authority-Analysis: v=2.4 cv=de6NHHXe c=1 sm=1 tr=0 ts=69721fd0 b=1 cx=c_pps a=e1sVV491RgrpLwSTMOnk8w==:117 a=e1sVV491RgrpLwSTMOnk8w==:17 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=z/mQ4Ysz8XfWz/Q5cLBRGdckG28=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=xqWC_Br6kY4A:10 a=vUbySO9Y5rIA:10 a=GoEa3M9JfhUA:10 a=VkNPw1HP01LnGYTKEx00:22 a=yPCof4ZbAAAA:8 a=gAv80hG6EH1GC_EPz9AA:9 cc=ntf awl=host:13644 X-Proofpoint-ORIG-GUID: FhmXN2h0A7SrXvNkO0Ruy2T0WbtALHS4 X-Proofpoint-GUID: FhmXN2h0A7SrXvNkO0Ruy2T0WbtALHS4 Content-Type: text/plain; charset="utf-8" The VMA_LOCK_OFFSET value encodes a flag which vma->vm_refcnt is set to in order to indicate that a VMA is in the process of having VMA read-locks excluded in __vma_enter_locked() (that is, first checking if there are any VMA read locks held, and if there are, waiting on them to be released). This happens when a VMA write lock is being established, or a VMA is being marked detached and discovers that the VMA reference count is elevated due to read-locks temporarily elevating the reference count only to discover a VMA write lock is in place. The naming does not convey any of this, so rename VMA_LOCK_OFFSET to VM_REFCNT_EXCLUDE_READERS_FLAG (with a sensible new prefix to differentiate from the newly introduced VMA_*_BIT flags). Also rename VMA_REF_LIMIT to VM_REFCNT_LIMIT to make this consistent also. Update comments to reflect this. No functional change intended. Signed-off-by: Lorenzo Stoakes Reviewed-by: Suren Baghdasaryan Reviewed-by: Vlastimil Babka --- include/linux/mm_types.h | 17 +++++++++++++---- include/linux/mmap_lock.h | 14 ++++++++------ mm/mmap_lock.c | 17 ++++++++++------- 3 files changed, 31 insertions(+), 17 deletions(-) diff --git a/include/linux/mm_types.h b/include/linux/mm_types.h index 78950eb8926d..94de392ed3c5 100644 --- a/include/linux/mm_types.h +++ b/include/linux/mm_types.h @@ -752,8 +752,17 @@ static inline struct anon_vma_name *anon_vma_name_allo= c(const char *name) } #endif -#define VMA_LOCK_OFFSET 0x40000000 -#define VMA_REF_LIMIT (VMA_LOCK_OFFSET - 1) +/* + * WHile __vma_enter_locked() is working to ensure are no read-locks held = on a + * VMA (either while acquiring a VMA write lock or marking a VMA detached)= we + * set the VM_REFCNT_EXCLUDE_READERS_FLAG in vma->vm_refcnt to indiciate to + * vma_start_read() that the reference count should be left alone. + * + * Once the operation is complete, this value is subtracted from vma->vm_r= efcnt. + */ +#define VM_REFCNT_EXCLUDE_READERS_BIT (30) +#define VM_REFCNT_EXCLUDE_READERS_FLAG (1U << VM_REFCNT_EXCLUDE_READERS_BI= T) +#define VM_REFCNT_LIMIT (VM_REFCNT_EXCLUDE_READERS_FLAG - 1) struct vma_numab_state { /* @@ -935,10 +944,10 @@ struct vm_area_struct { /* * Can only be written (using WRITE_ONCE()) while holding both: * - mmap_lock (in write mode) - * - vm_refcnt bit at VMA_LOCK_OFFSET is set + * - vm_refcnt bit at VM_REFCNT_EXCLUDE_READERS_FLAG is set * Can be read reliably while holding one of: * - mmap_lock (in read or write mode) - * - vm_refcnt bit at VMA_LOCK_OFFSET is set or vm_refcnt > 1 + * - vm_refcnt bit at VM_REFCNT_EXCLUDE_READERS_BIT is set or vm_refcnt = > 1 * Can be read unreliably (using READ_ONCE()) for pessimistic bailout * while holding nothing (except RCU to keep the VMA struct allocated). * diff --git a/include/linux/mmap_lock.h b/include/linux/mmap_lock.h index b50416fbba20..5acbd4ba1b52 100644 --- a/include/linux/mmap_lock.h +++ b/include/linux/mmap_lock.h @@ -125,12 +125,14 @@ static inline void vma_lock_init(struct vm_area_struc= t *vma, bool reset_refcnt) static inline bool is_vma_writer_only(int refcnt) { /* - * With a writer and no readers, refcnt is VMA_LOCK_OFFSET if the vma - * is detached and (VMA_LOCK_OFFSET + 1) if it is attached. Waiting on - * a detached vma happens only in vma_mark_detached() and is a rare - * case, therefore most of the time there will be no unnecessary wakeup. + * With a writer and no readers, refcnt is VM_REFCNT_EXCLUDE_READERS_FLAG + * if the vma is detached and (VM_REFCNT_EXCLUDE_READERS_FLAG + 1) if it = is + * attached. Waiting on a detached vma happens only in + * vma_mark_detached() and is a rare case, therefore most of the time + * there will be no unnecessary wakeup. */ - return (refcnt & VMA_LOCK_OFFSET) && refcnt <=3D VMA_LOCK_OFFSET + 1; + return (refcnt & VM_REFCNT_EXCLUDE_READERS_FLAG) && + refcnt <=3D VM_REFCNT_EXCLUDE_READERS_FLAG + 1; } static inline void vma_refcount_put(struct vm_area_struct *vma) @@ -159,7 +161,7 @@ static inline bool vma_start_read_locked_nested(struct = vm_area_struct *vma, int mmap_assert_locked(vma->vm_mm); if (unlikely(!__refcount_inc_not_zero_limited_acquire(&vma->vm_refcnt, &o= ldcnt, - VMA_REF_LIMIT))) + VM_REFCNT_LIMIT))) return false; rwsem_acquire_read(&vma->vmlock_dep_map, 0, 1, _RET_IP_); diff --git a/mm/mmap_lock.c b/mm/mmap_lock.c index 7421b7ea8001..1d23b48552e9 100644 --- a/mm/mmap_lock.c +++ b/mm/mmap_lock.c @@ -54,7 +54,7 @@ static inline int __vma_enter_locked(struct vm_area_struc= t *vma, bool detaching, int state) { int err; - unsigned int tgt_refcnt =3D VMA_LOCK_OFFSET; + unsigned int tgt_refcnt =3D VM_REFCNT_EXCLUDE_READERS_FLAG; mmap_assert_write_locked(vma->vm_mm); @@ -66,7 +66,7 @@ static inline int __vma_enter_locked(struct vm_area_struc= t *vma, * If vma is detached then only vma_mark_attached() can raise the * vm_refcnt. mmap_write_lock prevents racing with vma_mark_attached(). */ - if (!refcount_add_not_zero(VMA_LOCK_OFFSET, &vma->vm_refcnt)) + if (!refcount_add_not_zero(VM_REFCNT_EXCLUDE_READERS_FLAG, &vma->vm_refcn= t)) return 0; rwsem_acquire(&vma->vmlock_dep_map, 0, 0, _RET_IP_); @@ -74,7 +74,7 @@ static inline int __vma_enter_locked(struct vm_area_struc= t *vma, refcount_read(&vma->vm_refcnt) =3D=3D tgt_refcnt, state); if (err) { - if (refcount_sub_and_test(VMA_LOCK_OFFSET, &vma->vm_refcnt)) { + if (refcount_sub_and_test(VM_REFCNT_EXCLUDE_READERS_FLAG, &vma->vm_refcn= t)) { /* * The wait failed, but the last reader went away * as well. Tell the caller the VMA is detached. @@ -92,7 +92,8 @@ static inline int __vma_enter_locked(struct vm_area_struc= t *vma, static inline void __vma_exit_locked(struct vm_area_struct *vma, bool *det= ached) { - *detached =3D refcount_sub_and_test(VMA_LOCK_OFFSET, &vma->vm_refcnt); + *detached =3D refcount_sub_and_test(VM_REFCNT_EXCLUDE_READERS_FLAG, + &vma->vm_refcnt); rwsem_release(&vma->vmlock_dep_map, _RET_IP_); } @@ -180,13 +181,15 @@ static inline struct vm_area_struct *vma_start_read(s= truct mm_struct *mm, } /* - * If VMA_LOCK_OFFSET is set, __refcount_inc_not_zero_limited_acquire() - * will fail because VMA_REF_LIMIT is less than VMA_LOCK_OFFSET. + * If VM_REFCNT_EXCLUDE_READERS_FLAG is set, + * __refcount_inc_not_zero_limited_acquire() will fail because + * VM_REFCNT_LIMIT is less than VM_REFCNT_EXCLUDE_READERS_FLAG. + * * Acquire fence is required here to avoid reordering against later * vm_lock_seq check and checks inside lock_vma_under_rcu(). */ if (unlikely(!__refcount_inc_not_zero_limited_acquire(&vma->vm_refcnt, &o= ldcnt, - VMA_REF_LIMIT))) { + VM_REFCNT_LIMIT))) { /* return EAGAIN if vma got detached from under us */ vma =3D oldcnt ? NULL : ERR_PTR(-EAGAIN); goto err; -- 2.52.0 From nobody Sat Feb 7 22:21:30 2026 Received: from mx0a-00069f02.pphosted.com (mx0a-00069f02.pphosted.com [205.220.165.32]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 93FDB2D8DD6 for ; Thu, 22 Jan 2026 13:03:13 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=205.220.165.32 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769086995; cv=fail; b=fsYDtlNU7IGi1clyG0XU7t2X9ZUkeXGIz0csSoXDlPP/KveXZOpYpSaeNCcWp1OMPnD9iyury8FVdPfpmtYgvRBvjl3jKmojUWrx0RfJ7ZnDAIS/hh725eo6CNUbg4QK1VStqZL02U+6pVJ0l57qvAh3HP0E7c/RU9IF4BQs9iY= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769086995; c=relaxed/simple; bh=Y3VudCKazJZkdzC3LNz9X0i9vVMcximK12kqlHezwhg=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=elQkJSeHP2HJ3FleLnrjz33GeZE5C2DN/88mv/G6hRbWQ4Dv31HmzOWFYZeZkCwf6XvzX5pB2XzZMh8UzEYDg7gKmuzOHV7hp+pNoul0BYe+SyebotfZhSGPts1XhK32AWgFVDUHWbYFJLyQLc5ssXhTfCUiSdY86AjNTJps3fU= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oracle.com; spf=pass smtp.mailfrom=oracle.com; dkim=pass (2048-bit key) header.d=oracle.com header.i=@oracle.com header.b=Aqxjwwhx; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=vVfmzLw1; arc=fail smtp.client-ip=205.220.165.32 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oracle.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oracle.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=oracle.com header.i=@oracle.com header.b="Aqxjwwhx"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="vVfmzLw1" Received: from pps.filterd (m0246627.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 60M0SXKN3028845; Thu, 22 Jan 2026 13:02:10 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=cc :content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s= corp-2025-04-25; bh=7RBkACBSpdvuYCPvlFWkQvgehMBAdoRwLW0QOdffuZY=; b= Aqxjwwhx9NgdV5sBA0wA6WPMuqZC/lwk5uYD6wlG96gXv1bM/xnCFL6I0Qk0C68l xbtYEIzb58JUSrIGxeFWo1R5Xxw/jOpQnkxH/ONK1Q6SIEql4O+KaESKFWyi7tJq ym/uo5pmeJcgg8lez2KPYMqoeQ0GHyN1/Tmey7T6jgjhK01r2o5PVxO0tO1dQIa+ 1p209ykg09n98ijvN0MXbtQsMkR+xdVqV/jXE5U5WsxjEh6OYHXQ/JEV9eUMJ0Ii 2JGw5ouVtBnZ6CMcy9akft/IkNAhhKqkarq8lOdYLhrOEJpzUzMcsq+WKnBoisvo N1Ppzqq9uLCFkme3xSwD1g== Received: from iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta01.appoci.oracle.com [130.35.100.223]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 4br10vynqp-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Thu, 22 Jan 2026 13:02:09 +0000 (GMT) Received: from pps.filterd (iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (8.18.1.2/8.18.1.2) with ESMTP id 60MC52mP022610; Thu, 22 Jan 2026 13:02:08 GMT Received: from dm5pr21cu001.outbound.protection.outlook.com (mail-centralusazon11011051.outbound.protection.outlook.com [52.101.62.51]) by iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 4br0vgjnvd-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Thu, 22 Jan 2026 13:02:08 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=azkGDkoM8DWcPuwGpG8ZFUded77pdBWdppH+tdSL+jnrmJ4WPRwClkrD3w3FISygm/99Jt7jL16gKMEJ0xc/BdAs9qFh3rKtIzAAZZtlvgZa0Dd6fDc4TVWqcXow9rEwSn6WRHCZMVTe8nQNRw4SqhW7IhNIJ3l1ITd1WrVgSY0itWfi8HdN3pB5EcJA/AokFxjIt4plyYg0Wxsz8OKLc+AnbVFn2Hs0UCyW0WY5drcb0tCs4ZMEwubM3c0z9s7FhOLn6Op/ZmSUwyJNIZdetyfUuMP3MHWY3WIegemj3wBJdfU0yOMY5Xuk2otFdt9voWo82USMgLBc8Xi0nD2a1w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=7RBkACBSpdvuYCPvlFWkQvgehMBAdoRwLW0QOdffuZY=; b=IjjZl0SG66IFL0q9j1USJdEBpMKTk5N5OIpOFOq9ziTBDwjxoE64JrtuM0ISiBRHYkqwz3cAz473pOhfST8qDi2ZlOHDeY96nW+PVOGeyNmfVjRPWZajn4poWnYJqbh3A9fxhqjGsS6EcyeTHFo7BGJXTyKn0E4o2N0/WwYgdicGxORTL1KdqMGn+R3kYXXciabM6zMrTcSzcbhdw4AzwEH48ikdilNa7C6ZKX3d1AyB7JoWxGN7WLNpTq304K2vYXN6BQWX60kQEOo7qZ0xExYgzkRiAR5C0+VMDxwncBGob1MNFHhE3T29P9nfX2zxrrK4eRuQfjT6pGs5k6VB+g== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oracle.com; dmarc=pass action=none header.from=oracle.com; dkim=pass header.d=oracle.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.onmicrosoft.com; s=selector2-oracle-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=7RBkACBSpdvuYCPvlFWkQvgehMBAdoRwLW0QOdffuZY=; b=vVfmzLw1NiPjVNdcKZRXTjP4PG/hgqWe7LUqulaVBO6U1zed4C4pChJjjb/i29ygOGxxQCws1l8+ckhTV3NyKFs3MB7Qh4xW76fOJ3anOxpfj/wrLXYJmWRdfKtksygZn03iAAk5roj0vEoHGmmFAOZIVZfnxP7nz6mdIgJXXRU= Received: from BL4PR10MB8229.namprd10.prod.outlook.com (2603:10b6:208:4e6::14) by BLAPR10MB4883.namprd10.prod.outlook.com (2603:10b6:208:334::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9542.11; Thu, 22 Jan 2026 13:02:05 +0000 Received: from BL4PR10MB8229.namprd10.prod.outlook.com ([fe80::552b:16d2:af:c582]) by BL4PR10MB8229.namprd10.prod.outlook.com ([fe80::552b:16d2:af:c582%6]) with mapi id 15.20.9520.005; Thu, 22 Jan 2026 13:02:05 +0000 From: Lorenzo Stoakes To: Andrew Morton Cc: David Hildenbrand , "Liam R . Howlett" , Vlastimil Babka , Mike Rapoport , Suren Baghdasaryan , Michal Hocko , Shakeel Butt , Jann Horn , linux-mm@kvack.org, linux-kernel@vger.kernel.org, linux-rt-devel@lists.linux.dev, Peter Zijlstra , Ingo Molnar , Will Deacon , Boqun Feng , Waiman Long , Sebastian Andrzej Siewior , Clark Williams , Steven Rostedt Subject: [PATCH RESEND v3 02/10] mm/vma: document possible vma->vm_refcnt values and reference comment Date: Thu, 22 Jan 2026 13:01:54 +0000 Message-ID: X-Mailer: git-send-email 2.52.0 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: LO2P123CA0001.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:a6::13) To BL4PR10MB8229.namprd10.prod.outlook.com (2603:10b6:208:4e6::14) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BL4PR10MB8229:EE_|BLAPR10MB4883:EE_ X-MS-Office365-Filtering-Correlation-Id: 6738896d-43f0-4440-2edf-08de59b6718a X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|1800799024|376014|7416014; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?F2B9q4xK9cJJkkQChRLieB8aHxFIpoG3gyeR8g8S5oX6PFHN8Ri7jXlnx7GX?= =?us-ascii?Q?ztNO1c6ZG0fXA3t4wOZOG/xVO44ptgLVS/SvExIkIMjYakLePsofp+NXVADX?= =?us-ascii?Q?ubvPRkqKidFqPfeIdk+HskaG0u5sVeLkNJkuni9Wee5U/MBO4Wmpm7nfFu+I?= =?us-ascii?Q?4WVGH57GvMUK8zTLbgBMYopotQZ5BLfToj57xGIN2X7zxMmGnJMT3Zvzknrs?= =?us-ascii?Q?Pgn4gEffZlFanaKT2cg2rxl261GjBxQs5JLuayAFXkdHVLqBK+PiC+SSqrTy?= =?us-ascii?Q?JMJBhozuxQ5TbGShya5IorEb4DNXbCu/tFii46hfefXaaQB0SEDT3oM2ZFwI?= =?us-ascii?Q?bgE2fQmwotVluZmTj/rySN1KqU9ti7mVFzAO9bFuUgpTKDBtKpaGb1FBHn0y?= =?us-ascii?Q?H4vytAVXbP8Kdq4YFpC4sWpKmMJU5X36NoM19vLDixrML+rV8dd3CrAfL/60?= =?us-ascii?Q?J/BFTUnK8B1POQMEH7LB5GOAAAM3gK0TqudGm0ENe3eBdRa36sir/7HgD/CR?= =?us-ascii?Q?oF22ARmnKH4NdbgQASMYzI2bWPKPtEx1zkCS8k17ZH1p0Tdzv/IdzkOkc+aq?= =?us-ascii?Q?UJDV3VO0jpEdHufnWt1KauEpC/JqV/99QCVzOL0c32aPHWBEWXh34aMSWFeX?= =?us-ascii?Q?sb5j+SC2LPikz+X2XB165Pky+00mXOpsHOKq0GeoYg7PtVUtw7hv5Qe6j0Fn?= =?us-ascii?Q?DrP2o/Xgspp+0fdA9uAuH79lXfcKZ8+OeCaPjvvB2zevfUZaAqVPDd4y4vWn?= =?us-ascii?Q?n2kVNpy85tUnezJyR6MMEUgeYbCSLWqijvnht2I5SKZWic9Faw9Ujr39J7/j?= =?us-ascii?Q?UQzgzvvcus2SExGHKgoXb1+VTevFxdRUyvygLJq1PifsHuDfyS4Id75k5D9i?= =?us-ascii?Q?4cNrLkln9ErWEH8+wh3/CrCXkq6hAO7U1gor6abEcw9sMZAdcjpZg0ZhPUX1?= =?us-ascii?Q?pNQxBWoVfPGgYLm1eJnT0u7fT35E4rViWKHKxI6ZyadCWW2vtMB9Dx1Q+q5M?= =?us-ascii?Q?ApubdVpG/CK2FjVL6x5F4HNNMyr1lqudSG8NkxHA1rAc/yNxCIfiqV2lnpiW?= =?us-ascii?Q?YUuGPYRNrON5SPFu+0QwGP4UBrCtzJ+5QrJ8Ek6Mxte3XSqcwMgYFICeZJEX?= =?us-ascii?Q?/XPgiuAMIRKge9auqGaSkksTFKEZGmo7DxNtrp7Q7u5/17xVzpEpeu3djf6h?= =?us-ascii?Q?5f8olqNoPbt5YHpeF/gDNz5zaUkidOJz33uqsphi2ymdRedL1I8Duop4d0UI?= =?us-ascii?Q?zAPIbqJTBBFIjCuXO366lDbBmuua/AJD5srsnytM3TcltvVQ0qI5GdaH3d9m?= =?us-ascii?Q?ife766DBpXwH0XW2DxiqOqvWjcs2pJFnayJoHUVy6N1nFJc3mH9pK2RTCqa4?= =?us-ascii?Q?uWwZpmgFokq3fX5YArBWPicmEKiPGi3TT6tJsIrgSlOZmAg+2PQQgI6MseHQ?= =?us-ascii?Q?aJLxcb77zKAQtrwPwbkmjRBuovUjKQ+4W5HdKscZQ7MUlTs10CHCKl8K+VQ5?= =?us-ascii?Q?X2GXAQFqODa8epZXzcp8tvHKp1e8n3N9T+VaizlEsQme53ZY+XuvDplPD1YQ?= =?us-ascii?Q?RwxRioDfZiE+52ytW0U=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BL4PR10MB8229.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(1800799024)(376014)(7416014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?IjOXgSL/EPsDNLkEdn4uSYwVH8VOaDZxJw5p+4VwmnpUXcpu8UPF1qMO4b5v?= =?us-ascii?Q?lqZJFBpfVwQF221hcY9Ml7Ju4W/+btGFE5fZhngFSvxHTCixIQ7brA0PiEtd?= =?us-ascii?Q?qKYA0kQDwVscq17DJUHQYJB12Hlibbxd/dCyTTBHOSY8Ee5gnzXYg7nVM6T9?= =?us-ascii?Q?7C9z/2y5WLiBqSVl/0xDupMINyAg1ygy254gnQFrVAmqAm6AH6Pt2c9nyOpa?= =?us-ascii?Q?bMZcV/tKQ+o1SM8LvENYrZ7ypFM/f2UJtUnya4Er/5wRVxPPILzEKH5Tbczb?= =?us-ascii?Q?cItip7WsuS0k2k7S5iHI3fNdKOnPglGbJCLh7o16Ax/cjr6w1QfDwDkx6FcU?= =?us-ascii?Q?M6+rKNkLTEoYokSBR8zw9FiH8dZIQ6uj3ka2wJfIutmfaVMcZdm+Bs8eYTnN?= =?us-ascii?Q?5T422defqxxSgS0g1BDgSkovdVucLKImVXl9DNHEepxUl9FqG9+NfeXiYChY?= =?us-ascii?Q?GcC+bdL0jDG5Rt5A9vBZF/xNr395Zq0XU5oFM/0BDel0IR8E5e6xqsSwyG3m?= =?us-ascii?Q?HHOqgun2fGifQ+4eBXWuMQE9vdTs+QDlzEQtio0P966eiCyhKrIgWzf5QH4Q?= =?us-ascii?Q?c1BpfMhiSzPmSu+zREX+5c6Gzo8Kiivp2+HOAVpGY8brSVmS7+JPOJ9Tw4kI?= =?us-ascii?Q?g91utgWmgDTgK6RMBJtO0jQRQyqV0AgukX4OIffn/Ee+dkI2FdSpSP7IRz5f?= =?us-ascii?Q?DIHeeHgmh5ZafVSKPvPlFhox8LP+CN8vRQLjpqwHHUQ4z8MKcobbj3zvVGWk?= =?us-ascii?Q?mXpX2NQJWy+gMQpYr1VRTGbFF++UOYsG8s9vfSohxTGQm0SZqyXpZR0eOH9Q?= =?us-ascii?Q?6vtZlg5Lb1InT/LB3YukR1Jh0jdPd61mOa6EQqCxaUbaUVxKRnvCkGQ9tUTU?= =?us-ascii?Q?/f50yC4oFrDoGhZIXnGiI5Wjrc3y+nTYAmhgFw1PbDBFXxyTtVdw3lzpxHhQ?= =?us-ascii?Q?mMlcynkNKPH/ikcczCMO5+mbZAfzS0kBF2xWqj7D1UY1pUyLnMCUDzI5VgaW?= =?us-ascii?Q?n6CPCy+QiQe+lpu2A5s9s7u0BIckiaQAUdL09Momcqm1/Zf0lbG17/0uTubz?= =?us-ascii?Q?XiqBA2eyZJpFD/ngZ+WVUPHlhbdZqXqI1bGGgE5gh54QYwPlBlTmUOrfxbeD?= =?us-ascii?Q?hQ4loRyG7av0Nt/OHeD7IoAAEe4GqIKzi7XIsc/EfaIFvdeMtbS+pQdGV6PI?= =?us-ascii?Q?GdiuTlLJMoQ1fLoiX5UkU4JgTw/bWHWm+OWquUbp7Jg+Lnz/1SNU0C6iUQoN?= =?us-ascii?Q?JEhzmpv78DIi05R8kEYA9+bbeh/Hm1bII3ZUtLLZnyONgN8Hd09DbWU9rLU0?= =?us-ascii?Q?UN6Ofe8W2gHnaiIuBVDIlMGq0/kkQebjxeKZ2e776hldvyPYMzt+4CvcyNbn?= =?us-ascii?Q?wl9b5SwB1VaFAfhcPDj9y5fcAIAj28F5qd9uaCD6KlEUblzAPqKh4iA5tcM7?= =?us-ascii?Q?UyVa+l+UohN5Tb+fc6CW+bMkImTC30iR5NzHSLMx24TOnwLIJKvC2J+6VMTK?= =?us-ascii?Q?lsY/wPtXwORFctl4ZrfNgnr9k5QPrYRnMGfGqLeOSVzTFqqjOa5g2BRssIvj?= =?us-ascii?Q?FtWgVXIDkogpOQccbSCmuJOsE3N3VNnE/bSp07WRC5WDtyi73tNET6M7T6dE?= =?us-ascii?Q?GiNIwh7cPJGE56nrfu1jaotRP6atQ+vT5rWV3seFzLHFOTFTmJjRR6ivfysL?= =?us-ascii?Q?+V1kKf1gFtS/WsNUfJeeYTmYrsPBvg8CYdH6njZawyk0ImjjjRH+7H+JazSV?= =?us-ascii?Q?Zh1nt2MJWeJtgZxremlpuZylGwIcgjo=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: ya3Uxhxdrww+AhXEPxH/XHxnP/MRVJ6zU6TtrQUt0n/nglU0T3tsvqw+p0haBn43Np0pKGm5jLekqtstaeqbP1uc4DJ4250F+dvDAVo/o+GyOzpOfdZTlEha902way2en0wx6fF8Qe9z4RizEaE6EEkUvB+kcTXJvxfRb2l+iApR2R6PaBfSp0Cy2Qrz3sImQWxNgZVpEZ+h5tFLg44mxieksBGbYltShii80T4HwjGLC5I98uk+pJdIuubKVrdxNV/Myo/8DqKiwUrj1YNOObwLqPVErGCrLGJYOPEAkHp+ifm27NZ2oPnIYcicykwW2RzYchl5idC0YQcxZZCmT9ioJd0Rdd5Ogrv7r6k5hUveNWWu27OO0qFxuIgdbYd5PrWLhAWp4cwmtzPKeRNwNo+zTHt6Y8HuoDtwapr5lW1VBQXDRm5w49JPJHeenzDwPonDiepaKbEjJtNuGzznkzwfue/CEwzHvCrQUuxQtHiLhFs1mx4bajoNpRxXHEvf0Ym0V5phsj5QDYsaA1CV9Z580/S46Ur7XM84dwNbgq8OixI+U1pE8QXivyCvxzq1fi41W5e0m0ZTRhRaDraBc0vTd/zGYaVWDT+rTz6O6wY= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 6738896d-43f0-4440-2edf-08de59b6718a X-MS-Exchange-CrossTenant-AuthSource: BL4PR10MB8229.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Jan 2026 13:02:05.7833 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 4e2c6054-71cb-48f1-bd6c-3a9705aca71b X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: kC49dEypxjnBLaCJt2b18XGS4+ZFvpjLRh601O+yUJcJlDCf/c5QPUMu1H+xOzPeXkKRngPx0josjhlwTAmB1ft7dgkQe1H9C9fIJQSi3rc= X-MS-Exchange-Transport-CrossTenantHeadersStamped: BLAPR10MB4883 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.20,FMLib:17.12.100.49 definitions=2026-01-22_01,2026-01-22_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 spamscore=0 adultscore=0 bulkscore=0 phishscore=0 mlxlogscore=999 mlxscore=0 malwarescore=0 suspectscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2601150000 definitions=main-2601220097 X-Authority-Analysis: v=2.4 cv=H4nWAuYi c=1 sm=1 tr=0 ts=69721fd1 b=1 cx=c_pps a=zPCbziy225d3KhSqZt3L1A==:117 a=zPCbziy225d3KhSqZt3L1A==:17 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=z/mQ4Ysz8XfWz/Q5cLBRGdckG28=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=xqWC_Br6kY4A:10 a=vUbySO9Y5rIA:10 a=GoEa3M9JfhUA:10 a=VkNPw1HP01LnGYTKEx00:22 a=yPCof4ZbAAAA:8 a=px5gXGW_QSS6PAkXjB8A:9 cc=ntf awl=host:12103 X-Proofpoint-GUID: t2uOjZzRd1LHl4JOAW71lsUm_AXN5bXX X-Proofpoint-ORIG-GUID: t2uOjZzRd1LHl4JOAW71lsUm_AXN5bXX X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMTIyMDA5NiBTYWx0ZWRfX503/btu6FzuO JK7pAWSahL1afwlTdZQI9AI33ExtR49P2P372f74Z4466d8wWccdUu21tfGqfS4ReCQIgjPDMnf POXJXw7eYWAywGLRLgZDfcgQPXLeglt6xfXgwqeQNS8H6gWo1dahcRUWempqQb5/TFFctkk3Ias Jsi4xzgOzV8zFboAL9xrtDPAADKlr8luzupKWxzQw+0mXEc8MtHIUqm6Gyz8Vxd2B1eQvDcqTdP JPm9P8ZTvPRmQrXFDwgpGZRIB+DLB5p55KCp0EDlmKMXjbSojgEtYZDciudwxGkI4V5omrOmGYD gVXscId+I1onSLkQ8GcLGLCmIy8H7BMJthlLr9KOp2EhpKCQUiaDoQIonECUX6VwteBn7zDTgqc WdocdQI81s4zNY/ix2WlvDJVlLjjDhk9rJd5LOU2Zm1+vTHr7VsTDTCbDgDkvv/rnfpBbxCtLlk JCaK/n+WaoYF9LYs+vAYtvX+TGjR+wulaKm9bArU= Content-Type: text/plain; charset="utf-8" The possible vma->vm_refcnt values are confusing and vague, explain in detail what these can be in a comment describing the vma->vm_refcnt field and reference this comment in various places that read/write this field. No functional change intended. Signed-off-by: Lorenzo Stoakes --- include/linux/mm_types.h | 39 +++++++++++++++++++++++++++++++++++++-- include/linux/mmap_lock.h | 7 +++++++ mm/mmap_lock.c | 6 ++++++ 3 files changed, 50 insertions(+), 2 deletions(-) diff --git a/include/linux/mm_types.h b/include/linux/mm_types.h index 94de392ed3c5..e5ee66f84d9a 100644 --- a/include/linux/mm_types.h +++ b/include/linux/mm_types.h @@ -758,7 +758,8 @@ static inline struct anon_vma_name *anon_vma_name_alloc= (const char *name) * set the VM_REFCNT_EXCLUDE_READERS_FLAG in vma->vm_refcnt to indiciate to * vma_start_read() that the reference count should be left alone. * - * Once the operation is complete, this value is subtracted from vma->vm_r= efcnt. + * See the comment describing vm_refcnt in vm_area_struct for details as to + * which values the VMA reference count can be. */ #define VM_REFCNT_EXCLUDE_READERS_BIT (30) #define VM_REFCNT_EXCLUDE_READERS_FLAG (1U << VM_REFCNT_EXCLUDE_READERS_BI= T) @@ -989,7 +990,41 @@ struct vm_area_struct { struct vma_numab_state *numab_state; /* NUMA Balancing state */ #endif #ifdef CONFIG_PER_VMA_LOCK - /* Unstable RCU readers are allowed to read this. */ + /* + * Used to keep track of the number of references taken by VMA read or + * write locks. May have the VM_REFCNT_EXCLUDE_READERS_FLAG set + * indicating that a thread has entered __vma_enter_locked() and is + * waiting on any outstanding read locks to exit. + * + * This value can be equal to: + * + * 0 - Detached. + * + * 1 - Unlocked or write-locked. + * + * >1, < VM_REFCNT_EXCLUDE_READERS_FLAG - Read-locked or (unlikely) + * write-locked with other threads having temporarily incremented the + * reference count prior to determining it is write-locked and + * decrementing it again. + * + * VM_REFCNT_EXCLUDE_READERS_FLAG - Detached, pending + * __vma_exit_locked() completion which will decrement the reference + * count to zero. IMPORTANT - at this stage no further readers can + * increment the reference count. It can only be reduced. + * + * VM_REFCNT_EXCLUDE_READERS_FLAG + 1 - Either an attached VMA pending + * __vma_exit_locked() completion which will decrement the reference + * count to one, OR a detached VMA waiting on a single spurious reader + * to decrement reference count. IMPORTANT - as above, no further + * readers can increment the reference count. + * + * > VM_REFCNT_EXCLUDE_READERS_FLAG + 1 - VMA is waiting on readers, + * whether it is attempting to acquire a write lock or attempting to + * detach. IMPORTANT - as above, no ruther readers can increment the + * reference count. + * + * NOTE: Unstable RCU readers are allowed to read this. + */ refcount_t vm_refcnt ____cacheline_aligned_in_smp; #ifdef CONFIG_DEBUG_LOCK_ALLOC struct lockdep_map vmlock_dep_map; diff --git a/include/linux/mmap_lock.h b/include/linux/mmap_lock.h index 5acbd4ba1b52..a764439d0276 100644 --- a/include/linux/mmap_lock.h +++ b/include/linux/mmap_lock.h @@ -130,6 +130,9 @@ static inline bool is_vma_writer_only(int refcnt) * attached. Waiting on a detached vma happens only in * vma_mark_detached() and is a rare case, therefore most of the time * there will be no unnecessary wakeup. + * + * See the comment describing the vm_area_struct->vm_refcnt field for + * details of possible refcnt values. */ return (refcnt & VM_REFCNT_EXCLUDE_READERS_FLAG) && refcnt <=3D VM_REFCNT_EXCLUDE_READERS_FLAG + 1; @@ -249,6 +252,10 @@ static inline void vma_assert_locked(struct vm_area_st= ruct *vma) { unsigned int mm_lock_seq; + /* + * See the comment describing the vm_area_struct->vm_refcnt field for + * details of possible refcnt values. + */ VM_BUG_ON_VMA(refcount_read(&vma->vm_refcnt) <=3D 1 && !__is_vma_write_locked(vma, &mm_lock_seq), vma); } diff --git a/mm/mmap_lock.c b/mm/mmap_lock.c index 1d23b48552e9..75dc098aea14 100644 --- a/mm/mmap_lock.c +++ b/mm/mmap_lock.c @@ -65,6 +65,9 @@ static inline int __vma_enter_locked(struct vm_area_struc= t *vma, /* * If vma is detached then only vma_mark_attached() can raise the * vm_refcnt. mmap_write_lock prevents racing with vma_mark_attached(). + * + * See the comment describing the vm_area_struct->vm_refcnt field for + * details of possible refcnt values. */ if (!refcount_add_not_zero(VM_REFCNT_EXCLUDE_READERS_FLAG, &vma->vm_refcn= t)) return 0; @@ -137,6 +140,9 @@ void vma_mark_detached(struct vm_area_struct *vma) * before they check vm_lock_seq, realize the vma is locked and drop * back the vm_refcnt. That is a narrow window for observing a raised * vm_refcnt. + * + * See the comment describing the vm_area_struct->vm_refcnt field for + * details of possible refcnt values. */ if (unlikely(!refcount_dec_and_test(&vma->vm_refcnt))) { /* Wait until vma is detached with no readers. */ -- 2.52.0 From nobody Sat Feb 7 22:21:30 2026 Received: from mx0b-00069f02.pphosted.com (mx0b-00069f02.pphosted.com [205.220.177.32]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 7C9E32E1F08 for ; Thu, 22 Jan 2026 13:03:43 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=205.220.177.32 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769087025; cv=fail; b=eGZdMRhaquNIuN7zRmcG8barB342cF3ZKq+9nmntWxbDA7nbcJLQlNZYedFzPpwYxttYv33g8bgV1qqGJ8s5x4KlyPcGfuu3c/AxalJCTIBMh68jQVXToj0B2L7B+eXhjZpihButJImwx3npsCAqaI9Cxq1A5INsDjXyK2bmbMw= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769087025; c=relaxed/simple; bh=/Bb6MVMs7/hgiLo0aJMm1hXdulu3wPf2rnIAIqvrtkA=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=RLmoMca9GwtSBxp8kOX1KBHwZMj4hG2VewklJmgOkPTzvJryWxWXCrA5WohPnbo6eQIsm3+LyqMMcBqTp4NcnL1XAdUpVzZjGjN+2tnG8LebCkPcQSY733yVNBTMikkqNQFJiMoybqJUSc1YSmPyFCoW6aJml+Ou9xH5XKKB1Nc= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oracle.com; spf=pass smtp.mailfrom=oracle.com; dkim=pass (2048-bit key) header.d=oracle.com header.i=@oracle.com header.b=UfU6ZJhD; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=FYLodfA3; arc=fail smtp.client-ip=205.220.177.32 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oracle.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oracle.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=oracle.com header.i=@oracle.com header.b="UfU6ZJhD"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="FYLodfA3" Received: from pps.filterd (m0246632.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 60MBFZUa3523773; Thu, 22 Jan 2026 13:02:14 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=cc :content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s= corp-2025-04-25; bh=yy0BJd+j2CMRhYrJIQz2+9BlqjIfVO6MZl1p7+ODLG0=; b= UfU6ZJhDtO8LNQ+kbU14koK/FDjMoCgDNjEP+puFhUUBZfISjBxml/iTPI0egU3L KRGA5Y6OyJarWvI6QKl2y8QdVl6J0+pZNpsPMfT7DU9mQvDTRK266WWZOv2WsVMV TuUnG+nCa/xZNuXCAjB8nCnpSGh8sNPOK+w2p0mixZIRvwjw4Iu71Vbu/roluCdj Vtj331ITfQ9omQGnVZiSzLtWIJLYGSnIz4D+kfTIXil5zL+4qteaFNy5c50NvCS7 uFhYJZimHvbFH0KztCyf/Z9vCWPCOcoZw7SF/vb78lt3WkN5BK6c5SQIcWWAESzN VmUaCb9zeWH6mZhdKKYYGQ== Received: from iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta02.appoci.oracle.com [147.154.18.20]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 4br21qfucd-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Thu, 22 Jan 2026 13:02:14 +0000 (GMT) Received: from pps.filterd (iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (8.18.1.2/8.18.1.2) with ESMTP id 60MC3PN9032149; Thu, 22 Jan 2026 13:02:13 GMT Received: from ch4pr04cu002.outbound.protection.outlook.com (mail-northcentralusazon11013023.outbound.protection.outlook.com [40.107.201.23]) by iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 4br0vgkfyc-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Thu, 22 Jan 2026 13:02:13 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=EycyoFdgBB27zqm6rrltuvtVqcVQVa8nsa7HowcOLgqL+8H0M50WLIvg6LKfEpeuR4MvwmSiiV32ZLKJ94s6GQmpILloigHkYLCAXhMqRZxm+I+GZKJUHBcZ8bXrHWAg6KQJ0gajH12G7jDm5TL0Xxju9tRDePyB9izZFjAq2XdATOvKkbVcarT93TIybYBMWaj8d2ZU/bziR48FJEwG1W6BWjoOll1BsVVrE3/D1pGX08TK78YQ+fDTQ4ppTr1HOZHvbswwd0AQok64b8C9rzha0dX8NmkLN9v1x8pL6EOs9m/nZCErgyQ1UtnDCQBhv1xN1S5uDji/D8jHAQf+Eg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=yy0BJd+j2CMRhYrJIQz2+9BlqjIfVO6MZl1p7+ODLG0=; b=dTQPIDsMj51ddtDV1nB4kL7eM9q+WZFrGCs7Szy9Pu2dld61ldfvvnJ4bP3EmQ0XQDeawrDMXTgg9PZp2CFkekPisg++Tg8Jmc27FE/lqFF2QWSE55D5VTFabI/htb4VJt9p6DZhz06ULoixjzlTQBA6ngKd0c/0LSJxudeUYuI5k4aTaNhz9e5+cRsYqmAlLwxOgl262Boo3iDhMfJetlHic4voutrWaCb9erIBlPSc8ojJKzEH+DrKWIZax5wLPuGUfDqpV5gmDI5T+5sDqpqT12kwz8OwcVc3KYJeTwkSIOAo7pJFTtIeIoleh/YlDPxIdUHGb7KmuMAi9/P6uQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oracle.com; dmarc=pass action=none header.from=oracle.com; dkim=pass header.d=oracle.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.onmicrosoft.com; s=selector2-oracle-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=yy0BJd+j2CMRhYrJIQz2+9BlqjIfVO6MZl1p7+ODLG0=; b=FYLodfA3ZBN3kS56ebkNh9h4hpdFr2L8FXmYsPmqyl6OH9C5VWc+Cpg9cgKz2rFvBVf5ZmqUu+GulXdMjo6QoV3/es/JMlVPhXwm4nejANtia+58KDUz+4d0RtRGk8eX9hDMR6GdLO7CwxoNuGYxoHPXavTB5yjehNA9aD8Z9lA= Received: from BL4PR10MB8229.namprd10.prod.outlook.com (2603:10b6:208:4e6::14) by DS0PR10MB8198.namprd10.prod.outlook.com (2603:10b6:8:1f4::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9542.9; Thu, 22 Jan 2026 13:02:08 +0000 Received: from BL4PR10MB8229.namprd10.prod.outlook.com ([fe80::552b:16d2:af:c582]) by BL4PR10MB8229.namprd10.prod.outlook.com ([fe80::552b:16d2:af:c582%6]) with mapi id 15.20.9520.005; Thu, 22 Jan 2026 13:02:08 +0000 From: Lorenzo Stoakes To: Andrew Morton Cc: David Hildenbrand , "Liam R . Howlett" , Vlastimil Babka , Mike Rapoport , Suren Baghdasaryan , Michal Hocko , Shakeel Butt , Jann Horn , linux-mm@kvack.org, linux-kernel@vger.kernel.org, linux-rt-devel@lists.linux.dev, Peter Zijlstra , Ingo Molnar , Will Deacon , Boqun Feng , Waiman Long , Sebastian Andrzej Siewior , Clark Williams , Steven Rostedt Subject: [PATCH RESEND v3 03/10] mm/vma: rename is_vma_write_only(), separate out shared refcount put Date: Thu, 22 Jan 2026 13:01:55 +0000 Message-ID: X-Mailer: git-send-email 2.52.0 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: LO4P302CA0001.GBRP302.PROD.OUTLOOK.COM (2603:10a6:600:2c2::6) To BL4PR10MB8229.namprd10.prod.outlook.com (2603:10b6:208:4e6::14) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BL4PR10MB8229:EE_|DS0PR10MB8198:EE_ X-MS-Office365-Filtering-Correlation-Id: 3e41ec6b-fb21-4972-5b51-08de59b672dc X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|7416014|1800799024|366016; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?lxR2ZBwkD886pQJzLBLCa7zuggEMabd5wKpw6C/vccvIH0CLSTcHIpaQQV5i?= =?us-ascii?Q?zf2iNl40fg5yZh+gDApssfYzt/KVbhpDITXfnBVKl0BdoGsHebZhFO4kOate?= =?us-ascii?Q?yFd4caX55EYgsM5KRN/06aMvT3bi3NzSQAj5JvacGLU9ODffHEcVDMF5BdpT?= =?us-ascii?Q?OrvDT53guhy5oCpyFSWUcjk1Zxya13VFD/UBa2C0s5uFxr7whHJQR9lvq5OI?= =?us-ascii?Q?tVwqbO+lpNvdISb6r1K5iuNUvQpf/QuF2EpAi3r8m8zE9AYk2kaksuOOqEWl?= =?us-ascii?Q?6jcBYHk/W6WE6XGYd2atQGskXORKgg4vbA5JBUQvTkrAy8pJDXMy2MASSQi8?= =?us-ascii?Q?TMBDJrkWJfNqjdqX6De8rypC+5ac7yn3d1vTVKU856ADELUphgmPSJCLQEtD?= =?us-ascii?Q?UaF3ONKjVQV4OomAfi/CBYYKC6jiDvW+tAgFaYAppzDM9qxENZ5F3B4KmGGu?= =?us-ascii?Q?p0ucV/bHL7ezq4/BmEtt31m26nIg0grt7SCwXpfLN0RN32v5EtkBr9Bd2dQD?= =?us-ascii?Q?q8p3s5F4qVRM51YnzkXlnBywvsfX0O4L2DwuSIKYsKTesPWti9+sRBUEtnpC?= =?us-ascii?Q?RpHrBQ93TkBYfwKDy3SwIDSukiswjL8kQIWljEoGDc6GhV/Nnxe4JDHIbG1m?= =?us-ascii?Q?FQiPjXkrpImG0UuUoOCdF3wXZ1o2JgZlvfVVFJPWuLy3C9W+wTxPuf3OOgmi?= =?us-ascii?Q?pvy5AuszLY2ZLBwLfiMzV/qM947qdn0QdOY8N4JsEH3E6qBqDEj1deyE1Ywq?= =?us-ascii?Q?ZCDA0VCCrkEsnHNajqBROHl+tJHtOQPt423g/X0CGk7dxOzjNqJUOWc7Ecfy?= =?us-ascii?Q?IGxMz4BjcniDEaK8xHDZV+SxaS+3hkTs1R/OY+DWkP3QpuVXdJyu8mSCzmeY?= =?us-ascii?Q?MktokPxitnzP+aLGYGnC35p48LYADXqqhSoRDBP7gkD34gkELZkskqe89H3b?= =?us-ascii?Q?qpi4jCPWEj29F+qMTOHywGQhPN1S9Lkp12s1XunHcC8QcGvgNx3q9AwGv8K+?= =?us-ascii?Q?TOg1eA92guO5Jb8guzcx1P85Y03mYQu6wyVWRWtBsHpkd9AV2hUljsvz/I3F?= =?us-ascii?Q?QUcvp4cWKgntN2OV+GZuV8ijKR0mJb65ieuVcYQRFoBY8m13i16he4EvzDx3?= =?us-ascii?Q?b4H71/mpBHQ2gLTo/NAeT74XP3RuLWaEaoMRy3xnPWaIiBEs8faNPKULoXWu?= =?us-ascii?Q?KpZqMR+yn3d6hTaoj/jS/koJLpRD7wdlor/M892i493ieKJNYqJld4iQeINa?= =?us-ascii?Q?OAMHarjU68BfV/hXfH5HAGOTjcu5TP107C5Arz9m/c6Razr26RDZyX6Jg1iA?= =?us-ascii?Q?5C8BHMigRWnfh5PdXZNqyA0KoE+Lq8asd00psiZzzwROJxKUt+vULl+vD9qG?= =?us-ascii?Q?a+cbI1jDdwpZBSKKQBq6NUiATpnfEStqqDMPw9JgbpQH1QVUOCJ4XKpNRWK+?= =?us-ascii?Q?dooJ16iCb2tYgvuFgwDfQZugNbbytFFgtPa0EaN8w0/nFH9m/4OY5BEz9RVa?= =?us-ascii?Q?3hOzFtnwbESUDmSu0+hOehVNssJCMAsz+NaVwq1loJ4spjTWhxJylpPdtCwD?= =?us-ascii?Q?uGNukTtnPEXcRwoBAEc=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BL4PR10MB8229.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(7416014)(1800799024)(366016);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?aNrN36spr4Y+WJnQlR59584icuvaqBVfsWFkWffQ+JXeGku01OJMzIIi3/lF?= =?us-ascii?Q?i2LOvSRz7sC6KtxeJVMdC/qth18AXd6MM7LxuBfM2d239u8TnZJFb6sWai/V?= =?us-ascii?Q?WNZ66wetuWDh/tXeeCTJKsXQLVWwwbgOouzxXhrGXYvxUa9Lb79CygmgtR8h?= =?us-ascii?Q?AjVVvopvb4GWryNWZcv2zT1DTgxLcw4fQRYwtV6J4DcZ73+TkAE/0Vr8fldU?= =?us-ascii?Q?AMgZJw2IGyZchWSzYpjTXdqmXNfSPNTt/8Wpx1bx4d3hPy1jKbIqznzo7awW?= =?us-ascii?Q?RJKb4X1OdxRNd49l1QSvexFXXeJUDh8Peth6O6MGQsNzgkRtecjFoNH7oMIt?= =?us-ascii?Q?KevRsIsaBI9ZnrSQzIv5nU/GuGO7I9kEFXrD1boMl/qtPRjOJpJnsH0yGbN3?= =?us-ascii?Q?qvbYVKZG5nYffVDydohXKDLF6cLjypogTIQXeDisAxzH1w7RQfB8jQMInWQe?= =?us-ascii?Q?kHZ2aYbRvR5oBdkzsbGWjI7xXF/88iK/XDOPjNlw+fL8yN6rnVuaSNmcK+l6?= =?us-ascii?Q?MOtWguMbvlF0xbw+z/Jo+9YQdN7Z1VpStExl2T4rMfuZcZXnpeIR6lIU5lvk?= =?us-ascii?Q?bsBj2aB78orlGOfWs3Uz7eGcAl7Cg62UKnvdKcLQ3R8u3wA5TehVx2rYU4qm?= =?us-ascii?Q?ZzuLVKCLT3GHj6V8x8O7bsXYLBifkLRi4QB8rX1GNjm8XWCoQGlGm6LRIKRw?= =?us-ascii?Q?wCpVdQp2EMRSWKipjq3wY3wcLsTBxmTMfyFgh3VuwVYOSjFQ86KnXGGFj1yZ?= =?us-ascii?Q?sPa1cVZe+goIJcYteCh+/vx4yyBlIZYK9y7PSYbYLps7Z1uMhoI9Du+JYjVK?= =?us-ascii?Q?zLKJnDqmbst6SYFmqIcPON8at5lZD2s0Re42KDgINsxAe9wN8aJIiLYL8kkA?= =?us-ascii?Q?pCY2bpXlBFUKI0GzDG0/HvXmULD0QPpjW28S7n7gQHgxlgMcblRH7ZZvkm6t?= =?us-ascii?Q?fJJf4aW4oplhtFTrvDCHBQ7HbPeyoMChsJy/bJUne9T6D238+2onnf2JtNAH?= =?us-ascii?Q?VmKXDBp56yI+dsVi+/L99Xknk7/Qv3MJfNo5qbJBVbO70xovpGrb1RiNzoFs?= =?us-ascii?Q?pu8byzXmE1qRzj762r+xyyYhl+zTpNq/W11DHOoIG008xARSQ11XC3psyNKV?= =?us-ascii?Q?y3AxEtYs/zWX77yMTQv2azGvrIXWU6wHrTfRoCNYl1QjuNQ8QgPrqjngkaBX?= =?us-ascii?Q?DNeLw94vRkq84v6sZtJCETiD6xQavvtSOkn29AyAI/39jT5JlJqJWWnE+k0T?= =?us-ascii?Q?dzZKZBGHuSXsaLJ6guApijy1AC2/Ma8ZwaDo2z1FoQeEjn9414Ky3eYxf3yL?= =?us-ascii?Q?1Sl/fMgEKjYXZzbRNLZtX9UfjfApzV2bhJBAGqviyKseQnd2WLPkbA9tX+al?= =?us-ascii?Q?9LHcTtsUZLm0+mXmcZDG2BrxPyKRtQZO1AeZOhfiGNk2KkByPGuvvSCD6kyk?= =?us-ascii?Q?f31EfTztVPCgvVyQY+mEBWMK9924lL/o31Mu2qweC78iTV8SqfIK1EdsRUul?= =?us-ascii?Q?qDTaWifntICFQ6BNN/swdgmz6TmhTdJmLgMGSToQcmzmJGM+Y9ldjRo8t2gU?= =?us-ascii?Q?w7ohM9K4jbXJNFCbTgrSKg08WwUeDAczrxkGEbIcgILq3EkRPCPn+do+961X?= =?us-ascii?Q?iLWmUeA5vPKLr4yWGIgy66pmZwPOFXseS2W17ERsV3Z0Rwd+LfAT+jVB0gXE?= =?us-ascii?Q?UBtidpOoNQdbQf2qQEmiOZyq6C75NmwlPXgGooF/OazOiItQQwzWPDrTwf8W?= =?us-ascii?Q?4RdcLBYYOA6NdRw7fCQRf5t9+VeAY+E=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: NbyS5J+zuVixirVWEpDKNYSKB88Y4ajDeyXDKt8oh4bCbbyZrdvrZ69akU7j8T4IhBWfu190m2IwttDf5UgqXP/UZ+EA/LbKPT4V7I4jR9sjFUCjRvKdg+ZMmQwNrSW5LHPFxNc9J2P6jPb39yonXnn2uMh+Bn0A8AOBnmUqwigS5sD3JUtphWxjIzQZlYSObQBRA7+P2rJv+R/ZrOTZLMRMmydTHI33RN8I+HepXM+9Y/rI2xn5zHb1vmHeWEqVjqFWs9Uo8AKM+SXFJKk/0Z1VGPwTUKosRkL0QtS36ywuf5h43T+PQkDNjl0EzqKK9hPx4ln28q5uwLVaMAXV2VN0NRPA/1/B1MUj/fg3QJVavqpuVuMDUYqAjK3gaVDF8T8rTDnGPPYWY7LIn0VlzzYaqsfpagB1Fd2+Dtqfj7gY2LIRt+SUCb1xSqGGTuNdirjkVdwBnDPxcDI/nbsYC3bcSqpoUQ1TGOhUExG57QxaAe1XJqwospNosvac+0qrA1TrTg/RAClfSwuQRleT4y/SYTHZHN3PUDxKhWXx8i017Tc9biJFNuz2Lz8BhHwy1yhBpKvMgnU8n/Lhj59Fowpfqtw4atUZ4CiDfjW2rOQ= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 3e41ec6b-fb21-4972-5b51-08de59b672dc X-MS-Exchange-CrossTenant-AuthSource: BL4PR10MB8229.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Jan 2026 13:02:08.0145 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 4e2c6054-71cb-48f1-bd6c-3a9705aca71b X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: hW8pBJlBGcAXiIAFviHYqLi4crFsuqjW5eNAmFUTgYLYbfr5K7UZqrTYsvbvRgDuS7UM3Mq3j/U2+2040gkia9HZVHmvTnA9kxGLOyXRgME= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS0PR10MB8198 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.20,FMLib:17.12.100.49 definitions=2026-01-22_01,2026-01-22_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 malwarescore=0 bulkscore=0 adultscore=0 spamscore=0 phishscore=0 mlxscore=0 mlxlogscore=999 suspectscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2601150000 definitions=main-2601220097 X-Proofpoint-GUID: Yzbw8-qkTF3wNlp_aQ3qMEoXsjE5O7ew X-Proofpoint-ORIG-GUID: Yzbw8-qkTF3wNlp_aQ3qMEoXsjE5O7ew X-Authority-Analysis: v=2.4 cv=QdJrf8bv c=1 sm=1 tr=0 ts=69721fd6 b=1 cx=c_pps a=e1sVV491RgrpLwSTMOnk8w==:117 a=e1sVV491RgrpLwSTMOnk8w==:17 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=z/mQ4Ysz8XfWz/Q5cLBRGdckG28=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=xqWC_Br6kY4A:10 a=vUbySO9Y5rIA:10 a=GoEa3M9JfhUA:10 a=VkNPw1HP01LnGYTKEx00:22 a=yPCof4ZbAAAA:8 a=fUIvD_cNObhrxFjjdL4A:9 cc=ntf awl=host:13644 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMTIyMDA5NiBTYWx0ZWRfXwoChbHVbWK4e 8xPT+68e8UZDF5cD5eGL/Nr9p+vJUiTZBTCWm7o+btLm0k9dELP4eJG2pUWVan223lSjPwKSiO4 xKdtfkJEGsshkUfcI5MNBMZvvWq06Gv81ANEk76CO14gmWyRewHW7xp/Dhs9Vf615iYToJWbKc8 zmEN/dMQLtWKjzjrYXpz+Ir7KHca45me3cR1+BXZHhLq6MAYHRvITiHB9lILF/vgznN1n/yF7DN A+l76Vldb3pxgdtwylvf0zSpuu1oksttVFjg8P7bqkcJqxGyf0f1lXEdJRffNPM7YjXl5OC5eb8 +n3AMt1K9f1TAFqOLZHm13fMlesvFt96w7Z9RgjAs/f/iqRli0j0tcURX9HIYD4IthxDL7zMrfW iQWhNoWQZxAZhgXRQh0i3nLy3SPPj59j7RHeK/eVnJIOWoKLENnAVEuFGmK/HHK5Ny8qf+bE91q UK/lrDSCKjX93Q0yOv7wQVL8+2Po0geVuOOgZMsc= Content-Type: text/plain; charset="utf-8" The is_vma_writer_only() function is misnamed - this isn't determining if there is only a write lock, as it checks for the presence of the VM_REFCNT_EXCLUDE_READERS_FLAG. Really, it is checking to see whether readers are excluded, with a possibility of a false positive in the case of a detachment (there we expect the vma->vm_refcnt to eventually be set to VM_REFCNT_EXCLUDE_READERS_FLAG, whereas for an attached VMA we expect it to eventually be set to VM_REFCNT_EXCLUDE_READERS_FLAG + 1). Rename the function accordingly. Relatedly, we use a finnicky __refcount_dec_and_test() primitive directly in vma_refcount_put(), using the old value to determine what the reference count ought to be after the operation is complete (ignoring racing reference count adjustments). Wrap this into a __vma_refcount_put() function, which we can then utilise in vma_mark_detached() and thus keep the refcount primitive usage abstracted. Also adjust comments, removing duplicative comments covered elsewhere and adding more to aid understanding. No functional change intended. Signed-off-by: Lorenzo Stoakes --- include/linux/mmap_lock.h | 62 +++++++++++++++++++++++++++++++-------- mm/mmap_lock.c | 18 +++++------- 2 files changed, 57 insertions(+), 23 deletions(-) diff --git a/include/linux/mmap_lock.h b/include/linux/mmap_lock.h index a764439d0276..0b3614aadbb4 100644 --- a/include/linux/mmap_lock.h +++ b/include/linux/mmap_lock.h @@ -122,15 +122,27 @@ static inline void vma_lock_init(struct vm_area_struc= t *vma, bool reset_refcnt) vma->vm_lock_seq =3D UINT_MAX; } -static inline bool is_vma_writer_only(int refcnt) +/** + * are_readers_excluded() - Determine whether @refcnt describes a VMA whic= h has + * excluded all VMA read locks. + * @refcnt: The VMA reference count obtained from vm_area_struct->vm_refcn= t. + * + * We may be raced by other readers temporarily incrementing the reference + * count, though the race window is very small, this might cause spurious + * wakeups. + * + * In the case of a detached VMA, we may incorrectly indicate that readers= are + * excluded when one remains, because in that scenario we target a refcoun= t of + * VM_REFCNT_EXCLUDE_READERS_FLAG, rather than the attached target of + * VM_REFCNT_EXCLUDE_READERS_FLAG + 1. + * + * However, the race window for that is very small so it is unlikely. + * + * Returns: true if readers are excluded, false otherwise. + */ +static inline bool are_readers_excluded(int refcnt) { /* - * With a writer and no readers, refcnt is VM_REFCNT_EXCLUDE_READERS_FLAG - * if the vma is detached and (VM_REFCNT_EXCLUDE_READERS_FLAG + 1) if it = is - * attached. Waiting on a detached vma happens only in - * vma_mark_detached() and is a rare case, therefore most of the time - * there will be no unnecessary wakeup. - * * See the comment describing the vm_area_struct->vm_refcnt field for * details of possible refcnt values. */ @@ -138,18 +150,42 @@ static inline bool is_vma_writer_only(int refcnt) refcnt <=3D VM_REFCNT_EXCLUDE_READERS_FLAG + 1; } +static inline bool __vma_refcount_put(struct vm_area_struct *vma, int *ref= cnt) +{ + int oldcnt; + bool detached; + + detached =3D __refcount_dec_and_test(&vma->vm_refcnt, &oldcnt); + if (refcnt) + *refcnt =3D oldcnt - 1; + return detached; +} + +/** + * vma_refcount_put() - Drop reference count in VMA vm_refcnt field due to= a + * read-lock being dropped. + * @vma: The VMA whose reference count we wish to decrement. + * + * If we were the last reader, wake up threads waiting to obtain an exclus= ive + * lock. + */ static inline void vma_refcount_put(struct vm_area_struct *vma) { - /* Use a copy of vm_mm in case vma is freed after we drop vm_refcnt */ + /* Use a copy of vm_mm in case vma is freed after we drop vm_refcnt. */ struct mm_struct *mm =3D vma->vm_mm; - int oldcnt; + int refcnt; + bool detached; rwsem_release(&vma->vmlock_dep_map, _RET_IP_); - if (!__refcount_dec_and_test(&vma->vm_refcnt, &oldcnt)) { - if (is_vma_writer_only(oldcnt - 1)) - rcuwait_wake_up(&mm->vma_writer_wait); - } + detached =3D __vma_refcount_put(vma, &refcnt); + /* + * __vma_enter_locked() may be sleeping waiting for readers to drop + * their reference count, so wake it up if we were the last reader + * blocking it from being acquired. + */ + if (!detached && are_readers_excluded(refcnt)) + rcuwait_wake_up(&mm->vma_writer_wait); } /* diff --git a/mm/mmap_lock.c b/mm/mmap_lock.c index 75dc098aea14..ebacb57e5f16 100644 --- a/mm/mmap_lock.c +++ b/mm/mmap_lock.c @@ -130,25 +130,23 @@ EXPORT_SYMBOL_GPL(__vma_start_write); void vma_mark_detached(struct vm_area_struct *vma) { + bool detached; + vma_assert_write_locked(vma); vma_assert_attached(vma); /* - * We are the only writer, so no need to use vma_refcount_put(). - * The condition below is unlikely because the vma has been already - * write-locked and readers can increment vm_refcnt only temporarily - * before they check vm_lock_seq, realize the vma is locked and drop - * back the vm_refcnt. That is a narrow window for observing a raised - * vm_refcnt. - * * See the comment describing the vm_area_struct->vm_refcnt field for * details of possible refcnt values. */ - if (unlikely(!refcount_dec_and_test(&vma->vm_refcnt))) { + detached =3D __vma_refcount_put(vma, NULL); + if (unlikely(!detached)) { /* Wait until vma is detached with no readers. */ if (__vma_enter_locked(vma, true, TASK_UNINTERRUPTIBLE)) { - bool detached; - + /* + * Once this is complete, no readers can increment the + * reference count, and the VMA is marked detached. + */ __vma_exit_locked(vma, &detached); WARN_ON_ONCE(!detached); } -- 2.52.0 From nobody Sat Feb 7 22:21:30 2026 Received: from mx0a-00069f02.pphosted.com (mx0a-00069f02.pphosted.com [205.220.165.32]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id D58222BE62B for ; Thu, 22 Jan 2026 13:03:11 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=205.220.165.32 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769086993; cv=fail; b=buMsNZ9UMYJiibIixACgq182izZpAtHKP+9MvFmCkmYlhKYpdXJyDVcK8FV19uJGQ281JjeHRjyE5SkQ7VQymfr4Ey45gYARu4nVptXDRlWFZVocoAivBWTvGCMaDx6yoFmwZcGoyQzMlxqZ9mgLcWXfHT+SNfEL2i5+53q5XKA= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769086993; c=relaxed/simple; bh=LWXIcYCa7+3IV7ylJtgzd85JET4e7RGzED4SuV/ziIY=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=R7YXwstw+QQPhmWSa7xGwFilc6b3hqjVIetvtDJLvfXTIxYC3LUJZVLVxndKVS0w2Yh3kO1SBt7ONBw/yPfRHBWoEKPmlVRmR6ifClcs8pv8hQd0KWnphTwjX8OJR4b2qYNY1Z+yK0B+HDptngLg/RQOh/c3jFcirJp1/in+NIw= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oracle.com; spf=pass smtp.mailfrom=oracle.com; dkim=pass (2048-bit key) header.d=oracle.com header.i=@oracle.com header.b=cn5xE1bG; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=UQfDydaE; arc=fail smtp.client-ip=205.220.165.32 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oracle.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oracle.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=oracle.com header.i=@oracle.com header.b="cn5xE1bG"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="UQfDydaE" Received: from pps.filterd (m0333521.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 60LNfDsc3265014; Thu, 22 Jan 2026 13:02:16 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=cc :content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s= corp-2025-04-25; bh=a8+mmP1U02Omf0Sy4YS+DkiqRVJ4tarmQ2ZXql+QKsw=; b= cn5xE1bGleRd1nbIC9BMFWSWwriCJ8s3OD+HRQnEZiVQeR48hy5o8gEhDWBH6Cxq f4Xwec7/CuKgOl3iK+nBTEloT5hEPP7PTN/aHECWmm/4iBLNvpWBJnZzNSL4uqxS ZAUawRHny/E+SCOizgBtZhCWBwbQHoULRfgytercR5V/O/fJ1jQNjAOA5bKjjLTy 8F/kD58J2ar2Bhtb/fR426OeLA+b0P5fSUK/irRAaY+q5gDz0p+E4bYkZ8FWvhwr pmiBxgl1fN80vLQdSUGUV+zCuLcTCwUrbwJQ0M1PUth63H2xb/XTamGjmpckvNo5 JBKwwSLtEotJ2PyiMYEq8A== Received: from iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta02.appoci.oracle.com [147.154.18.20]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 4br1b8fp72-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Thu, 22 Jan 2026 13:02:15 +0000 (GMT) Received: from pps.filterd (iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (8.18.1.2/8.18.1.2) with ESMTP id 60MC3PNA032149; Thu, 22 Jan 2026 13:02:14 GMT Received: from ch4pr04cu002.outbound.protection.outlook.com (mail-northcentralusazon11013023.outbound.protection.outlook.com [40.107.201.23]) by iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 4br0vgkfyc-2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Thu, 22 Jan 2026 13:02:14 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=wY5GyImbTDecGaLqeH/OVoMekslbj1L05pksnHv82C2l8DSLVVSaZ4uRrQmkHi4f9QhxL1njMLJlgljNDJNL0Q/d/wl5Klsb82U7YG8VnQhgABfE94sK82qdKTc1pf/NtF+GN2AenioQVwXy28seFLuGSfNtmrEDeRJoVUASLKs5+0E4dU7pORhbn84Xs+8A06hPEmTHBXSNVd1qe73QzyqjCroK9r9ysFG3frhhqBXpBBgS7oo+8RlgKIZdHUu0A2bMF1W3JCzFBB0TnjUQUTnDmuzLVbsfaEo8wiDgdLdkCzMd2ZfWFp75fWZFRN5CqwreGaJsWFUT9bPIab2P6A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=a8+mmP1U02Omf0Sy4YS+DkiqRVJ4tarmQ2ZXql+QKsw=; b=t3ufWhxtC9xRy9zrxtYbaA8wLVCO4l7/ZVPDZTE5R+PysI0pta8fJ5Wi8+/tMict8WfbS1WhWWpZ62CQuUJSUr2sNWm+SCuRc5fPm7fv9Zp9ANMrPIdwYzTxqOH+Q8sb8wZNV+lB/Sbl+xmmNYgDxrTGZx9XmHlOvI0eEF3WvtLVqiUupBH0V9i6xey6PKHIlNHk1PYFF25ErBz8JOt/Ywcn+gi/wv98kFAEUjEtO+YtG0UESjP8iQBXqYyl69kJQ8MT5G9Ws1TqhSPkLJgjEV6isrjeZNETV+wsS8DRyOx7N4XV69F7V7h4FrmtgT2fBnB/ozIdYjYClw6yh2UYFg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oracle.com; dmarc=pass action=none header.from=oracle.com; dkim=pass header.d=oracle.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.onmicrosoft.com; s=selector2-oracle-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=a8+mmP1U02Omf0Sy4YS+DkiqRVJ4tarmQ2ZXql+QKsw=; b=UQfDydaENPCXxEjGfJQ1smkw0/dQFMVgWnbPFzQGB2SysyxK53qSjZPTxrd3MlRhEIQfU0Qee/pXTb8Wmpmcxr6hiHd64vq2xN6Kjx5+Dc6zkAubIMFhpG/qkoxxkmLub3V5+nU2G42e3oFgwwggK8GJ9tpA4rrzkuUkhEa8CK0= Received: from BL4PR10MB8229.namprd10.prod.outlook.com (2603:10b6:208:4e6::14) by DS0PR10MB8198.namprd10.prod.outlook.com (2603:10b6:8:1f4::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9542.9; Thu, 22 Jan 2026 13:02:11 +0000 Received: from BL4PR10MB8229.namprd10.prod.outlook.com ([fe80::552b:16d2:af:c582]) by BL4PR10MB8229.namprd10.prod.outlook.com ([fe80::552b:16d2:af:c582%6]) with mapi id 15.20.9520.005; Thu, 22 Jan 2026 13:02:10 +0000 From: Lorenzo Stoakes To: Andrew Morton Cc: David Hildenbrand , "Liam R . Howlett" , Vlastimil Babka , Mike Rapoport , Suren Baghdasaryan , Michal Hocko , Shakeel Butt , Jann Horn , linux-mm@kvack.org, linux-kernel@vger.kernel.org, linux-rt-devel@lists.linux.dev, Peter Zijlstra , Ingo Molnar , Will Deacon , Boqun Feng , Waiman Long , Sebastian Andrzej Siewior , Clark Williams , Steven Rostedt Subject: [PATCH RESEND v3 04/10] mm/vma: add+use vma lockdep acquire/release defines Date: Thu, 22 Jan 2026 13:01:56 +0000 Message-ID: <4703b7320796908b9a0827c3d42d74d11b703714.1769086312.git.lorenzo.stoakes@oracle.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: LO2P265CA0125.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:9f::17) To BL4PR10MB8229.namprd10.prod.outlook.com (2603:10b6:208:4e6::14) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BL4PR10MB8229:EE_|DS0PR10MB8198:EE_ X-MS-Office365-Filtering-Correlation-Id: fc85ad87-90b6-4e45-5b5c-08de59b67407 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|7416014|1800799024|366016; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?8to+MJIsIEzP6z4l+8H6HRDrxGqz3Cau1sQ+m7AwRHaTzQbsW2HG5alAYnz7?= =?us-ascii?Q?ljlfkCpNQgxCS79tW1oKVcZl+HuT9q8QPjdGoRI0E3dGqFx9eSj56JywbYgn?= =?us-ascii?Q?t9N9Sebkwkj200eTAYSwx1lUfu90F07vQHB3o2/TKxntnTV0GoXWtUwN8eZM?= =?us-ascii?Q?Ncgmykz79Cu6BHkvqio7vSAowkm9roSbN5r6q6Ozvr9TRicnkN6bVlXRbuhs?= =?us-ascii?Q?xG54ceL1zHCMLzJ97Xxnlu/4ns9iLzNv1vcGS68z7RYuva6/T9/cqllhFIS3?= =?us-ascii?Q?AoKaEvUGsVT7uTDU72fCgCk967iu2rWVq7XuKUXVrSgY4zKf3MmmT/GdIog6?= =?us-ascii?Q?TBXWAWXgH5dBeFAbC2wAfCby+22QPs0hcbrbxXqDKgQzRyxhjq6myUulnkYg?= =?us-ascii?Q?NL0A5/TBcoC3rgWRKN9EZaVAnpRnZS54Bt2kSTVWjE92uyjmGBAbwjV3d1TP?= =?us-ascii?Q?2eRx14Ce69XqHKKmMh9WcrYkrCV8+D2Op7Gqx63GWMpjDccvb1q8duJb0+VJ?= =?us-ascii?Q?k6ljf/p5VwNaPx3Bva1ouo8fUCuOOXx2plWuwRc4ASL8EwSgs1bj0wMuXiuq?= =?us-ascii?Q?2j27EccVM/0bt+7v8KqeAV+QufxFYKv7Tkdub3vw2Z1taH+DmECwcLK00MYX?= =?us-ascii?Q?+Qwd4p9h2dbrdZ0fbjTd06VBO71iO5zFZ/9rKVxB0kx8fP7Mf08ZmIvdhnLa?= =?us-ascii?Q?UEiYdtWkFyH+ifExf/qlytdI2lq5mmcNizuHfV0Syy3UCZU5vGbMR1GGgyO9?= =?us-ascii?Q?uT/Gl1Q7s8Ia7CXLPi8VRahR540eNGuQwHioA3mcM0OpfnNhKsq1q7mrHDqO?= =?us-ascii?Q?upOYBm+H+hGOe4OhIsO7entGeXAF5PIcVNH+vUqpYxqvyUYWKpAsQs4EaZJM?= =?us-ascii?Q?tONiBKJYYhYFjGF8dFMCSAGTlFJBhW65wqkSeQ02EuONTMg6FB09BwXKxMol?= =?us-ascii?Q?ZQvOzczU6Zl4WQ0RoT5q8VFawsTY97ZXjAWBDNy2QEzQR8ZzkNG4TRbL2i+q?= =?us-ascii?Q?akVWqVgka6LazSmEJw+nKF8THK9X4X42oJsIB0MPvK+QRZX04uX4rJ87Z43x?= =?us-ascii?Q?oDTDOyySKApPfLmagvUMXX+ZH4kFoM2zYnEMjWnL/6sgLz22D+IYBzeaWw2j?= =?us-ascii?Q?suQsEZKyunpmSqKYew3AQeyqoXx8c1a49xdc08LMlrOJ8MdoDFEYTooOLMQa?= =?us-ascii?Q?DbYdJd9rzbfBrj9AHSHeUJLHaRG121dF+fpyfGKiuRrGsM97b2GlePH9wsPe?= =?us-ascii?Q?80JWiHwpbXB1wNYJ9r/WJUJjAbviwRolnAg/V24o0GPhzcEJIB1xG+EMN9fF?= =?us-ascii?Q?E0O932Z/FBI4yBx7/2eyxaR/pr9IZrgZauA2A8HBsSwap0VwV0frHHpLGcRl?= =?us-ascii?Q?fnjFN850BdUTvbyLd24nvpTeGUdMwWnzfmq2JLDUL0IrsRBLLvnrz/RX/To+?= =?us-ascii?Q?wb5cGadZjItayRzusZq3Y3A010CWjzWPVS72646v4PvdySsbg9sdpnsqvb24?= =?us-ascii?Q?2Ptip7bV/caTKbFg0OsAhe1t66RcK/0dwvVFXuTnlXRvWKdg4sMl6xOJ3Iws?= =?us-ascii?Q?hVUYcjiV3F1TSPHw7fI=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BL4PR10MB8229.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(7416014)(1800799024)(366016);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?FuDaT5Y6s6eHNoFBXIcpEvj2SHtefKi6cwJrkbikUIFrQEAAg8kBpvBbcHuz?= =?us-ascii?Q?e2nYCBaLDikyn8A8hQ6O/5eH/vbSu0uQOfPskjMdQGvIeMFcVf1BRcXpZJKA?= =?us-ascii?Q?AWNU/FqZ8i//pP49un/gcVeUKbm62vp7w1O6ODK470KPS3GEdzEV3QigeZn4?= =?us-ascii?Q?WZI8qs8vPKHb4eH2mHEsqaE9Q9J5C3ls7dhugGYqeyVOf2acsqJStITDF+yw?= =?us-ascii?Q?XiA8h6Hp+lgVMaI8TZhByg/a+brQMvXcy7vN58UyXTw2d/yTdgQ6PjGnCKzl?= =?us-ascii?Q?AJ6aDCflfOq1B8+o0iZTDkIoCG1btNovIZxHmdGGjx53a38PwDXLUbTLBCiv?= =?us-ascii?Q?8/HwgWr6RlcG9cSZoWoiY5mJRXeZnX13YffxLvZ5vWH1vaGrdDTY8DWxfgTY?= =?us-ascii?Q?GZd2CI2FTM0dWOUBvqioDrOna3bcJEx7gJ9b44s9eDvj0/wp73Ssyk/X+D5p?= =?us-ascii?Q?jXsnZjl7BCb/BxfGXf4Lsbs108jstSxgYc5C/zzx14s3YzzPQq7Lauw4V0+V?= =?us-ascii?Q?a5GaFfLwb4slOSSR3Oklx9e4dC2BIFq/ni0wJqGx7bTodkW1dUyi6FOUnXwt?= =?us-ascii?Q?gyaUONAAbVvcv50+tS8Q+ZcJpBR/lZcEdY6AJ1jRI6EJ7ntKiqKtfo6XkGLF?= =?us-ascii?Q?5jUj/jZNTIWzF8RkR3oaHJ2vHrZK6qPcKcuAU0XNNVF+h51YDEnr60IWwneD?= =?us-ascii?Q?8beMy7lEW/ZBMCqcnrSePDmrE3JPE2nFQg35nqnPneva6mG1CyhvmHcfmY7D?= =?us-ascii?Q?zJkO3msQD+bTYkHzJ6mEvyr7T0kylanFuY6cB6b2S/SX+WW6/Zwxz9uREFEH?= =?us-ascii?Q?stDzeMkpVwTFeJUPC0oCCAdrI5Tquw/GTUDPCAFDWQrX8D/coPssLldWgv3Y?= =?us-ascii?Q?D2B4Vhsa06SsA3xQjMox5A+BqwpNHnu2/3+8TwldMIndk2hgE8nRTF4NduHJ?= =?us-ascii?Q?qFBS7RPbo1CSvYQpujLkib/lr/lVm7TCTp/rgF+p8LZFbrgzYLjI/aoWU0oW?= =?us-ascii?Q?lK5urbif9gPoxYiK3cr/kA0NGuwVXEQ4HkwaV7VV8YY4L5KwrYcPqlgSzCxJ?= =?us-ascii?Q?dp5m9U47ROhBb2bUx4Eh2iQQtSxCsl8oYxSe2ni5ThLIjjamhEWNQOl9LGqY?= =?us-ascii?Q?UMYsPPkAoVKKOY6N9xaknLrHKXIb0SOQ9JjlibKxWcDt8pWBsRl5XLTBwjil?= =?us-ascii?Q?EZMBzi3F5P6bBv/6hj6vAXpkJ/5HTJHiDQoeQNXYUaXFX2O39ai9VeT+7PuS?= =?us-ascii?Q?xpgaVUYQKW2a8YXOgmF3ZEt3GgY1m55Yo94H8Gopr+XQfbFryx2uQSRYxq28?= =?us-ascii?Q?O/YgRRyE5xPuL3pWaFf7rkl9K7W+z0J1dYHD5Hzs9dKv+Cr6OtQeS8meO21u?= =?us-ascii?Q?VIzyN1kamdsXJadGJBJDuQ5LVlfw+5lzGqsL1KZKTR1vM8IQxdoSXHjGm2xh?= =?us-ascii?Q?fYGtW1Np+KK9yif03lkJOjRkL1uxWyrsFD9eMFjtMANz6Kh+WSeeHXs2p/Dg?= =?us-ascii?Q?pjf6l0+PDAnI3LGrsVvQ/aGzR18EZix+uaPdKbzABN5lDbBOiu3NtQ9k83b2?= =?us-ascii?Q?majq0l+N48rToKXPX4O0Xqadrrzo7WsTm1hTsaJf22VBejsAeLs6Qvrf4qDo?= =?us-ascii?Q?DY7EAJgYzRlJRYZYvwQqsmzT0HD3jlLDX/YTZvCE8gboqejCD/VsnR0kE8RI?= =?us-ascii?Q?tLR2zY73LIOdYEf1DEl106xXRC3hfz36ZKDIflkrQPwZMGKalPhJF7jlGmvp?= =?us-ascii?Q?yMEGP+1PP+4FlpLRKoxSQNgCvXw29bg=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: 22PibEl85To4vLNLbEP7A7StNRbcVlKT15HgQD3HLjQ4+Fav7cGfgNGHU7gTvlwToWKMjCVDKxYZcZmTEtCmDv3DC1LYfaj9sKwnQFGx1VXwEqoG1tWt5Ef9XtN22qcw+lDe+2+LaJlMt+xfG6uUiDGDdGXkIh6Lil3WIXKG6XX/5rgxXx8HfR7iS3chKGqLQr5lKQauSXR91PaZdOkUdY5PCZBknu3a5duOJes6VSZbTGLw1y/1+zIYt6qpc0lOU4L9RUKfQ3TEi7t884XvIBUBMMPhhqXR5MJNmP0FqRQvbNGCZYTUHjxrrNVrJ0OPdRHwEgtTIkw+qLKgGjthl1HFi3JZjBW5d2bi0JqfrTjoUomvfV/G0SGmt+736fWl21cK1W0sXjfnyz3NzhyNV01gFQlDsTYiHqaQ85VerRJORkJiPuIR5hrtn1OObXXp+xWZIX5O3VqVWLSsE08vQAnpzX1PbAIdhBEDzBk2DAg7AjY5/CY1CIGSzHrWu1bLWDtyEEaUigApjUwZI3Dg/Ms8VZfyIfw4p/C0t9bmm35C23hVKoyUgaW9jvCMTnx+phba8UzY9llR4pa+P1SETh3YTU9xVFenxh90ZIzzpek= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: fc85ad87-90b6-4e45-5b5c-08de59b67407 X-MS-Exchange-CrossTenant-AuthSource: BL4PR10MB8229.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Jan 2026 13:02:10.0223 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 4e2c6054-71cb-48f1-bd6c-3a9705aca71b X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: K0qGmqpcuOerUDONnSIRuDKXhK1raPoRcc5yw6ZJl72UMvKCsSYFyZnEKZtEN1vYEEEZ1xICAG07J24nNWxC3zicwZqwNB7q1uGSdYBxPKM= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS0PR10MB8198 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.20,FMLib:17.12.100.49 definitions=2026-01-22_01,2026-01-22_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 malwarescore=0 bulkscore=0 adultscore=0 spamscore=0 phishscore=0 mlxscore=0 mlxlogscore=999 suspectscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2601150000 definitions=main-2601220097 X-Authority-Analysis: v=2.4 cv=WbcBqkhX c=1 sm=1 tr=0 ts=69721fd7 b=1 cx=c_pps a=e1sVV491RgrpLwSTMOnk8w==:117 a=e1sVV491RgrpLwSTMOnk8w==:17 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=z/mQ4Ysz8XfWz/Q5cLBRGdckG28=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=xqWC_Br6kY4A:10 a=vUbySO9Y5rIA:10 a=GoEa3M9JfhUA:10 a=VkNPw1HP01LnGYTKEx00:22 a=yPCof4ZbAAAA:8 a=nIt71nLUYc_4VLb9du8A:9 cc=ntf awl=host:13644 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMTIyMDA5NiBTYWx0ZWRfX4D4S6IMEirsK I3eKMLEpgD87S3T1laHDmr3Ii0qDzb4wYxBHt9JQb5BDB9uT2Rf2ufxlHxVmqH3kKBLKO55KaPL BOqnzpjICDheLAJK4aITIVoHyyio6A18hlL5NuRq2aqFspanye6jQ5KtGSeiiV4ujUQDAjeeejT 49vJqaeMTGIZjknlJSHHUQ4P5H4WDFQr+o38ee7OeR3Iyi6yyrIH3ryfMsNGPC31msp07T1wzO1 oD8cgefsNzRhqAaHP82zQA7YvNexraWAh+oFIU2cllk9yyalW4+Re6ZCA343Q5W7a1LwoYC9Gxz 0WAvIE/Zxf+BWi7m655JVoJqvi7cLQiROzqmQHttD9pGmWKxbWrX97qNwtlxpgiXHvUxPu8yRZR CXiUAziR/7KgE95GJYXdJdxEB0JZcxV83voSeY6D9hRLq8XRHMw752o4t3cUfCY3zmWXL4KDKwC guIx/vym/gtgBluL5stpkyO2W/Lc8RJQxwhUDbug= X-Proofpoint-ORIG-GUID: BTphIMq1Mysvdu0afgbOIpFxjew5Z_fC X-Proofpoint-GUID: BTphIMq1Mysvdu0afgbOIpFxjew5Z_fC Content-Type: text/plain; charset="utf-8" The code is littered with inscrutable and duplicative lockdep incantations, replace these with defines which explain what is going on and add commentary to explain what we're doing. If lockdep is disabled these become no-ops. We must use defines so _RET_IP_ remains meaningful. These are self-documenting and aid readability of the code. Additionally, instead of using the confusing rwsem_*() form for something that is emphatically not an rwsem, we instead explicitly use lock_[acquired, release]_shared/exclusive() lockdep invocations since we are doing something rather custom here and these make more sense to use. No functional change intended. Signed-off-by: Lorenzo Stoakes Reviewed-by: Suren Baghdasaryan Reviewed-by: Vlastimil Babka --- include/linux/mmap_lock.h | 35 ++++++++++++++++++++++++++++++++--- mm/mmap_lock.c | 10 +++++----- 2 files changed, 37 insertions(+), 8 deletions(-) diff --git a/include/linux/mmap_lock.h b/include/linux/mmap_lock.h index 0b3614aadbb4..da63b1be6ec0 100644 --- a/include/linux/mmap_lock.h +++ b/include/linux/mmap_lock.h @@ -78,6 +78,36 @@ static inline void mmap_assert_write_locked(const struct= mm_struct *mm) #ifdef CONFIG_PER_VMA_LOCK +/* + * VMA locks do not behave like most ordinary locks found in the kernel, s= o we + * cannot quite have full lockdep tracking in the way we would ideally pre= fer. + * + * Read locks act as shared locks which exclude an exclusive lock being + * taken. We therefore mark these accordingly on read lock acquire/release. + * + * Write locks are acquired exclusively per-VMA, but released in a shared + * fashion, that is upon vma_end_write_all(), we update the mmap's seqcoun= t such + * that write lock is de-acquired. + * + * We therefore cannot track write locks per-VMA, nor do we try. Mitigatin= g this + * is the fact that, of course, we do lockdep-track the mmap lock rwsem. + * + * We do, however, want to indicate that during either acquisition of a VMA + * write lock or detachment of a VMA that we require the lock held be excl= usive, + * so we utilise lockdep to do so. + */ +#define __vma_lockdep_acquire_read(vma) \ + lock_acquire_shared(&vma->vmlock_dep_map, 0, 1, NULL, _RET_IP_) +#define __vma_lockdep_release_read(vma) \ + lock_release(&vma->vmlock_dep_map, _RET_IP_) +#define __vma_lockdep_acquire_exclusive(vma) \ + lock_acquire_exclusive(&vma->vmlock_dep_map, 0, 0, NULL, _RET_IP_) +#define __vma_lockdep_release_exclusive(vma) \ + lock_release(&vma->vmlock_dep_map, _RET_IP_) +/* Only meaningful if CONFIG_LOCK_STAT is defined. */ +#define __vma_lockdep_stat_mark_acquired(vma) \ + lock_acquired(&vma->vmlock_dep_map, _RET_IP_) + static inline void mm_lock_seqcount_init(struct mm_struct *mm) { seqcount_init(&mm->mm_lock_seq); @@ -176,8 +206,7 @@ static inline void vma_refcount_put(struct vm_area_stru= ct *vma) int refcnt; bool detached; - rwsem_release(&vma->vmlock_dep_map, _RET_IP_); - + __vma_lockdep_release_read(vma); detached =3D __vma_refcount_put(vma, &refcnt); /* * __vma_enter_locked() may be sleeping waiting for readers to drop @@ -203,7 +232,7 @@ static inline bool vma_start_read_locked_nested(struct = vm_area_struct *vma, int VM_REFCNT_LIMIT))) return false; - rwsem_acquire_read(&vma->vmlock_dep_map, 0, 1, _RET_IP_); + __vma_lockdep_acquire_read(vma); return true; } diff --git a/mm/mmap_lock.c b/mm/mmap_lock.c index ebacb57e5f16..9563bfb051f4 100644 --- a/mm/mmap_lock.c +++ b/mm/mmap_lock.c @@ -72,7 +72,7 @@ static inline int __vma_enter_locked(struct vm_area_struc= t *vma, if (!refcount_add_not_zero(VM_REFCNT_EXCLUDE_READERS_FLAG, &vma->vm_refcn= t)) return 0; - rwsem_acquire(&vma->vmlock_dep_map, 0, 0, _RET_IP_); + __vma_lockdep_acquire_exclusive(vma); err =3D rcuwait_wait_event(&vma->vm_mm->vma_writer_wait, refcount_read(&vma->vm_refcnt) =3D=3D tgt_refcnt, state); @@ -85,10 +85,10 @@ static inline int __vma_enter_locked(struct vm_area_str= uct *vma, WARN_ON_ONCE(!detaching); err =3D 0; } - rwsem_release(&vma->vmlock_dep_map, _RET_IP_); + __vma_lockdep_release_exclusive(vma); return err; } - lock_acquired(&vma->vmlock_dep_map, _RET_IP_); + __vma_lockdep_stat_mark_acquired(vma); return 1; } @@ -97,7 +97,7 @@ static inline void __vma_exit_locked(struct vm_area_struc= t *vma, bool *detached) { *detached =3D refcount_sub_and_test(VM_REFCNT_EXCLUDE_READERS_FLAG, &vma->vm_refcnt); - rwsem_release(&vma->vmlock_dep_map, _RET_IP_); + __vma_lockdep_release_exclusive(vma); } int __vma_start_write(struct vm_area_struct *vma, unsigned int mm_lock_seq, @@ -199,7 +199,7 @@ static inline struct vm_area_struct *vma_start_read(str= uct mm_struct *mm, goto err; } - rwsem_acquire_read(&vma->vmlock_dep_map, 0, 1, _RET_IP_); + __vma_lockdep_acquire_read(vma); if (unlikely(vma->vm_mm !=3D mm)) goto err_unstable; -- 2.52.0 From nobody Sat Feb 7 22:21:30 2026 Received: from mx0b-00069f02.pphosted.com (mx0b-00069f02.pphosted.com [205.220.177.32]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id EC57D296BD2 for ; Thu, 22 Jan 2026 13:04:02 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=205.220.177.32 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769087044; cv=fail; b=pKLGTagAimfA8A6MnmgZ7Z8XcrKotZrW17Pk4NCQ4cQQtpShoCRMl/Q2WnDLyiRh3a3O3HO+SKmwUS5e31oM20NQ5nYhSx+YgrTwE70O1brfQk6pTQrdHRB+ywjeiZNMqTN96HUNz/lPFVUMA6ml8c4FTzreP9onO/hilS9nipc= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769087044; c=relaxed/simple; bh=nfwFECNlglEvd7AjDnmlgBWxYW9qICVPLhF4uP3BAjQ=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=KesnThAqA0Be6t/zmSmohvRkgHLlovOhW29ed4YHQyc/bhTpuDtTsL7FG4eJgfRrO9y4lzRt2Vj4hox/AvL6refOdlN8YK/tnfRcjdPDV3MMay4P+v/YA3X/tR+a12dACMrAIrzYgxw08n1OSyq1pwOF9E6Cbs8I4r1bQXZeeV4= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oracle.com; spf=pass smtp.mailfrom=oracle.com; dkim=pass (2048-bit key) header.d=oracle.com header.i=@oracle.com header.b=q4tbBjNP; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=mI1EMkl2; arc=fail smtp.client-ip=205.220.177.32 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oracle.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oracle.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=oracle.com header.i=@oracle.com header.b="q4tbBjNP"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="mI1EMkl2" Received: from pps.filterd (m0246631.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 60LLsXcg3867763; Thu, 22 Jan 2026 13:02:39 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=cc :content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s= corp-2025-04-25; bh=VO5s2D7XD1EWYcxMVMxWMOoJfjbN1QHSq9LYqgJZmnY=; b= q4tbBjNP1K/coDQh1ejAuEmtfCbkoYu4C4qtLSi4iCO0+iVAs7n6jWcpEBRfHie5 37msGoFx7go4TBdpHzE2U7YMDdnPxGmStA/XKp+P+ilLWygHIujmxLsCpLpXJjU5 yii23+fQ4RhTPNY0frgFDFxZtndDqH2Q6gth/Rw8YgwH/nQJSUv9hS4GmKdNaEs+ EChBPiX3FlrQBctckuEeO31pyCRmLH18kD8tfs5yaW8Q+HoosKjPiYoUWDjSxAni 5t1UuW7lHF1FymuQ7y7U7kK0CPicv4kNoPuVmZHkS22qGzoujMkmpZzsPIkNbOcJ rxl+uN2k8c973mkagWbaxw== Received: from iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta01.appoci.oracle.com [130.35.100.223]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 4btagd46r7-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Thu, 22 Jan 2026 13:02:17 +0000 (GMT) Received: from pps.filterd (iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (8.18.1.2/8.18.1.2) with ESMTP id 60MCHAdp022503; Thu, 22 Jan 2026 13:02:15 GMT Received: from dm1pr04cu001.outbound.protection.outlook.com (mail-centralusazon11010001.outbound.protection.outlook.com [52.101.61.1]) by iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 4br0vgjp0v-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Thu, 22 Jan 2026 13:02:15 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=whnXkl2riQJPxQUgimNdQvbspr0c7fnw0A3piK4Jvg44UxoV6JyQZz5PT/pdkQo7XAfR/f33pZWv5d7sRU9tSQPDNop/Oexdz/CPKX6TpVBSmJpKUH9oI0CTzoJ7t0K5E6cdaKfj7pwDzoZX9XIi3G/D+2tac8lq6NMnzKvt3WuS7tAk8F2cBwzOsy2Y7CE8cnMoyv3dTsKsvwqcuEy4Tv9X4kabI+bSAIR1TNMuLTF2RCuawb6J9wXeyTIctU+EZ4ZibuYaCAMPgl8eXpFSyrsfgGTzofzrk2rlQG42CPwa13kP2HKrwIiX9yeYti0VVtsjqFNZFcJtF6sTsKLNbA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=VO5s2D7XD1EWYcxMVMxWMOoJfjbN1QHSq9LYqgJZmnY=; b=UozL2SQV0auvaYTvAo96jIO4XV5Gmx36goujNPdaBw3w5IS0GLcxlwKTHe0/UBKEnUChigU06UvvWlgcTy9qrt4UidtSYsmqfNyW66inONv9E2kCZbt3bKVYjgGJxOQT2npto/DBbcVg4R1lQmjV/sC77OMkVul7sh+d5LE1NzLNb0wwGkoWo7K+ExOv6a2KuVWCEBx+AMtqnBOJV1rSXnV1fhAx6bMgWSl178I3kUu+AgyLMzHRgJS0qNLyNE9RpZyWjU5I1uPsAbjhyEZxumtUlxqn89kkAiTPyjgXQidCXsPKrsi2bkPwAuTHUZee6P1XRTtbWNQ+XQrVN2yzVQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oracle.com; dmarc=pass action=none header.from=oracle.com; dkim=pass header.d=oracle.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.onmicrosoft.com; s=selector2-oracle-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=VO5s2D7XD1EWYcxMVMxWMOoJfjbN1QHSq9LYqgJZmnY=; b=mI1EMkl2iamdD/t4du5v2XOaGxr08kEd48VqLeqqnqRJhXhiTKgoi5pbhfdxvZDRZ51hoM3i6GoFo/Bo7t5USauwsRysvtTj0uEXa34TCbs3LR2bS+iUjZj/zgBKAUwaDDKARMgdBTa0rCPWCYDnXe3eh3hWvYYBn1CnhIs5QNE= Received: from BL4PR10MB8229.namprd10.prod.outlook.com (2603:10b6:208:4e6::14) by BLAPR10MB4865.namprd10.prod.outlook.com (2603:10b6:208:334::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9542.10; Thu, 22 Jan 2026 13:02:12 +0000 Received: from BL4PR10MB8229.namprd10.prod.outlook.com ([fe80::552b:16d2:af:c582]) by BL4PR10MB8229.namprd10.prod.outlook.com ([fe80::552b:16d2:af:c582%6]) with mapi id 15.20.9520.005; Thu, 22 Jan 2026 13:02:11 +0000 From: Lorenzo Stoakes To: Andrew Morton Cc: David Hildenbrand , "Liam R . Howlett" , Vlastimil Babka , Mike Rapoport , Suren Baghdasaryan , Michal Hocko , Shakeel Butt , Jann Horn , linux-mm@kvack.org, linux-kernel@vger.kernel.org, linux-rt-devel@lists.linux.dev, Peter Zijlstra , Ingo Molnar , Will Deacon , Boqun Feng , Waiman Long , Sebastian Andrzej Siewior , Clark Williams , Steven Rostedt Subject: [PATCH RESEND v3 05/10] mm/vma: de-duplicate __vma_enter_locked() error path Date: Thu, 22 Jan 2026 13:01:57 +0000 Message-ID: <2611b2b6957b7aef587e9ae62712a888159dce60.1769086312.git.lorenzo.stoakes@oracle.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: LO4P302CA0009.GBRP302.PROD.OUTLOOK.COM (2603:10a6:600:2c2::17) To BL4PR10MB8229.namprd10.prod.outlook.com (2603:10b6:208:4e6::14) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BL4PR10MB8229:EE_|BLAPR10MB4865:EE_ X-MS-Office365-Filtering-Correlation-Id: 21f56fd9-911e-4212-0ff9-08de59b67527 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|1800799024|376014|7416014; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?duuL2OUSKqFDZUGFzoW3xDRM0Dsi4rSnAHf/AFLOJUnxyn3PBJJ/fR4/LMyF?= =?us-ascii?Q?QKMLgYupbKH9E1FfOOgsMuXICgZcNDt8ymlPKCFyeBjHR972pP7jmdssrQnV?= =?us-ascii?Q?WN7rKCa90/SRTUTuZdiDSDAf9HsUkiqDQiidIxLm0qsrHdi0qguFsNpOBYuq?= =?us-ascii?Q?wjyuxhNRfjM9Iipu81FrJ4FNokOiLy8vpwwuDZPNyt+1DxlAvUuOnj++A46/?= =?us-ascii?Q?K7XD8GULYbl7VvngsZBuFoCO3ntdoiBvUmtD+9psfa+gIxWFE0EQLgenrkfr?= =?us-ascii?Q?zpadDeRfKY2Dq1JD4DlyGorf4YHNmwnXUN96Zx41tD2NOco70QFGuxN9YTP4?= =?us-ascii?Q?M1w7a/1tl/3IHfefXWmQAs3t8yXEW1ZbH/4+Uv64G2TVwakR1FPc/z4XsfJz?= =?us-ascii?Q?hWyhM/qvkwDGxbopMJsrW6Mb8ERSdm7fQVO59j0GkwfTejTkq13BntZtLejh?= =?us-ascii?Q?vNwm6GEz1TBGkYHE8uSR3YVangWsJvJkw+/RQDrBD8izoYPHylV6HzKYSqku?= =?us-ascii?Q?t6V/X044GPFTKuZgps0y8osz7vIV10C2/1/GwDa8Qkp1qOf7b26L9OM0DtTm?= =?us-ascii?Q?eLvEzTdpAnkxhmOAEp3c5FOdbDiWJ5/OuPmWsIUx2Qe0uDhZrh3TPLZhtvIZ?= =?us-ascii?Q?1hPoch3uRM5F31xntmGS1oGxJb/iQU07v+/aha4knjP1uppRTLIlUNBSQFQp?= =?us-ascii?Q?e9DtzQJ/O9Egz097y5wuRX+8n9Vkni0zFn2sp7MB9AmjJTBUgzS4E6Fkok/A?= =?us-ascii?Q?DrAdGp08NQWXzTvnK8uNED6jQGC3d6yass/a9NRjGmN8mgf4Km+aj6gIuJsG?= =?us-ascii?Q?uvI03EBtcy2KWJWhS6a/LI5Z7PtZ4wooJHWAUO3pH2GjWrx/H17hEt0Po2mF?= =?us-ascii?Q?aVtQqyasxyrsukTg5iZBmkeKBzO/mfAl9fRu3VzewEbDfsS1aqF1e/i/H/+O?= =?us-ascii?Q?rwzispTWXgpyumPfBk/tUc6/4yqbTkbuMSTAu0Jyuk11uQafygqTJEPgwCxS?= =?us-ascii?Q?ua8Q9INHMoaQybj9oTOPgcCtiQ+jDJCbSSeDzTxCwzQxviVNWsxZB8YDJ7Vo?= =?us-ascii?Q?WRMdeBydBuQpCvI2QMTvkLLTPXtHg/NLFfn6G2ww1CaLDrXrEDxZQt6ewlFt?= =?us-ascii?Q?uY9x7Bye1+gzI0o4MfgTg0Lg2XP32nWlou5nM72AiXQ5UNGeKAS8ksDKU4Ym?= =?us-ascii?Q?z+lHXO6h/DrDRRrOOYonf2C5wqoL1pyBBtO5ymUENrV99BPHAsRGdGgL832E?= =?us-ascii?Q?8T4z38390eBN2ATjxKxjTi0QUFKNU/qOomtmPGUiniTpUZgOxKrtDy4ZUTvK?= =?us-ascii?Q?QANfevml+acT7yCKdFZ9f/PrF7T8kCzcp9dOPOctDH5hf00m/HEMIviR/dV+?= =?us-ascii?Q?XZW1oajHnp9U/7aS/KclW/hXF+cMmtjCUmPV1nu5FFIu8OK9/AFwaO3aq65X?= =?us-ascii?Q?s3U50buLnrh8G+zVrHznfp8mENoJzQ0AHobu2LbU23DIDjvhHZafYiX0EMpJ?= =?us-ascii?Q?GzwW/HlLasjt9y7ApCun+Y2srTwb00w3Y5QIOTsmvhWRRgRF51RxQpUT0wKC?= =?us-ascii?Q?9LtRKVFK4WVM0DRPl7w=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BL4PR10MB8229.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(1800799024)(376014)(7416014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?dh36GCUxkXbTQNVz1ia8ZcdYGlkMH91Y1MWu8sX6Xawb+TVqG74eM4A/CHLb?= =?us-ascii?Q?WeohO94oHXuyEyKqRJ19s6/7fmbo6lo29CUDR5+aMxFrpPM3az0TiWbmQyun?= =?us-ascii?Q?ojhmyJ5ux/jlqdkoUZR/ZGqOXguP0Brvz6foSu7YPIe/D9F17PC6vEgV3JZa?= =?us-ascii?Q?9XIOW5wlx6x+pzxUtCUWYICMbN2pqKpEKa5BEFh+3Qq11wH8+XTh26lkC/st?= =?us-ascii?Q?v9U7YI3z/NUyfrtfQtBWSTjVqJO5XxDIkWiPqyHyUy+GGqK8vouTJYvDPZrH?= =?us-ascii?Q?K4jPXrQArqYr4IBhJ2C+lrCExp52gABoD5lIVbFeskhioLsizLmZ2JdokNji?= =?us-ascii?Q?ODWQKGyGx/nHaOudWYWt+pE7rsIytv7MRzP5GN4T14CafbdT0kpJQJzblhK5?= =?us-ascii?Q?wYM8p6xMS3w9H0qVkM1y6Pi0AToLf7Eq2l9NMS24eKnjUHSFMfXUgGpINlEx?= =?us-ascii?Q?HojihspRT1owSaM1+10YOsCe89DU40Mcn/k5FaCzEGQ33GLBc7rQnZVes3l5?= =?us-ascii?Q?Gii2Gwz9OcCEdeMDhphMl+ezjlWsGaSsxZ0P3dxH6mCGuWXYleHlsPMHK4dc?= =?us-ascii?Q?f9AaPjZUmbMWF1B9GIpIYVrd72qyAKjeSzdX66ZtukSMPLEnALk7dSc6VeDV?= =?us-ascii?Q?gcUmNNsqZci6SrILbgTZd80KvFb7Zf0acPxkx734SZ7osb2dy5LiLE8is23f?= =?us-ascii?Q?Y2fpTOlm3SPRYuQ2oxa38FB801SjV7tbEYIRbZ6M0gN+Zuyc3UPoMUq0nE1M?= =?us-ascii?Q?28fULpMTqqKWyKouLMStARa+IWfYbPY4ZkRWMloRRbuHEkTosJoE6P26scqu?= =?us-ascii?Q?TnmrdkASjU+6cOxrH7+YLRVtRiXAct3olVMVYQJa3Jj6NAPvG+fYeBTHB0Yb?= =?us-ascii?Q?wmhCuhh4/TntrslbWJT8uOx0bT6gvnP02z/3OJlPlUFfT969RB3kLA8T9u8A?= =?us-ascii?Q?Dlk3fk3XopRi31tkb1q9NjjxG3Q6sPK8rLOr8f/gLLR7OwAsv9Fn9Pr4XvhR?= =?us-ascii?Q?f8w6yPUWhV/r9guyKgmCdHUofjpbR1vvqkHwHAPWpqhQsbS4AEqRlq+dUu37?= =?us-ascii?Q?hl+6PPoYOuInYVz3hm7bhXPePHKECdIqZX7A4C9nOpKx4WPTpq8nPMhSNqFd?= =?us-ascii?Q?XnbATd1EBMvXjOZFvlO4XPLsENghLCazOAy794iSwGbIwEHXm3duplEIdgnx?= =?us-ascii?Q?z3+gK6Z34Ppp4KrIxikfY17cmEdZ8YoRiVKbRkFA/1lBDDcugqogVmj437xr?= =?us-ascii?Q?hYLCNEMpGX7Yg795i/bG2QXX//NBNPOs8BGBjcAAOhjUofmDtisKyVY19NX3?= =?us-ascii?Q?gt/O6I1GmEubom33k2azpsdDdMv6ZScZOWx5FaHvC8nrosZaxC0H++jtLa/x?= =?us-ascii?Q?Prf/wf507L9UhherKevusZCHQd2fqFCKpYVWsGzUpLxuUQTtMEXwc3YL6pbn?= =?us-ascii?Q?Paipqg3C/rubbOydlBb3IkCe1gSZ/9LWJGfeFW4k1c/7hPSt5NItR0adsbPd?= =?us-ascii?Q?urVyyz3IVio771ggeGc3uoLQCDtE8ZMazSWNvX46k0YiSTKUVs/yhEFOr1ML?= =?us-ascii?Q?ZrAQFt18K+Ve1u6p/9JXweellUvsLqEm1oX22ph90gLZbHHNv+IvZq3vuZlR?= =?us-ascii?Q?q0S9RVCoO36sUU7bivAxnX8TLQryGAR6eNLbP2oKkxbY5apd9uPEbXcroJvo?= =?us-ascii?Q?WiBUr/KLqdtnSExEnjC6fPvO7nWhF4OsUGmCEhD83gzzUP7geSw7lWGQyMFz?= =?us-ascii?Q?CXcz4kISItwO6WI4olYzPI3h4QtEq2I=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: vJfneigGjso4VqFCe2dDeLzzbTwj6/Jf77p+pl7OG6JT4bu6q2P1j6mInBjfQeqzNjAk9p2DkCDP9L1X1M1qNA10Zf0/M8s2P7ELn64NilukQujU5182lIvPVjJqiHWvvCWJeO09Nbn5NYNJ7AgDC2R0MOVieb7itNrj+YuMyLJPoBLSz9Fr3nOPV22zbHGHmBgIgQ9Fkll3ybckdvnbC6mxR1x0GXAz7+2g05AEqvsbcNRI2ixRJbjarYxYBWqD6DWekpL73RneYN+b6MLezYBxJrYBXPlpWp5QayUongBjX8vCXYSDygxASlKUgqGc+XYdwX5HK8nJyezB9cWe3Kt3CJ3fcUy+IHFRGUKpjA3oNKYqBT1Vz5LCQNqEfcO+7vP31pj1M7qkrW+35LfqyXheYx9k0geyGki19VNolb3r9rMlYrlsM+9SzYpUAsDbCQZ852mlOWJ0nAIrCg4jwbjWlgOrVo0Jnzvo2EjsGvHhHOepGxTY2E1j6unS1gc9okhCWW8dP584pt9VCS+NepltFXvIntpWMwGWIeDWXw+yvVTltyAF7i9kRB8Bt7AmWrOzLRj/0SFockUzIf9pXQsN4aTasVj+Ag3DrNHpu98= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 21f56fd9-911e-4212-0ff9-08de59b67527 X-MS-Exchange-CrossTenant-AuthSource: BL4PR10MB8229.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Jan 2026 13:02:11.9495 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 4e2c6054-71cb-48f1-bd6c-3a9705aca71b X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: L37ZIaClIHixbUKAYN0CxlJaJP/6XnURlgg1rMBL+IIv5PGvcSQfaAYZVQ3Y0j8aupgio/t+SJzXrh0WqcYbv3ZuWXhEFSvQidf1h6+LcMA= X-MS-Exchange-Transport-CrossTenantHeadersStamped: BLAPR10MB4865 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.20,FMLib:17.12.100.49 definitions=2026-01-22_01,2026-01-22_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 spamscore=0 adultscore=0 bulkscore=0 phishscore=0 mlxlogscore=999 mlxscore=0 malwarescore=0 suspectscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2601150000 definitions=main-2601220097 X-Authority-Analysis: v=2.4 cv=PqqergM3 c=1 sm=1 tr=0 ts=69721fee b=1 cx=c_pps a=zPCbziy225d3KhSqZt3L1A==:117 a=zPCbziy225d3KhSqZt3L1A==:17 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=z/mQ4Ysz8XfWz/Q5cLBRGdckG28=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=xqWC_Br6kY4A:10 a=vUbySO9Y5rIA:10 a=GoEa3M9JfhUA:10 a=VkNPw1HP01LnGYTKEx00:22 a=yPCof4ZbAAAA:8 a=3lrxA4fjdKnX_o0fwtQA:9 cc=ntf awl=host:12103 X-Proofpoint-ORIG-GUID: GOJSID8ZmHMKsbWGdFbBqQjm8RS_8Ff- X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMTIyMDA5NiBTYWx0ZWRfX6Dhs7aa/5wo4 3az/iYKDZ/nN42W/ovOyggxBGF5nuXqTZ9Pmhxqsi0/VHYWLWGSpRX6J3xBaQ+VygvAxLAVoXTU c1sYHUDdISjQ4nvrJvAxz/ZMvvs1od1D0F4n6OdlDrYCBNh9DQni2IpjWa+ubToh+70AJaI1LEh qcbmLduQcxAU7GirHJ5QAVQ2+cVDHaJhoOhQT00P7PPUkSuCPuU/FOb2p3j4vyyh6kL7Uaus3Ys lRatXhDyPvIJRobb4/sckl2wlqwqHVe95hJoFR6rll/gXhKoQVnzfFnRylX4ye1EG9o/pV6XBvR nwnrWkmRy1X78b23ab5lUKovqaL4SbFTb0K0fjr4l6XLbLBPIegOCygPklThZxvxkmycIhQ2gtw jxGkLQYEks5Q2EWV2cuLuHxGLtw4vgDCRoJ9ct9w2/y1jg8utkDW4TEGW2LTAd06bin5CBigvBZ suYf5WdrSbojB3YVWT3QNODbFiSqYoNH1os4lhdo= X-Proofpoint-GUID: GOJSID8ZmHMKsbWGdFbBqQjm8RS_8Ff- Content-Type: text/plain; charset="utf-8" We're doing precisely the same thing that __vma_exit_locked() does, so de-duplicate this code and keep the refcount primitive in one place. No functional change intended. Signed-off-by: Lorenzo Stoakes Reviewed-by: Suren Baghdasaryan Reviewed-by: Vlastimil Babka --- mm/mmap_lock.c | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/mm/mmap_lock.c b/mm/mmap_lock.c index 9563bfb051f4..7a0361cff6db 100644 --- a/mm/mmap_lock.c +++ b/mm/mmap_lock.c @@ -45,6 +45,14 @@ EXPORT_SYMBOL(__mmap_lock_do_trace_released); #ifdef CONFIG_MMU #ifdef CONFIG_PER_VMA_LOCK + +static inline void __vma_exit_locked(struct vm_area_struct *vma, bool *det= ached) +{ + *detached =3D refcount_sub_and_test(VM_REFCNT_EXCLUDE_READERS_FLAG, + &vma->vm_refcnt); + __vma_lockdep_release_exclusive(vma); +} + /* * __vma_enter_locked() returns 0 immediately if the vma is not * attached, otherwise it waits for any current readers to finish and @@ -77,7 +85,10 @@ static inline int __vma_enter_locked(struct vm_area_stru= ct *vma, refcount_read(&vma->vm_refcnt) =3D=3D tgt_refcnt, state); if (err) { - if (refcount_sub_and_test(VM_REFCNT_EXCLUDE_READERS_FLAG, &vma->vm_refcn= t)) { + bool detached; + + __vma_exit_locked(vma, &detached); + if (detached) { /* * The wait failed, but the last reader went away * as well. Tell the caller the VMA is detached. @@ -85,7 +96,6 @@ static inline int __vma_enter_locked(struct vm_area_struc= t *vma, WARN_ON_ONCE(!detaching); err =3D 0; } - __vma_lockdep_release_exclusive(vma); return err; } __vma_lockdep_stat_mark_acquired(vma); @@ -93,13 +103,6 @@ static inline int __vma_enter_locked(struct vm_area_str= uct *vma, return 1; } -static inline void __vma_exit_locked(struct vm_area_struct *vma, bool *det= ached) -{ - *detached =3D refcount_sub_and_test(VM_REFCNT_EXCLUDE_READERS_FLAG, - &vma->vm_refcnt); - __vma_lockdep_release_exclusive(vma); -} - int __vma_start_write(struct vm_area_struct *vma, unsigned int mm_lock_seq, int state) { -- 2.52.0 From nobody Sat Feb 7 22:21:30 2026 Received: from mx0a-00069f02.pphosted.com (mx0a-00069f02.pphosted.com [205.220.165.32]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id BFA962BE7D6 for ; Thu, 22 Jan 2026 13:02:57 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=205.220.165.32 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769086979; cv=fail; b=jklWA/k1F/ZzEGfKncpNOemJVjDvWWaGDSTvc1K/T+j/sEm+yS0k2J9k5dA66v0Q/7rBGheEptLzEe23sn3lwCRmYXmgB0tWDpfA845kFR5b3jrdasOq6LvU94wK3GR+c9s2oTQST276Tn4l1yyRlLlmLHKMIRpiToXddO/CxBE= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769086979; c=relaxed/simple; bh=hlNrNdCg/kgMjPHZkZBJ4wW9F0fGLAy1pA4egMZm0/g=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=TbdPdogjMTLZm0dIelyogK4W/ZKBDCaq+TjmUmaQp4RqYVHCe9HBVHjG4tNE5SqwxJwyZVsKu6Al+9VrmHSG/dCzze8zJxtMDQOiUcLnAQV4XO8BGdPlliue7jEyyQtTo6gVi3rSnfW5zC9sa8LUrFTC1/BG4ztEWhISbtQ6qXE= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oracle.com; spf=pass smtp.mailfrom=oracle.com; dkim=pass (2048-bit key) header.d=oracle.com header.i=@oracle.com header.b=oq62KpqZ; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=RMEIkI4s; arc=fail smtp.client-ip=205.220.165.32 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oracle.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oracle.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=oracle.com header.i=@oracle.com header.b="oq62KpqZ"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="RMEIkI4s" Received: from pps.filterd (m0333521.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 60LNL0OJ3266582; Thu, 22 Jan 2026 13:02:18 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=cc :content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s= corp-2025-04-25; bh=0omcCeG05KRpcGsbKGwuo55GUCBvKXjddLZ8sGvO8sA=; b= oq62KpqZJw0f9nPd4jlOpB+G7gBipqb2OUxrabBfd8KWf/XQeIDcjXjaZ885ZARR TOpE3QP+Tr1w+EHLVC8zdvczJZ/qXBQcB3NLDvwv5xz5KzcJrDxhJzxaMXcyWdVQ mJfhzh2Ewdy/IeZsRo6/udtuXe7KJVsSBRxeaeVYWk0Pi8vAoAYMJz9RYkFfaxSi w7W+nmvv/KS5xgr53Isapiu0T+7AyXoN+tB47zCKQQ+rxU6ikQa6AiiDwXAhu6GK BCgXkes7Rl8mhpZNSSDRU13WYE7KAn0519euJcp+1nS/Dc0gweCkyc+i94+9WsKb SnEvXah6VGx+KECoFogvow== Received: from phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta01.appoci.oracle.com [138.1.114.2]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 4br1b8fp77-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Thu, 22 Jan 2026 13:02:18 +0000 (GMT) Received: from pps.filterd (phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com [127.0.0.1]) by phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com (8.18.1.2/8.18.1.2) with ESMTP id 60MCSauv015510; Thu, 22 Jan 2026 13:02:17 GMT Received: from ch4pr04cu002.outbound.protection.outlook.com (mail-northcentralusazon11013060.outbound.protection.outlook.com [40.107.201.60]) by phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 4br0vct7gd-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Thu, 22 Jan 2026 13:02:17 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=byjo0qBhHVz0Z4B6l/o+0KoO/ZQEW5LoTq0YSm6w0uQ4uHC46lYm+ux7kErDz00kW42U9niuApoVAHAuRMM4nTmNr2Z3AYgwXWVgfGZdUhd4/Dk87zNU7sueRWc1lsyHqsMNek3lf035z+2WNTVgzsY3mLgYb84LBUX4FetHi0udVs3aPdtAYEDTLxuGTb0FTnKHA2Sjjod3Z/dPpu6S2Yy5tPpn0ajiYFIVHEmGTr9sQgAKTbb08f6Ry4pnCJyA5V4WM+pPXuDvWrV6oFFNs7mamuJmeGIfpESyRO/8DghNq2HcBWFNa2ioAzRyREq504eAfHfVdmjKJW1HM1012A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=0omcCeG05KRpcGsbKGwuo55GUCBvKXjddLZ8sGvO8sA=; b=wMmfA2Hm40fRB4oU9hEHRuliE7tmmVhkbWITkNGy4ENUL2xnkhAx8V6IZJck30UZnr1e+Rr8/Dx5vCFg3R9WjPIvZoBjmI0IIxEeKtKoWJOVAjLwwVDkiJri9odsMPJWnnAYXoUCNPEbGay+BolftR1fAfIdGPsvdhLmH1hT3uuDe4nHS8vaLBfZmp1Hj4oxgWg9TF7I1DrLi9PsvFG8VoPg3cvWbq01Y+BXbogfsMp8EFTMnhfW2SgdYvCiWrrYJuXfsDG/zg/LUa9ISx7jDkP4K0WhRpxa6VjQRHu4E/56gJTENzr9IPbtT0foQDN3rd0oAMvKn/JnoIR6jQObAA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oracle.com; dmarc=pass action=none header.from=oracle.com; dkim=pass header.d=oracle.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.onmicrosoft.com; s=selector2-oracle-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=0omcCeG05KRpcGsbKGwuo55GUCBvKXjddLZ8sGvO8sA=; b=RMEIkI4smHSrwkBQ92OnEjImZKMFKcEMWysP5GJn+BPbesITS1NDjNyX/93OQPKnWDBYSIpXBo8iPfDdzOgZb7XD5xoaGfGAdSBJFno0sp7enUDfXMkBFmI2zwvt51L4KBBk2KAC4dWcUFcQ3REvXpT3o3AFpJqG9cYUkE6KCLw= Received: from BL4PR10MB8229.namprd10.prod.outlook.com (2603:10b6:208:4e6::14) by DS0PR10MB8198.namprd10.prod.outlook.com (2603:10b6:8:1f4::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9542.9; Thu, 22 Jan 2026 13:02:14 +0000 Received: from BL4PR10MB8229.namprd10.prod.outlook.com ([fe80::552b:16d2:af:c582]) by BL4PR10MB8229.namprd10.prod.outlook.com ([fe80::552b:16d2:af:c582%6]) with mapi id 15.20.9520.005; Thu, 22 Jan 2026 13:02:14 +0000 From: Lorenzo Stoakes To: Andrew Morton Cc: David Hildenbrand , "Liam R . Howlett" , Vlastimil Babka , Mike Rapoport , Suren Baghdasaryan , Michal Hocko , Shakeel Butt , Jann Horn , linux-mm@kvack.org, linux-kernel@vger.kernel.org, linux-rt-devel@lists.linux.dev, Peter Zijlstra , Ingo Molnar , Will Deacon , Boqun Feng , Waiman Long , Sebastian Andrzej Siewior , Clark Williams , Steven Rostedt Subject: [PATCH v3 06/10] mm/vma: clean up __vma_enter/exit_locked() Date: Thu, 22 Jan 2026 13:01:58 +0000 Message-ID: X-Mailer: git-send-email 2.52.0 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: LO2P265CA0021.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:62::33) To BL4PR10MB8229.namprd10.prod.outlook.com (2603:10b6:208:4e6::14) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BL4PR10MB8229:EE_|DS0PR10MB8198:EE_ X-MS-Office365-Filtering-Correlation-Id: 7a0d77a7-d92c-4346-6c1b-08de59b6767b X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|7416014|1800799024|366016; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?RkV/fdWtGZQ38lSrfpL73fRiEVKOHIisE7RX//owUGG4y1amWhf6ZeV3STj9?= =?us-ascii?Q?ycbJDTax/PQY9h5TsEIVkpEx9uo6ToLqBLm2hTtFj28ETd/oqh8vOzTXU9HE?= =?us-ascii?Q?0q89/e+6noYYjRlV9WJUJOGMsN57GqPzlWHOdmXNExtGu8ip5LfiTOFyPHd0?= =?us-ascii?Q?UmvEcvKfDRr8AzGECKPzC6Ot5byYLbjPkBl6OQ+oTrNQkHGL1jNyIeHFWhDf?= =?us-ascii?Q?djMk46zFKJhjT1dWBZClZHhEknnl7X+Qx+TOOPMzoguxK7ZIWo9ib1HW78F8?= =?us-ascii?Q?1iTuc2XbeRKKw3ltiYS7l73jn6yWCeYvO+HoHuPY/SWgpY4no8OU2y1cLDnm?= =?us-ascii?Q?XM8P7xPAq5wcaddJRX70HXHDmwVXaQAyqG36qy0GdmvaXZ0aeKuKZbZrx1EC?= =?us-ascii?Q?wl4aVC7sS7KKbMgfHbABwWguMQvY/vX8GP/zep0o0FIn9jgglBYqw37ZnhO+?= =?us-ascii?Q?qbLYwt8hzvXLoMbiDcBpOdlIDKldeQRKbACGbI4vVoaNbnSnYx0sxd5k+q4/?= =?us-ascii?Q?j1zgy1C63/xZn5KuBCrnJFtdebxDiOfNUpbgCB4I1QGKXI+Gc3RK3lNOBBeh?= =?us-ascii?Q?5cdc3qC4/rly9BESJ04a052PhTd2mN9z6GDVAA2YyfqEt4wF8IDoatd5Vup1?= =?us-ascii?Q?rOeyJkE+8gxwPivwdZO1+Ab/SZ9WCTLy+kKR9F/gsCQcT5xzjqSM4y8Y8ZGk?= =?us-ascii?Q?TAK9ReamNWl4uWJt1lLRsljTTrF9rhv2t6alci+Enya9oK4x4aHHAwkynZ86?= =?us-ascii?Q?h3VgOHAp1/o0OeDQE1nfZrLtzv9eqIyHwWe4aTEt+uDVIukKADGXnDLDYvmI?= =?us-ascii?Q?R4ljOM142Z9npV/eflPGw2jW36f3MGvo297Tlw1mnmB2+JkxzYGuq2PM1rb9?= =?us-ascii?Q?1vCs4xnRvfZBnNwAnRLf/GyH8ZCwxKRIygrEz8J+Bs2shAS1UdKP7ciTxEtF?= =?us-ascii?Q?l7tW1HDAcpRX0hkD+9T1iTEnS6UOiMnL1iMfoOivyaUzBFBwinHbhepI1P+8?= =?us-ascii?Q?Bs4/pma2IlreTWeuyjyUWmTYhxJIVgb5G23JOmyWlX0BeJZ84NsfEdtQLcNl?= =?us-ascii?Q?iyWfAQSVqEXN7M4YKJPu13r2i6yo4nZX6otpuQ01ETkLGPnIg7NbOsjGIzFJ?= =?us-ascii?Q?h3LVpcIt8kQCQDonhPTqWjYBa+ktpM3F/oIkTRGiv4yB/F9M/JhQxdSjs5hH?= =?us-ascii?Q?Y1ARhgYt32QKjO43gvxg+qPdopI+N/hXMqf9beuvJ5QVAC5vllOytcdltY8O?= =?us-ascii?Q?3qgbaFRDqoALLsaP/peNko91BP4S06d1TBZRlRGC+HSfAYwpwL0McqvNm3T3?= =?us-ascii?Q?sYSptcrVJ9xiZfH3nxOZk3WSjPv57HUSQa1OYsYgaIO9Bvm86fQR5dxEzXBV?= =?us-ascii?Q?qIyvswUbTTm8tzl32paIKbh2t2SxtXxVOmX3/XUO5EJIDLhw9YPH/1Z0DBWS?= =?us-ascii?Q?/AOGdYRSu4XFqVeIV9O4VOR+j1vct1iomCgWEoCCCO6JXSDAL9/MJvPtUB2A?= =?us-ascii?Q?TD60C0847VeLRhUs+6bNSw9TJW1o8+qA1QLaC8bR0YHLG25OZh421flo4+NV?= =?us-ascii?Q?C+KLp14x0gQ+hrGiwVk=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BL4PR10MB8229.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(7416014)(1800799024)(366016);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?z7dtLJPXIaZbg8QBKIOptRPOatIHgI15YAgnCgGlebrDse+ZwioQ3VTR13CZ?= =?us-ascii?Q?nS30d2bxb/Rtd2bJ6qqaYlFOOyNszYY8Nlspw+7DjJU8QB/Mizzng+lNt2a7?= =?us-ascii?Q?tOXpHoaG+lO+oV7d6RHZWOgJ9nPLEyxOEc3Kh71PCyXtpgIa6hatw/N9g84x?= =?us-ascii?Q?+/6FP+DtPyeqcBInV6JNkzXBxyxnRv00kpEVvCskApkO04h2zweyPjrwkUk2?= =?us-ascii?Q?778WQ6g7H7iLVRqbbW4DuBuOSUd4njOYkBfH4srLnC9eDJw8Wn0LEt6xsGir?= =?us-ascii?Q?rCmqbSrjYjsEne6olpfgTgHE8uz7zlVZVtPMLB4j2NRGDAyLrjMAVLRoSli5?= =?us-ascii?Q?r0x40IlKs9jeVlCdw6QPVzkiEYd+7TaRxfYaJ7ngggg/tZBarJUc6vsNFtfJ?= =?us-ascii?Q?VZn4dOuE2ysP9TYL/CU2lAWjFYG6HFd/My3WPMnHkC57KSvCT7MK5Fk5u15k?= =?us-ascii?Q?Co0QIUXxTUYBcl7lbeMGyi0QBpbncGrIEMHORkWg4OtQX8syzOpzwLXOnoXJ?= =?us-ascii?Q?dgJ8iGSMSk1hlXN+17tizEb8xzsbOpPjZH/xXjCvq9Hz0mWxfNprUqZc1ZBO?= =?us-ascii?Q?R5iTG1djD19rXkrPpRbCexkM+sbwD8ntOrsFgOxQQjmmHDMm6lMb2Wlq+YL5?= =?us-ascii?Q?hdrUWUQ2iNoV/ZVOa55rkj4cNTOkbkoSVkMZzE+ICSFKM7birCCUiRNTE0xy?= =?us-ascii?Q?wy6jNl4ntSe0IeMpd4d7ecbMbC7kvkEeb9e6AZbsZm87xbfzph6i1T3I68RX?= =?us-ascii?Q?pbil6reOyWKER+cjqmQ43lx0QbrgxIODdJ2Y6/GOupfkIdxrqluXN8vb2X9k?= =?us-ascii?Q?QvadEyPrBSfbzUdxjjUIsfmPM7nd7CxLbvJHzf/agk+WTf/mes2wk46U72Dz?= =?us-ascii?Q?F4fAaw3UnT3NIOnAbXQNB9zeYpD3v9yIMm3+sl6glcW4y/C9D77ljZzUSFSB?= =?us-ascii?Q?yL/tTxacxe/FGF78bNz7Q0Gh/xSGUOYAwL8yCjMuwi6saml+3tPUwUZ9cvNt?= =?us-ascii?Q?zzNB3VGTpMjlmkkE2EobLAOLsbSjLn/eZRZ6220Ph427fNpX3IeWEz7fsxyH?= =?us-ascii?Q?e+iDhI8MPkk9pm5yP48xIZl5bxiuLFhgaZuGhiVGuIUXFR9i0I4BJ3575Dxq?= =?us-ascii?Q?9U4K5z0TiRdduMlugVVCNBzKaj5nVoCkfusoDSsEMrdBn1zHYtQyc5L70GyS?= =?us-ascii?Q?Ews8B28RGwOkXaKhcPX7/KNkXYUgeaHTV8H2fLdnHskcCU5InX1EcmBPO/sF?= =?us-ascii?Q?HyI1V77X3PkPb2XW4b74SAYxzDlmd4VgWXDa8u996Khc/1OizESz6RH37uog?= =?us-ascii?Q?XRkA527gJJ5N7eLUYxwBjnOhV+uQclrJtXO/92eOQt3/NKD5smjuEe5ZxS/7?= =?us-ascii?Q?AXt2eMHcAVp7GsvaqQb3s6n0a2Eea/Wp61aq7Enca3uDJxKPZ/U+vN8U9sxv?= =?us-ascii?Q?svvi2aivJ51dUK94ycnJ0VpiDWwQj6v2MGK2bumIYY3unSkHD8jAj2sEVf+2?= =?us-ascii?Q?zsh5kX51/XQmZlLuY3NI4LyRByJdyZcwLfCJEj3qS94k2Bcgzomvr8S4fhAv?= =?us-ascii?Q?u2QtUQe1EGWDCK7yv1+47HE1n15SND206FHiOvLjdMPoVd6zQP/7UIoPKi5G?= =?us-ascii?Q?Pah5EgWbm07fbIAM6vp0dbaiDLqHGRVWvliehuIVkj8MOuTkxBwUB15kVhzS?= =?us-ascii?Q?gYa8o5IwFNY6bIMNJKCZYJbCXeUqJuzJ9mKU/JFv+BtaSj+PDVWgWOZPi7ji?= =?us-ascii?Q?xO6fjU7x3AS03L2PXkIAApdd1aPxTd4=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: ISjdyzEmHEF9l4yRM2i6UGAugMryhs2YlrjHPvLU3v49GFUq0c3xoeX7smGqLSLxBkGKgqixFwIVaNFumFGg8U0iVLhnOzRGmsVBg3DnI9hN0mfGR201kwglnOwoUuFsHgCCUmXQJ17MbZq2unsmkUX0FV2tCTMD+WIybEdr3BJC+KkosBMoMBeIa4NxzvHFI1FyiWrXKMve6De7XDyhhlX/nD0vUko0famMyiiRB5LcALoLZEG2nHSTDiMWvhlfuwDFuAzwjKpzryVV0KaHNO97prwSmQsE45Vy5Frd6NGAq1orWHeGuTwPwXW5Y7fCQPv+5vfSj4kBPW7dt6teH0KB9wgjsw6V7THEKGNQY5YH6QUuoJUPLx4COBVFXNLkVNdOrOA83kNVXNajgDNJTin/byLj4AZkiFzwgGw7l0h14fxHRwfz02QEay+bGvPW2SFKK0ugoQ97tmpOJgRizFKD3/qRCVrsdxz1eNdeMrKR41s9NE8+zSkkf4xH+QpAkpPwdQbbUzB+PmrLCbjxJEXq9dzTZpkyF8QG3GelJRfXdQqiLNtXbj/Qd+g2LvYZ/QLZkaASRkM93LjtEy7O2QOu4qNQ9MWTUUylFV9/NDE= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 7a0d77a7-d92c-4346-6c1b-08de59b6767b X-MS-Exchange-CrossTenant-AuthSource: BL4PR10MB8229.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Jan 2026 13:02:14.1007 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 4e2c6054-71cb-48f1-bd6c-3a9705aca71b X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: Ynjn0alwasoiKJl6G2ncOwRydvoIhwoOhOtWia/DCkN0mk5o9qiII+x55iiVH9fXo4LKbgO1bdd1ZU8aBWamc23dnTyzbIegMyNvCxdyGG0= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS0PR10MB8198 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.20,FMLib:17.12.100.49 definitions=2026-01-22_01,2026-01-22_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 malwarescore=0 mlxscore=0 adultscore=0 phishscore=0 suspectscore=0 spamscore=0 mlxlogscore=999 bulkscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2601150000 definitions=main-2601220097 X-Authority-Analysis: v=2.4 cv=WbcBqkhX c=1 sm=1 tr=0 ts=69721fda cx=c_pps a=XiAAW1AwiKB2Y8Wsi+sD2Q==:117 a=XiAAW1AwiKB2Y8Wsi+sD2Q==:17 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=z/mQ4Ysz8XfWz/Q5cLBRGdckG28=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=xqWC_Br6kY4A:10 a=vUbySO9Y5rIA:10 a=GoEa3M9JfhUA:10 a=VkNPw1HP01LnGYTKEx00:22 a=yPCof4ZbAAAA:8 a=Qfc5p1S1sjZ_rCI9KBYA:9 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMTIyMDA5NiBTYWx0ZWRfX4HuLlOoG0Bpc Sr+7W5d4OMhBxFyc5FN7NRO8emLdNEdTq1gMjCYej7u/24+zLgkT1krWx68KgHukrrvSDTMMw3I mTXQTncSclyS960hj81ggV0D3/uoAxn7O15vxL+6IwR/n/Z9+PcrY9DkhPlwy+9QunDks3GVv/L CloPUkmt45oGHDB+yeddYX8nF/Q2ok5CgnwsctsMgKEtGN4jepiB+S7KjoghWDOGywQho9BTtp6 ef4qL8bz8mcyic3v5KVHyc6sw9kYnEjbv5JPxFp9wqo8ry2A0oiZy1lF+vNOJ3A1HRCaWlrn1Ez y3tFMrCcKMdBN/fmyzW6kR6bdswiQ0abVb8WlrNSwXIqeR5EImu7nCRcC/MBEpqysLt/D7rHOWf H4ra/CoXSJKFjwpWGbmiAigJs2eN7I/nwXTWHnFerimgWNmrrXit8X9eKMwpKkM81RQ1t1Nd/f8 82cmCLwRlEE4/NVlCfA== X-Proofpoint-ORIG-GUID: GBhTocysMjmLMakwYqRZQvWz40n60i_6 X-Proofpoint-GUID: GBhTocysMjmLMakwYqRZQvWz40n60i_6 Content-Type: text/plain; charset="utf-8" These functions are very confusing indeed. 'Entering' a lock could be interpreted as acquiring it, but this is not what these functions are interacting with. Equally they don't indicate at all what kind of lock we are 'entering' or 'exiting'. Finally they are misleading as we invoke these functions when we already hold a write lock to detach a VMA. These functions are explicitly simply 'entering' and 'exiting' a state in which we hold the EXCLUSIVE lock in order that we can either mark the VMA as being write-locked, or mark the VMA detached. Rename the functions accordingly, and also update __vma_exit_exclusive_locked() to return detached state with a __must_check directive, as it is simply clumsy to pass an output pointer here to detached state and inconsistent vs. __vma_enter_exclusive_locked(). Finally, remove the unnecessary 'inline' directives. No functional change intended. Signed-off-by: Lorenzo Stoakes --- include/linux/mmap_lock.h | 4 +-- mm/mmap_lock.c | 60 +++++++++++++++++++++++++-------------- 2 files changed, 41 insertions(+), 23 deletions(-) diff --git a/include/linux/mmap_lock.h b/include/linux/mmap_lock.h index da63b1be6ec0..873bc5f3c97c 100644 --- a/include/linux/mmap_lock.h +++ b/include/linux/mmap_lock.h @@ -209,8 +209,8 @@ static inline void vma_refcount_put(struct vm_area_stru= ct *vma) __vma_lockdep_release_read(vma); detached =3D __vma_refcount_put(vma, &refcnt); /* - * __vma_enter_locked() may be sleeping waiting for readers to drop - * their reference count, so wake it up if we were the last reader + * __vma_enter_exclusive_locked() may be sleeping waiting for readers to + * drop their reference count, so wake it up if we were the last reader * blocking it from being acquired. */ if (!detached && are_readers_excluded(refcnt)) diff --git a/mm/mmap_lock.c b/mm/mmap_lock.c index 7a0361cff6db..f73221174a8b 100644 --- a/mm/mmap_lock.c +++ b/mm/mmap_lock.c @@ -46,19 +46,43 @@ EXPORT_SYMBOL(__mmap_lock_do_trace_released); #ifdef CONFIG_MMU #ifdef CONFIG_PER_VMA_LOCK =20 -static inline void __vma_exit_locked(struct vm_area_struct *vma, bool *det= ached) +/* + * Now that all readers have been evicted, mark the VMA as being out of the + * 'exclude readers' state. + * + * Returns true if the VMA is now detached, otherwise false. + */ +static bool __must_check __vma_exit_exclusive_locked(struct vm_area_struct= *vma) { - *detached =3D refcount_sub_and_test(VM_REFCNT_EXCLUDE_READERS_FLAG, - &vma->vm_refcnt); + bool detached; + + detached =3D refcount_sub_and_test(VM_REFCNT_EXCLUDE_READERS_FLAG, + &vma->vm_refcnt); __vma_lockdep_release_exclusive(vma); + return detached; } =20 /* - * __vma_enter_locked() returns 0 immediately if the vma is not - * attached, otherwise it waits for any current readers to finish and - * returns 1. Returns -EINTR if a signal is received while waiting. + * Mark the VMA as being in a state of excluding readers, check to see if = any + * VMA read locks are indeed held, and if so wait for them to be released. + * + * Note that this function pairs with vma_refcount_put() which will wake u= p this + * thread when it detects that the last reader has released its lock. + * + * The state parameter ought to be set to TASK_UNINTERRUPTIBLE in cases wh= ere we + * wish the thread to sleep uninterruptibly or TASK_KILLABLE if a fatal si= gnal + * is permitted to kill it. + * + * The function will return 0 immediately if the VMA is detached, and 1 on= ce the + * VMA has evicted all readers, leaving the VMA exclusively locked. + * + * If the function returns 1, the caller is required to invoke + * __vma_exit_exclusive_locked() once the exclusive state is no longer req= uired. + * + * If state is set to something other than TASK_UNINTERRUPTIBLE, the funct= ion + * may also return -EINTR to indicate a fatal signal was received while wa= iting. */ -static inline int __vma_enter_locked(struct vm_area_struct *vma, +static int __vma_enter_exclusive_locked(struct vm_area_struct *vma, bool detaching, int state) { int err; @@ -85,13 +109,10 @@ static inline int __vma_enter_locked(struct vm_area_st= ruct *vma, refcount_read(&vma->vm_refcnt) =3D=3D tgt_refcnt, state); if (err) { - bool detached; - - __vma_exit_locked(vma, &detached); - if (detached) { + if (__vma_exit_exclusive_locked(vma)) { /* * The wait failed, but the last reader went away - * as well. Tell the caller the VMA is detached. + * as well. Tell the caller the VMA is detached. */ WARN_ON_ONCE(!detaching); err =3D 0; @@ -108,7 +129,7 @@ int __vma_start_write(struct vm_area_struct *vma, unsig= ned int mm_lock_seq, { int locked; =20 - locked =3D __vma_enter_locked(vma, false, state); + locked =3D __vma_enter_exclusive_locked(vma, false, state); if (locked < 0) return locked; =20 @@ -120,12 +141,9 @@ int __vma_start_write(struct vm_area_struct *vma, unsi= gned int mm_lock_seq, */ WRITE_ONCE(vma->vm_lock_seq, mm_lock_seq); =20 - if (locked) { - bool detached; - - __vma_exit_locked(vma, &detached); - WARN_ON_ONCE(detached); /* vma should remain attached */ - } + /* vma should remain attached. */ + if (locked) + WARN_ON_ONCE(__vma_exit_exclusive_locked(vma)); =20 return 0; } @@ -145,12 +163,12 @@ void vma_mark_detached(struct vm_area_struct *vma) detached =3D __vma_refcount_put(vma, NULL); if (unlikely(!detached)) { /* Wait until vma is detached with no readers. */ - if (__vma_enter_locked(vma, true, TASK_UNINTERRUPTIBLE)) { + if (__vma_enter_exclusive_locked(vma, true, TASK_UNINTERRUPTIBLE)) { /* * Once this is complete, no readers can increment the * reference count, and the VMA is marked detached. */ - __vma_exit_locked(vma, &detached); + detached =3D __vma_exit_exclusive_locked(vma); WARN_ON_ONCE(!detached); } } --=20 2.52.0 From nobody Sat Feb 7 22:21:30 2026 Received: from mx0b-00069f02.pphosted.com (mx0b-00069f02.pphosted.com [205.220.177.32]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id EEE31257851 for ; Thu, 22 Jan 2026 13:04:24 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=205.220.177.32 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769087066; cv=fail; b=hLRd0RzjheaxUs7woQQgTp2ETY0ek9jNRp38sX1TPAAxCBJP2AewIJmkfF07GiaKYBJX+NEe4yQ9txGlYqJlg7OMD8upmtUcpogWncNO3aPke0O5T2CaXS6N/p0fxXdLvOfdwSgIE4LUhN1CPZRyN8MnO94fiI2g+4xKoqDfkdE= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769087066; c=relaxed/simple; bh=ELQoIMUJiXvgiCyf0Wu1XMlLWwSMC3Ki9Z97TFScH/w=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=toR+Egsz/k//t0gMZOCl8b53p61ihowaRB6zW93fbGPZQ8UVZAEuDkswwDY/tIfsb+EZuKwL5XTxuwSOWn3RV+dhCMtPhV2ubAzQeJab4vbbqU8iLljZWDlLk5QvE1fX7ionuIuoEH4rSpCwOWeGAp6I1SDdFrRIOwtXJkT2cbY= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oracle.com; spf=pass smtp.mailfrom=oracle.com; dkim=pass (2048-bit key) header.d=oracle.com header.i=@oracle.com header.b=H5hWQd4x; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=s9hllpK8; arc=fail smtp.client-ip=205.220.177.32 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oracle.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oracle.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=oracle.com header.i=@oracle.com header.b="H5hWQd4x"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="s9hllpK8" Received: from pps.filterd (m0246632.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 60MBFZUb3523773; Thu, 22 Jan 2026 13:03:00 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=cc :content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s= corp-2025-04-25; bh=hXqUcP/kbNPK9GH0qkhSuzF9fSNu5zWTlel92eo+7XI=; b= H5hWQd4xvEsC1TQSLGCiwmU6X0LwhKt4Qsy3LxvPn9vO+WEwBg6/yTQpXn6qkxqg JU/w/i8dBJxavblU5Se4RVG3ZcKshcR1Nm3gv6MFeG1quL5/CoJZdlxRmY+ri+Wt XH++EfVcZDjIUYzv9GcXExwcE7398Kht1/7hEVu2GpT6b9hBWNqGyQ0CQ2zQMCXr 55XA95qYBry9RxiVgPVJgdGJjaJJJI1uNy/A/v4ZwQM8xaDxKYBDrpoVe6ouLp8C d0GgfbFCuVGi8I7PazIEeyicxXzSDyEIIkwwu8+wZJjnu5qafvy8FueOo6+j3dy2 wGzL3utdIHOATINngKI7BQ== Received: from iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta01.appoci.oracle.com [130.35.100.223]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 4br21qfuch-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Thu, 22 Jan 2026 13:02:20 +0000 (GMT) Received: from pps.filterd (iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (8.18.1.2/8.18.1.2) with ESMTP id 60MCejMG022456; Thu, 22 Jan 2026 13:02:19 GMT Received: from ph0pr06cu001.outbound.protection.outlook.com (mail-westus3azon11011061.outbound.protection.outlook.com [40.107.208.61]) by iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 4br0vgjp38-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Thu, 22 Jan 2026 13:02:19 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=P8olyow8ncL6LpYkeE6O4vMxwL6D4KwSC9pid1IGstYOQiNPhA1a7plcjTlP2Wv2lzrZhHlotJNdZ0NrbYwVI8TmxVA6KP/0cxp7NpyPjsqANBxLMOcmjT00no7dt3ODWdlkEccpAFffYOhDkRVJQg0ckv5kyQ3vdabqpSlJ/sWm7c4jEYD6jlmviompevAui//d6FT5TN4rBRXXp01gqx+oGW33J3woDRB1Sj+9ka0T915P3no139HSfbZWJBtXmrJ36D+XHwpEMgfoz2uVFzuTbTOwzIxOfwGhU3juPhjhPgjxXVq9LZV8T4By0wdLdU0PJ0lu1oURv/EmNtaDqQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=hXqUcP/kbNPK9GH0qkhSuzF9fSNu5zWTlel92eo+7XI=; b=iL7N/0yoSxymqJXhLsmJsNNMczP8G91l4LCbaZWQbp7pVbappu5aZYg4NW+Tf7fgOFPk3XwYLjnDv1pMxNqStvpz+qIZObNLOmutod3PuH+nqfGAjFnhF1RT/MNtW81wXmm9jGY9VE8JB/IUQm20w9j4h+G5gbXfEESqApc8Nwa3LRPa9lOZJeErp7pPnzqjht7ura7aHDhrba2WJX9Fbkqfpt64e7HwrA2MV7OhHkTaHSKau4/ggPn7Qkpq8ZvcD3i5fVIvLkSKHRvjWPA6Ka+jS2R7HF/5FTWHyQQcuTzRZdsnmvehnKVsK3nE95Fu8QwZ944UoZ9PJf88Z4In9g== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oracle.com; dmarc=pass action=none header.from=oracle.com; dkim=pass header.d=oracle.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.onmicrosoft.com; s=selector2-oracle-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=hXqUcP/kbNPK9GH0qkhSuzF9fSNu5zWTlel92eo+7XI=; b=s9hllpK8IU+ynALkSUA+kFfnJpnCssxzi54YKQ4NAsRU1IGvsFnk6sNjbvzPoi4y4DxmojMmhjrkK+yZNFa/HbHDh6GTpI3iMdiaxClSoayHBEhbDlCqr9lquCUVYUnxBtijOYkb85RC+IVzAIrpVY9LTx4a45yBBqdMBSBu27c= Received: from BL4PR10MB8229.namprd10.prod.outlook.com (2603:10b6:208:4e6::14) by DS0PR10MB8198.namprd10.prod.outlook.com (2603:10b6:8:1f4::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9542.9; Thu, 22 Jan 2026 13:02:16 +0000 Received: from BL4PR10MB8229.namprd10.prod.outlook.com ([fe80::552b:16d2:af:c582]) by BL4PR10MB8229.namprd10.prod.outlook.com ([fe80::552b:16d2:af:c582%6]) with mapi id 15.20.9520.005; Thu, 22 Jan 2026 13:02:16 +0000 From: Lorenzo Stoakes To: Andrew Morton Cc: David Hildenbrand , "Liam R . Howlett" , Vlastimil Babka , Mike Rapoport , Suren Baghdasaryan , Michal Hocko , Shakeel Butt , Jann Horn , linux-mm@kvack.org, linux-kernel@vger.kernel.org, linux-rt-devel@lists.linux.dev, Peter Zijlstra , Ingo Molnar , Will Deacon , Boqun Feng , Waiman Long , Sebastian Andrzej Siewior , Clark Williams , Steven Rostedt Subject: [PATCH RESEND v3 07/10] mm/vma: introduce helper struct + thread through exclusive lock fns Date: Thu, 22 Jan 2026 13:01:59 +0000 Message-ID: <4f95671feac6b6d4cea3c53426c875f3fd8a8855.1769086312.git.lorenzo.stoakes@oracle.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: LO4P123CA0052.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:152::21) To BL4PR10MB8229.namprd10.prod.outlook.com (2603:10b6:208:4e6::14) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BL4PR10MB8229:EE_|DS0PR10MB8198:EE_ X-MS-Office365-Filtering-Correlation-Id: d6c3f46f-1f6e-4b57-7114-08de59b677a3 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|7416014|1800799024|366016; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?O8Ws21Ct9QtMK9qnWDp9DGvbZkPKNNgKevHOBh7lZ66CwAeAa9XRSdPhe+IE?= =?us-ascii?Q?f4W9ZVnjpgzEkhpa+3igRJe0nlUnQIVGzuTmzSgZpHJ3LdCJY6wFABLyhDmM?= =?us-ascii?Q?OgdFTkNervHglOI4kq6MhzoDWsmixLLw7zkwqFLM3TUCrsWp1P9s/sh8YqP0?= =?us-ascii?Q?DB7+ckuqCj9F/pJKSLqJrzQeoNAxi3vhlGU3sT9NhbWy4G84tcls2+sB0EFL?= =?us-ascii?Q?Ru7KE/Dj8rqXhtbJwNCKIqBYplvgkKA3DCLvYhJfpJxCQaf9A4YO/xL6dUKa?= =?us-ascii?Q?PCWjqUiX29QPqeywX7zf5/hrOxREZBcDs9oclmi6YzNWVZwSmgn3v0Oq3F5i?= =?us-ascii?Q?3Hc5YLC0893oR6NWEmYm8XPyz8gHdPwr21zF2XVBqBDUy1AWM2Lkkh0cvAk4?= =?us-ascii?Q?Hc84z/d2XfkD7QjSQQRPU8YtWaGMSVkhVGPtN5iV3WATYq5bmsI5ZRC+Vpuu?= =?us-ascii?Q?dOWEcApBQrLb5Qrjkc3mqf64Gm9WpwpkxRB837WXqFrgQ7d4lSSTI/GYi6wA?= =?us-ascii?Q?4WZeh6iWlTGa6IOxtQFOay9crdhB9TG1+P2A+Ou8kdfda0rlqWzeDU7DlJIE?= =?us-ascii?Q?zmZTwNmOlL0PI6SYr6G2CcONq9Hn/pC5t+6IlRhVLS55r66HEfF+5emPNOC0?= =?us-ascii?Q?YxhA+5JoExskwpK2+KOh8HogIJGR4GSNJBj4LsKNTb8uE8EdrpubtcvYLfr1?= =?us-ascii?Q?fQih4LUWJpsMxaBMMD0ZmNM3FNy6EIj8hIQFGkUsbpJUJjhdxq/NePbmu6/R?= =?us-ascii?Q?6Zgy/Gy9hJ/GE9IcJ/MqRpaHO1qWMpzsjebKD++98jf88PGxD0YQ3FByBIRJ?= =?us-ascii?Q?fgv19MxfkjpjJb+l60gEnD9gYrKShRahr5gkJmHzBUl9oTJzKbb+XXTEet9X?= =?us-ascii?Q?eIEMxZtrkqGI/zox+WVU+5JoW1pRj2m9XArwNCvONWpTodeGwBYBdKse/atl?= =?us-ascii?Q?5mFVdyM6iEjvLT4gO/sQ58425SZo2tK6lJCy9a1sJ22ozRsMDwGMsKiyH7eL?= =?us-ascii?Q?h6+Lq3RRsqmLseFp2UQ5K/OFhBlaImhR5mVJgiZq9Zd0R4Bdu5GdxKOwc1vg?= =?us-ascii?Q?qu1MWTOu+1lqUu3XGqzbEahH2kuTfgE/dtNxHY31QA4cWV+9ufZOhEqZp31N?= =?us-ascii?Q?XUuVS9uFTYSStwkn0ZqAGTkY2iP+u55wQ8R/WFb4fSFita0rbyb2XVc2mop4?= =?us-ascii?Q?X6TbuRw3euzbGAcz0rPZjUO11pv8VaEVX6nMOWiHSchzmJcdek0cD1f6t6CK?= =?us-ascii?Q?jN6QrFFICMOezT5kPcd6DktFJ3BZm0i01/6aSwnBPHJ9D+avIvnphsy4zn0B?= =?us-ascii?Q?2RThX2KEIquz9QPiX/GdcCC6Et+EfYPgWqKc9AP4TW1fJfKBchUKPrwoBy0G?= =?us-ascii?Q?MJg2n96J14IJRJ0ciYoFTneAlTEoOfA/jQj7UyIPOHH9F88ygxRmIcf3D80/?= =?us-ascii?Q?oWOxti6p2i1BN/lbK7x5IrdXDNvIlCojyxZs6vkUl7bz/ZQIO5cQEnnC4Ldt?= =?us-ascii?Q?vrjS1vSfEOv24pRf+VqsY9guyYgOzBoY6ILvnazj1k8DOtHZQfb5R2fm1j1t?= =?us-ascii?Q?72g0GUROaX9IndMz0wE=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BL4PR10MB8229.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(7416014)(1800799024)(366016);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?lzevujG/WCnW0i+DlS7XCDgAkhJWVLtcez7UyD2m+fW8SAiuQaRRdW0z2+92?= =?us-ascii?Q?zpPoVF3Sdk69ZRLs7hzooqj0ZeCU1LGMNq63TIOl8I8TkQ89by4VpiViVK8W?= =?us-ascii?Q?EvF5p0ae8mkCMdq1ba8mKasKGV6Ckf8t9dB4MBFjwlxreoBhsTlyCnRqb1qd?= =?us-ascii?Q?YvWXVxIFjLcAGHf9tGpUFpgDByyL9ukoRh1H87PbbvCSfFdPjIQXZ6kUt/So?= =?us-ascii?Q?pP//tMVtmNTQ2F19TGsBtX1c1KRKCbonnRI0XnLSsBLta9gCLkXCTJSwcKGz?= =?us-ascii?Q?2AdVp5N6+Xf9Nv7A+iUpivBvH1MdKR/0zxMl59AzlaGYTb6aRgUtGWElxteJ?= =?us-ascii?Q?YS7DkvVoGGdLUZC5dP37rpdyHoTdKDg7SCRKD7GQpPb4K4UtJ41/iqZaeoXo?= =?us-ascii?Q?vLBdnY5lm1NxWkNBdNEh/SwlufGKWUYvoUksapm6i4ObDcFe9olAT/gPFmF/?= =?us-ascii?Q?toDf/SgFpr7rENjxtKtbpGMgY0TP0Lj00DMmw1qW4/ZY2njBxZW1xyccAjZl?= =?us-ascii?Q?wXm4xfd378Fqkg3s6oFMX/jLe+vAXfjlaOSXyDL9qyxXKLm5XXvS+E4vbUF+?= =?us-ascii?Q?TH1fVFSjGm+8ivyWCmz6ZGJdnX5S7QhgL0n/PvJGFn7zdh4mD89juDC50oAH?= =?us-ascii?Q?eAhkdcF8WrTITkGin9wSVbuuCWi+HRb6hopgx0TqoTGyn8ALensI8jihIEsL?= =?us-ascii?Q?dn5iUYHqAZqxJ6ieiioeN/xBoW2n6D00Go4LrRXqe7c5pPJ6GAYn49KBMyNP?= =?us-ascii?Q?wxJsrBJby2j8VMQk54tiQPW15TAgwYd4QOGoJtBdJ2mS26DPA8PyjzxtEgtf?= =?us-ascii?Q?cN6msTOnCMC/vmMY3PeR862h12aJZRZ7d1lN5R+DjhsEuBaNf7cHG8Hun7/w?= =?us-ascii?Q?NieNLpYcWiG2OXgEo3CltQmY9hSaS23eOlEdgLFXb93xtjputyZWj15A7+BD?= =?us-ascii?Q?JZ7KZRVGX5Kx608/6Yl6NWu5F+JZvXY/csRifXZwBdCc8AM/r4LSkasaIrvm?= =?us-ascii?Q?Pdr+aOIyIYYe4xLkK25yIFgMxYqzC2nJ9z7RiWNtZy/jJ3C6KXs4nx7S2ACS?= =?us-ascii?Q?RtedfcWfmq/DYb2SR3E48rFn3u7z9bcAh2K6uGV+fAKtpDjdvbMsXDDzKU/U?= =?us-ascii?Q?jOKbKSxz2QJ6j5fCmaxRadQDSdLRWRi2OyQHsnktkyYmPNW0z6vjF7qYqJMY?= =?us-ascii?Q?X0qDlMsJod+WlDUm8eX/reRGO6QiPToetmOBlko1roUIrcBUcniK0cGH91nQ?= =?us-ascii?Q?l5+zQwM0Pbef7k69ICT/ggrtPI21Yp3I6r51I5Kd2ZTatk01JmntktklrJ4P?= =?us-ascii?Q?UXTF90ZYrThi+mIp2gbcwQ03Q8+F0b3KRyk/eN5cQoDcpVnnqf7T29piV/qK?= =?us-ascii?Q?KQ+iT8esJSHuusG7kJsOBf54r6sbFAnvMxgviGHwZn3MZkDQCpsNizFO7y+P?= =?us-ascii?Q?N9+oJENItX0Dd0Ihs7ELfivHjfFPhOXGGcXPwOvFKrKyFGVFCDfuY9WAMuh0?= =?us-ascii?Q?KWALRuS/lIN+H7JcU5zzsopCoIL02rDH+rAiqYJTL2K/DRJDNtCy/RlYOIFN?= =?us-ascii?Q?qT/JQbver662yrQb0QvX9jh5UbEtbjyA/9WFK6pE6xrwFL6MWXs73DDjXccK?= =?us-ascii?Q?lm0pQkLkqAA7P9jqbzX+DME9oyTkL6CSZZ5M2Mn9hx7n6mTRDTWGE3/m2Wjd?= =?us-ascii?Q?830r3hFpb1FqP7pUZWU2OgexbnQhwGgLuBUU61VjsGPrgRK90WJ5b7W0mNhN?= =?us-ascii?Q?pWa1t+vIgah8E5ZBZFujxZpb+9aSkY0=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: W0NTm50JYlWHjxwlNDM04Z8WIcgFitV9Hy08iCAJks54emGvjjLybxornoVpXipYuG8IuqG/LbiyAQ7xcsv5uI6QJDwGCLpbhP+fjQ6efJOXNRwial6nrfW6c2BOPaXfD+FW0zFUiMLmf1Dw4XAnUBj5wK0upX2W4eCmnvWz5Ti1Lx2cah01CErCl+2b2gZ5XgXX5aXWbb8FrOh94ZRz6owy4ArxHjOccYqt0Ox61YTDNppsCrbWxTbcLg1MVXDrpEh+wWv2s9DyFT3Oar0Cqu37YWwiaMSFFw78Y5k9g/1K25nA8YlxXbHf2PdW1735p0EsQNH3nNUVYGAW2gi66Y235blRLSaxROnrzbm93PP5qkH2hQnucqs5ScWJDt/zhGwrnHU+G3iy9qaKkS+G78IndcPgZOwcFt34bMX/7TDs3NmwFtsDQUg9ku/tGh53KV7fOZV7mB3QzLP/djCJJCXZGrMDOkFokbdan6axBLCeDguHGw64DZMmfRp3e0cI6vHHMC7ALejYE2dpM4vcOcPNiH5hddaHnOMUxyTPvjN0P9XiWltqRDDwgoPLk1vcKxgxpuS1fiODzCi1wPFhnWNkxsow8jXr4VS3MJ/0fCA= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: d6c3f46f-1f6e-4b57-7114-08de59b677a3 X-MS-Exchange-CrossTenant-AuthSource: BL4PR10MB8229.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Jan 2026 13:02:16.0843 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 4e2c6054-71cb-48f1-bd6c-3a9705aca71b X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: Q000CpUAyhf+axba8jPDV7vOo7U3J74ADfTXiAkGmEW/2w+0KohoKeJQ4wikA4ldXP9dH5uEJp5uR6NkTAyEryzbVcSLSyv01KTa41GEOqI= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS0PR10MB8198 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.20,FMLib:17.12.100.49 definitions=2026-01-22_01,2026-01-22_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 spamscore=0 adultscore=0 bulkscore=0 phishscore=0 mlxlogscore=999 mlxscore=0 malwarescore=0 suspectscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2601150000 definitions=main-2601220097 X-Proofpoint-GUID: LLHof2Z8N_bY9tOPGYeaU1vdloMTBUaU X-Proofpoint-ORIG-GUID: LLHof2Z8N_bY9tOPGYeaU1vdloMTBUaU X-Authority-Analysis: v=2.4 cv=QdJrf8bv c=1 sm=1 tr=0 ts=69722003 b=1 cx=c_pps a=zPCbziy225d3KhSqZt3L1A==:117 a=zPCbziy225d3KhSqZt3L1A==:17 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=z/mQ4Ysz8XfWz/Q5cLBRGdckG28=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=xqWC_Br6kY4A:10 a=vUbySO9Y5rIA:10 a=GoEa3M9JfhUA:10 a=VkNPw1HP01LnGYTKEx00:22 a=yPCof4ZbAAAA:8 a=YKwRDwjWlvvmDIdOP-wA:9 cc=ntf awl=host:12103 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMTIyMDA5NiBTYWx0ZWRfXyAXvN8C4+GAs AwXht9LEDlFi/JzpXiTixf/JPpmV94UjmnOjjeMsoMHgIueiznV8g+xzeP/REuFEawoRyj2JCBi 4o2MxV4n+pMyncLwflzKbLSIioxIXbvmzIEFcSPvET35ivlPf93+rvIvNpzXDL3EkF2MTC6I9w0 vr9SCo7J2uBQi8rfe7AuVk+cuJFMQ88Hm5cgHUzvv3QDbRDo9Nt6z3mfsrTKt0/OqLbeU0teQCs WL1QOSQ1ndh6b+SpJqt+X1jRANUTpaOizhEBM6QM2RwWY3J+cL20ja+2YZkGPb6UnMhioNcnrF1 TKxt7Ku95kVP7/qjQwORfpiCgPcFeMqq4ZScRDGZ6TB225I1VluTYngUKi8QOgS9Ln8HBvtOmBh XpDItBvLWvJuiloVIyIYUtIBCqx1X4sIjfUbPzoCrJljqwbfKoCeJXw2vjUQXkN0J/3uG9aL5FE vn+iNzhCecKOimqrSsSe5mihtU6XeliKGf/mBjpQ= Content-Type: text/plain; charset="utf-8" It is confusing to have __vma_enter_exclusive_locked() return 0, 1 or an error (but only when waiting for readers in TASK_KILLABLE state), and having the return value be stored in a stack variable called 'locked' is further confusion. More generally, we are doing a lock of rather finnicky things during the acquisition of a state in which readers are excluded and moving out of this state, including tracking whether we are detached or not or whether an error occurred. We are implementing logic in __vma_enter_exclusive_locked() that effectively acts as if 'if one caller calls us do X, if another then do Y', which is very confusing from a control flow perspective. Introducing the shared helper object state helps us avoid this, as we can now handle the 'an error arose but we're detached' condition correctly in both callers - a warning if not detaching, and treating the situation as if no error arose in the case of a VMA detaching. This also acts to help document what's going on and allows us to add some more logical debug asserts. Also update vma_mark_detached() to add a guard clause for the likely 'already detached' state (given we hold the mmap write lock), and add a comment about ephemeral VMA read lock reference count increments to clarify why we are entering/exiting an exclusive locked state here. No functional change intended. Signed-off-by: Lorenzo Stoakes --- mm/mmap_lock.c | 144 +++++++++++++++++++++++++++++++------------------ 1 file changed, 91 insertions(+), 53 deletions(-) diff --git a/mm/mmap_lock.c b/mm/mmap_lock.c index f73221174a8b..75166a43ffa4 100644 --- a/mm/mmap_lock.c +++ b/mm/mmap_lock.c @@ -46,20 +46,40 @@ EXPORT_SYMBOL(__mmap_lock_do_trace_released); #ifdef CONFIG_MMU #ifdef CONFIG_PER_VMA_LOCK +/* State shared across __vma_[enter, exit]_exclusive_locked(). */ +struct vma_exclude_readers_state { + /* Input parameters. */ + struct vm_area_struct *vma; + int state; /* TASK_KILLABLE or TASK_UNINTERRUPTIBLE. */ + bool detaching; + + bool detached; + bool exclusive; /* Are we exclusively locked? */ +}; + /* * Now that all readers have been evicted, mark the VMA as being out of the * 'exclude readers' state. * * Returns true if the VMA is now detached, otherwise false. */ -static bool __must_check __vma_exit_exclusive_locked(struct vm_area_struct= *vma) +static void __vma_exit_exclusive_locked(struct vma_exclude_readers_state *= ves) { - bool detached; + struct vm_area_struct *vma =3D ves->vma; + + VM_WARN_ON_ONCE(ves->detached); + VM_WARN_ON_ONCE(!ves->exclusive); - detached =3D refcount_sub_and_test(VM_REFCNT_EXCLUDE_READERS_FLAG, - &vma->vm_refcnt); + ves->detached =3D refcount_sub_and_test(VM_REFCNT_EXCLUDE_READERS_FLAG, + &vma->vm_refcnt); __vma_lockdep_release_exclusive(vma); - return detached; +} + +static unsigned int get_target_refcnt(struct vma_exclude_readers_state *ve= s) +{ + const unsigned int tgt =3D ves->detaching ? 0 : 1; + + return tgt | VM_REFCNT_EXCLUDE_READERS_FLAG; } /* @@ -69,30 +89,31 @@ static bool __must_check __vma_exit_exclusive_locked(st= ruct vm_area_struct *vma) * Note that this function pairs with vma_refcount_put() which will wake u= p this * thread when it detects that the last reader has released its lock. * - * The state parameter ought to be set to TASK_UNINTERRUPTIBLE in cases wh= ere we - * wish the thread to sleep uninterruptibly or TASK_KILLABLE if a fatal si= gnal - * is permitted to kill it. + * The ves->state parameter ought to be set to TASK_UNINTERRUPTIBLE in cas= es + * where we wish the thread to sleep uninterruptibly or TASK_KILLABLE if a= fatal + * signal is permitted to kill it. * - * The function will return 0 immediately if the VMA is detached, and 1 on= ce the - * VMA has evicted all readers, leaving the VMA exclusively locked. + * The function sets the ves->locked parameter to true if an exclusive loc= k was + * acquired, or false if the VMA was detached or an error arose on wait. * - * If the function returns 1, the caller is required to invoke - * __vma_exit_exclusive_locked() once the exclusive state is no longer req= uired. + * If the function indicates an exclusive lock was acquired via ves->exclu= sive + * (or equivalently, returning 0 with !ves->detached), the caller is requi= red to + * invoke __vma_exit_exclusive_locked() once the exclusive state is no lon= ger + * required. * - * If state is set to something other than TASK_UNINTERRUPTIBLE, the funct= ion - * may also return -EINTR to indicate a fatal signal was received while wa= iting. + * If ves->state is set to something other than TASK_UNINTERRUPTIBLE, the + * function may also return -EINTR to indicate a fatal signal was received= while + * waiting. */ -static int __vma_enter_exclusive_locked(struct vm_area_struct *vma, - bool detaching, int state) +static int __vma_enter_exclusive_locked(struct vma_exclude_readers_state *= ves) { - int err; - unsigned int tgt_refcnt =3D VM_REFCNT_EXCLUDE_READERS_FLAG; + struct vm_area_struct *vma =3D ves->vma; + unsigned int tgt_refcnt =3D get_target_refcnt(ves); + int err =3D 0; mmap_assert_write_locked(vma->vm_mm); - - /* Additional refcnt if the vma is attached. */ - if (!detaching) - tgt_refcnt++; + VM_WARN_ON_ONCE(ves->detached); + VM_WARN_ON_ONCE(ves->exclusive); /* * If vma is detached then only vma_mark_attached() can raise the @@ -101,37 +122,39 @@ static int __vma_enter_exclusive_locked(struct vm_are= a_struct *vma, * See the comment describing the vm_area_struct->vm_refcnt field for * details of possible refcnt values. */ - if (!refcount_add_not_zero(VM_REFCNT_EXCLUDE_READERS_FLAG, &vma->vm_refcn= t)) + if (!refcount_add_not_zero(VM_REFCNT_EXCLUDE_READERS_FLAG, &vma->vm_refcn= t)) { + ves->detached =3D true; return 0; + } __vma_lockdep_acquire_exclusive(vma); err =3D rcuwait_wait_event(&vma->vm_mm->vma_writer_wait, refcount_read(&vma->vm_refcnt) =3D=3D tgt_refcnt, - state); + ves->state); if (err) { - if (__vma_exit_exclusive_locked(vma)) { - /* - * The wait failed, but the last reader went away - * as well. Tell the caller the VMA is detached. - */ - WARN_ON_ONCE(!detaching); - err =3D 0; - } + __vma_exit_exclusive_locked(ves); return err; } - __vma_lockdep_stat_mark_acquired(vma); - return 1; + __vma_lockdep_stat_mark_acquired(vma); + ves->exclusive =3D true; + return 0; } int __vma_start_write(struct vm_area_struct *vma, unsigned int mm_lock_seq, int state) { - int locked; + int err; + struct vma_exclude_readers_state ves =3D { + .vma =3D vma, + .state =3D state, + }; - locked =3D __vma_enter_exclusive_locked(vma, false, state); - if (locked < 0) - return locked; + err =3D __vma_enter_exclusive_locked(&ves); + if (err) { + WARN_ON_ONCE(ves.detached); + return err; + } /* * We should use WRITE_ONCE() here because we can have concurrent reads @@ -141,9 +164,11 @@ int __vma_start_write(struct vm_area_struct *vma, unsi= gned int mm_lock_seq, */ WRITE_ONCE(vma->vm_lock_seq, mm_lock_seq); - /* vma should remain attached. */ - if (locked) - WARN_ON_ONCE(__vma_exit_exclusive_locked(vma)); + if (!ves.detached) { + __vma_exit_exclusive_locked(&ves); + /* VMA should remain attached. */ + WARN_ON_ONCE(ves.detached); + } return 0; } @@ -151,7 +176,12 @@ EXPORT_SYMBOL_GPL(__vma_start_write); void vma_mark_detached(struct vm_area_struct *vma) { - bool detached; + struct vma_exclude_readers_state ves =3D { + .vma =3D vma, + .state =3D TASK_UNINTERRUPTIBLE, + .detaching =3D true, + }; + int err; vma_assert_write_locked(vma); vma_assert_attached(vma); @@ -160,18 +190,26 @@ void vma_mark_detached(struct vm_area_struct *vma) * See the comment describing the vm_area_struct->vm_refcnt field for * details of possible refcnt values. */ - detached =3D __vma_refcount_put(vma, NULL); - if (unlikely(!detached)) { - /* Wait until vma is detached with no readers. */ - if (__vma_enter_exclusive_locked(vma, true, TASK_UNINTERRUPTIBLE)) { - /* - * Once this is complete, no readers can increment the - * reference count, and the VMA is marked detached. - */ - detached =3D __vma_exit_exclusive_locked(vma); - WARN_ON_ONCE(!detached); - } + if (likely(__vma_refcount_put(vma, NULL))) + return; + + /* + * Wait until the VMA is detached with no readers. Since we hold the VMA + * write lock, the only read locks that might be present are those from + * threads trying to acquire the read lock and incrementing the + * reference count before realising the write lock is held and + * decrementing it. + */ + err =3D __vma_enter_exclusive_locked(&ves); + if (!err && !ves.detached) { + /* + * Once this is complete, no readers can increment the + * reference count, and the VMA is marked detached. + */ + __vma_exit_exclusive_locked(&ves); } + /* If an error arose but we were detached anyway, we don't care. */ + WARN_ON_ONCE(!ves.detached); } /* -- 2.52.0 From nobody Sat Feb 7 22:21:30 2026 Received: from mx0a-00069f02.pphosted.com (mx0a-00069f02.pphosted.com [205.220.165.32]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id A64E62BE62B for ; Thu, 22 Jan 2026 13:03:04 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=205.220.165.32 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769086986; cv=fail; b=b4V0GT7XjCsA9acOjCfMPzhYXj3E2KcxpiViUYRyZVSiNtAtpgGvSsv1ON4ZZHIHpAHt61RsWK0ruy928+lFTWcDbTwIbGj1l9BZiqetUHodLLToD/MYtqOzQMsHTxPaf7UDx8VclyZlmhSCslpzZR8Y1Sm3FoLeACbd0SVH/Uk= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769086986; c=relaxed/simple; bh=u8iWFP+GDZqdY0Z/E3E8SJAGg0fNWfr2rEa4xDRCsd4=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=H7nKonzSw1uZ2A9I3e9kMfxS2ZR6YdoXlavROY+WhkuXHF14oFELRDtaCpU5KUwiglMWRwKnxiy7Mm/ZIALd2ZtODOZc8+Ztcyiio7gy65/DWHs8CUkCM+i7K2IC2jVRbjXjG4bnUV+wF1GFYCTGYXjFgeaU1ZcnyYfXv2IN5hk= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oracle.com; spf=pass smtp.mailfrom=oracle.com; dkim=pass (2048-bit key) header.d=oracle.com header.i=@oracle.com header.b=fiJvFbna; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=fOz66gCe; arc=fail smtp.client-ip=205.220.165.32 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oracle.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oracle.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=oracle.com header.i=@oracle.com header.b="fiJvFbna"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="fOz66gCe" Received: from pps.filterd (m0246629.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 60M3XOln3429768; Thu, 22 Jan 2026 13:02:22 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=cc :content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s= corp-2025-04-25; bh=vZPx9Cgo+BtdSemhmhSnZT+VNAK0JN8lcdGWba89ZXU=; b= fiJvFbna4ME4GMJtjEX8g+hmnrI5XdPbuxTK23XMsWlC2myBb/5p3bGvD1zz1BNG ouvWJ8jdgsDpXPLEKyKq6ESu+hXf+/ULM/pTfUgYLL3/w3qIZY9xXFBNjorgbN0u lsHs8gADoEL/la36QKBQAGCRd94o+cKrHq0LzjGwvd6VFM5I7Aa2ZMpugOhMTJ2x lFE0NU8Xqi+hEW/nXyBm3Piakqy/LF+s5iJn/ZR/SkJTvb0RQ7mQhvANE0QOldAi 3kh2oT91nb8OcDak0v+Lv/qhsucS6TKMdvd5r7HRPEOnQ5Rf/M8pTZDVfQZnHWG7 13ScM46SyzYQLXEpldbMMQ== Received: from iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta01.appoci.oracle.com [130.35.100.223]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 4br2a5qk8v-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Thu, 22 Jan 2026 13:02:21 +0000 (GMT) Received: from pps.filterd (iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (8.18.1.2/8.18.1.2) with ESMTP id 60MCejMH022456; Thu, 22 Jan 2026 13:02:20 GMT Received: from ph0pr06cu001.outbound.protection.outlook.com (mail-westus3azon11011061.outbound.protection.outlook.com [40.107.208.61]) by iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 4br0vgjp38-2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Thu, 22 Jan 2026 13:02:20 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=Eik69Z289R/0zyAg76k4YVilQ2wV9Ted6DjVWNN9h5FgGZnuNHMqKSlKzR/GnU8QPuxv4x7fib+XRReHtzmH+PinCv9PLpuKGJYIqGHRB+81BxRPISlmF+rLXZVDYW4PcULlX+/LE1nqZvCMFTjB8kQvtv0Lwf7IDsOIrJxegwa0M/8yUeBfg6qVuBM/EpwNoAqiphUkvC71XJErDZIOnWBUkzEIhR0fRdYPXFysJP4miMjx/rdyti69r7z8Ny0hZ976kXEz8wsGQxLAGxoSHWKoAWZXfAs+ugzKjqDtO09ZpnepmRCcYjtdX8iAhok+xDTB0mbsKYcaT8AB8V80NA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=vZPx9Cgo+BtdSemhmhSnZT+VNAK0JN8lcdGWba89ZXU=; b=b1Xuk9O/AWdRZYS9vYcMfdG2wu5R6YRbqUnbPIav6ZCJjOlQxfeAShr4kvS8MzinYXq/qd5WjqCppopCsZ8wyQ/2Eg98VWJEySNS+wuKZ/U6wQr497ImnaOFdHR5pXrRNDQGXl0i8jWhBRbtzkYrcGmgvfZpQ3rPIF69MdY4iv7tngAK9oVadHhWzX98f5JFsleLuqModEO5BBFC9iyQvfXCpBWGANPCwhNYOn7gH5Tgz8DQSwhRSospC1xeIykSdeiVe9P0g2RY+ISjRsjzmnXNfUPsK95hShqtsL6nT9k1OeMmeU2cv3CmY40J7X5CEcCHqwWCMFWEiboeRl8MCA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oracle.com; dmarc=pass action=none header.from=oracle.com; dkim=pass header.d=oracle.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.onmicrosoft.com; s=selector2-oracle-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=vZPx9Cgo+BtdSemhmhSnZT+VNAK0JN8lcdGWba89ZXU=; b=fOz66gCeK0OP2WeOpG88UoSKiTWJFBr4BVbLWzaXG6278p5EdXfoWr/b1bYNRJr5v4mBiVyFCfTYt2Qef9YEqvX3G+DgdHgIm5migDGLZscTHW6EveyDZu/V3jK0KoWrINNJUrpUP5RUpZ+nERz1H0bjY3qK2pW06zfTvUx3vi0= Received: from BL4PR10MB8229.namprd10.prod.outlook.com (2603:10b6:208:4e6::14) by DS0PR10MB8198.namprd10.prod.outlook.com (2603:10b6:8:1f4::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9542.9; Thu, 22 Jan 2026 13:02:17 +0000 Received: from BL4PR10MB8229.namprd10.prod.outlook.com ([fe80::552b:16d2:af:c582]) by BL4PR10MB8229.namprd10.prod.outlook.com ([fe80::552b:16d2:af:c582%6]) with mapi id 15.20.9520.005; Thu, 22 Jan 2026 13:02:17 +0000 From: Lorenzo Stoakes To: Andrew Morton Cc: David Hildenbrand , "Liam R . Howlett" , Vlastimil Babka , Mike Rapoport , Suren Baghdasaryan , Michal Hocko , Shakeel Butt , Jann Horn , linux-mm@kvack.org, linux-kernel@vger.kernel.org, linux-rt-devel@lists.linux.dev, Peter Zijlstra , Ingo Molnar , Will Deacon , Boqun Feng , Waiman Long , Sebastian Andrzej Siewior , Clark Williams , Steven Rostedt Subject: [PATCH RESEND v3 08/10] mm/vma: improve and document __is_vma_write_locked() Date: Thu, 22 Jan 2026 13:02:00 +0000 Message-ID: <70dcf80f79ecd00a750ea17101061b0949119429.1769086312.git.lorenzo.stoakes@oracle.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: LO4P265CA0231.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:315::17) To BL4PR10MB8229.namprd10.prod.outlook.com (2603:10b6:208:4e6::14) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BL4PR10MB8229:EE_|DS0PR10MB8198:EE_ X-MS-Office365-Filtering-Correlation-Id: 5e8229e0-2abd-4c29-bbba-08de59b678c0 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|7416014|1800799024|366016; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?WA4DcO50WUK4sMKSyhmazKjcLZM1zEkvUonVSNEzMjETcyFQbY7sWdNyc359?= =?us-ascii?Q?+B3yBmJZfMgQpjXhZ/zRMHHx0+0tx1cSsm1YORCcC+bzhvuCyUN8XAs2XYDf?= =?us-ascii?Q?p6hF1DqYixeknVBxnQUJQK/LYzbIsms5+XHR/HQYKBDEZT1PbfoYUtnRkVSt?= =?us-ascii?Q?+YcT7Cv/GROVShp1R9ytV0eSQwbXuXSPDk+6F4qQntoFbElMFjryQcY2dflc?= =?us-ascii?Q?gYpor5AnnyCBn2IVhEsv/USqHZkIqVfSkcoydBjk8g2D+tkOiF8pv2+Az0Ru?= =?us-ascii?Q?5k1VUXa9W+SHyQFg3o8OUV8U8kLh4xUwJ0fs5luwVxkJxh7QaVcAsMXEb0Cf?= =?us-ascii?Q?rp6ddTCXvvmJt22+KGeeGw9cRa+NGl4QtOwultf03GeLrq7ifOX8LzvzloDb?= =?us-ascii?Q?eb7kDJEdSjoKa8zSJzyVnfXC+uocBltNNuijjEw71bOmLDqPZb7hMIk/5EGs?= =?us-ascii?Q?yR0z0KOFg7z7ZEw1jQzLtMi9nphyyvM26sREeTKhlIxubQEpaYFr6vFfHPoj?= =?us-ascii?Q?VYklrRdEOW2EtkOkTUd1vVeO1nWUZlqxDwA0L68E4In7je3kPFjTkQ+T8H67?= =?us-ascii?Q?bKvLkWL9/W6dLbOe5vux1uluoyB1CL4yTKwet4Wg8ppDnMkbM3ZYQ1bFAglj?= =?us-ascii?Q?xnMGHEXY8Hyzlix3oVUt+iAgEv/Tijzd7PJX0+mVY2n4UPB7XM7iAJhPfRmE?= =?us-ascii?Q?ng/BWcHV0aosVzGlyJJZhqxo/Mc5VycH1yHwkeC0WNw3zOb066F52zqMVsr1?= =?us-ascii?Q?mz1gGuplh7vXt+YnukfYV+5rnXrSTHG2T+NzkEYA8GXVS8Bbzvl4BmMCgP+2?= =?us-ascii?Q?d3oAB07BwIfJeUEPZpOZgBmIRbBwynqDgXM5JqJ+uogUtpcjmm1eUL5duDIm?= =?us-ascii?Q?1Swis2D/KStMvGFGiHPU1Gbe8/RCSW00mr8rsYcUD6l+JMdYj7PyM3QB9Fvq?= =?us-ascii?Q?AJeN10o/kjJkL16amt6nljy04KG93RbMKgesN5B3VZZvHcmeWoIU3O/urO82?= =?us-ascii?Q?NjoIRzhZCANplq+vh4wheGx43PqpPq9BeLi/jPral//vpki/6atGH81Cd4ms?= =?us-ascii?Q?mX9ZbQ/c918Ut7d+PRbDgZD05i35qdEiurzDVWQ9bDwhVFGgzmfGIMGgQf0N?= =?us-ascii?Q?oDYG5GPVP2MTfXbWhRBuoY3TrIG8N6nj3YridSoVxy+cubH3eAF8G6HQbGY3?= =?us-ascii?Q?uxEtttu8xQ+00xjWdo5NrtAZKxaG3vRoF0l5kmTDT9hl9448jL9ah89iyl08?= =?us-ascii?Q?1ShHYn60p0i7mrSstyrX4tcTcpduWF1SeTnyOBiRFwgOGRNnMJ1c1lsKQSHM?= =?us-ascii?Q?ZfGuqt3HajRHvi3YsOvBcLIPPPqAZxd+gHFshpcIccqBBBYDatGLjIPXQFsQ?= =?us-ascii?Q?LCplRsEKBDxgKMs+KmC1E3AMJ/C5xSpw+iS3+mraU2jgzraDKfw91ka7Jimv?= =?us-ascii?Q?O3iPnf2OCYdPhLsXeB1zV8jH6/VkG9hQKfqulrNZhalAMlvUvsdcvzEKT0UT?= =?us-ascii?Q?58P+wx6F4anIijrsGF3V0OSeDoOUvbJjyVIS2s+2bwMk1vZh62DSFAhpSJbm?= =?us-ascii?Q?A1Tr7NeXNfw1zPi4b3E=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BL4PR10MB8229.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(7416014)(1800799024)(366016);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?4XTNYNlhmlmXdjcnPZE/v2B76qqow7IQ5FpbGZKBy1+lsxiJSxOyFj1qGm5e?= =?us-ascii?Q?T5v4lNWi+kSwO9hd/wySQ3uqF3TRO/5oQ915g30kT/0lD9l1jxkuAH2XtPZq?= =?us-ascii?Q?uMRCWTKu0ODui7EndwIOM7zovadx2tg9cXBlnw+AspF8nlbceCPKS/inO6cT?= =?us-ascii?Q?VwWM0gzQpm5nIGn9VaAvXpD5EBzEodT74t19i2pB5s4aAVNPT7pyLtHFDmeA?= =?us-ascii?Q?9xmUKhVtKl6c9a4ezZdEKc9eT8mQ38WJecBCRZRsn1xgsnNGSpiQ/41yDiu7?= =?us-ascii?Q?H1mEf7Uy5TCwnVFjJ/MjuRkzAW9VwMsaTXTMiXhpZQ6aY8HW4crNG7njQEmS?= =?us-ascii?Q?bCv5De9aTqSIMmHvqY4E3GVhcj7+XluxRCCmwx57ilTCNtg6FyYW7B+qPq7R?= =?us-ascii?Q?EXo5OFU5IimlMPUhh++5eyWLEGBhoXf6Dn6bSWi4tTYt/Kpz5/x3Gg58JnT1?= =?us-ascii?Q?7pd+JdC4kLZwL9ZqpBiXxTK+9thWJAAFjB6KV12cmck4735A1+1zpEBdtqSA?= =?us-ascii?Q?WCItLlmfohO02WOKllQJmm5CwhE3r05A5M70hirBP2jGK2HEWZC18DgMVMgs?= =?us-ascii?Q?KoTCiIHf/ltln9nIjJpI9UJZGlJWiYcCXFZ9DamG/CULjvRUMlBVwkt906U/?= =?us-ascii?Q?9TjnGSQ2/Otb5YIjXuxZQ0nKPt/5Kk+lDjoLIvxS8T1ykRFpXQrHi8ODFWR3?= =?us-ascii?Q?XwxO++LkcgiPB9nUNXrLFhqE/tq2GSQY8yt7RQ7eyQnlnb1eYHNCCTeOs/32?= =?us-ascii?Q?0+SvP59mBBcAv7++apdvIrkAtIKISTuObuLFm7ICHqge5B5ks2QEYt2C3Flt?= =?us-ascii?Q?5Dvahxd0mU1WA3M6G8ISkStVLsy/qYmkwLTarXRJ7WhfCluQbhVkUezvziZx?= =?us-ascii?Q?2fdf8+qaslP+BbI+/+gN/xCu2UeN+QOThhHe6pWXCFJRRt6aFPdu5+Ascrj7?= =?us-ascii?Q?aCNM9J4NAHiNMxBwHXalnYPOCIFYJEiIVvRk4VIji6BHBmovaRGhyQIc3lBE?= =?us-ascii?Q?J5tPfSdUtugV7m9FEDTA4ZeSsi6qIjSVK+i/e/GX94X6dtCj/X1FCV8k2sIy?= =?us-ascii?Q?pd4wG4klOG+DiJQMFXoLNRKHPEALwWiA908H0BdX10yM9BGBoELydsU7f+zk?= =?us-ascii?Q?ucWyIdvsIAHohfyC7or3Co6+8nMcw2XxjUjBzYg0QaQpFrVaGXHPO48pN7EN?= =?us-ascii?Q?8mo1YdW+LSB5DNWO6fp7AYExG9u1TwTA3b9wLsEGYpRgIH8p2i0NKF3lQW00?= =?us-ascii?Q?43Qi1etu+x4ySBZheRxwRxVFR1pII2S/41AbHzzkTVE0Nlxtf221rGgpWriY?= =?us-ascii?Q?fYj/K0rTcKN3Z+kdSsGnw2jbBXSHkIGV8lbd/lOOdOlBpvu+/R2LZq0rE9YY?= =?us-ascii?Q?CMothks7wprX/JRg/lRDVVjvze+oAECL6cifluC3sONbZJs27+8CTvzCWuBi?= =?us-ascii?Q?YS1kHOdxMH1lXzXVgdx3q4+LU6HKFGFTSPinU0M4jWuVkJkmrs0b8nJ1xNSy?= =?us-ascii?Q?FU36gclBSBsPMPVg6epFabE3SGuaDbDBpXeJQy4/mTPC9+7PXDOGyKoVXGti?= =?us-ascii?Q?8erEkfCdG6ehIppxwH5LuQrN7gQ5VqoP1qvBZrFGSfsH0j0qMYeOiv+oteUD?= =?us-ascii?Q?vlo1B/HVm4wXKRV+UP9MoX1EikZbkBJ1OVEmYav0PTo3MfhwZUNF4pLmIJsS?= =?us-ascii?Q?8TrRcjROGhcrilcQ2KGMm8p2xPpUim8bTIkPbgJIvZwRr4IhdGmuYFzlWCqj?= =?us-ascii?Q?lQrxKCx1UWefyOjUoqDAMXaE/Ab2kkk=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: j0MMgxgvAwPH2jOkUkOqx8zw6zjpnkz8b9bXM8ze//0xtAzO+i70e9pMMzEm0vm1JvrDteWXR2rJFMWpTFx4TFGDGV1rhrpdofXk0jyYpHc4gcmIpIttCq5UxCbG9BN2lb007FttfJty6GLL8BbWqjQu2tZQ3u0Ua0cK9EW/krL8EjDNCkN+eUS9MbvG1HnC18W/jmBBmL6dNEmHdJxcaqGcycIXhI3ag8zlu62MGUCTPqF9qJ0fBIOGJb5AptMkjntUvNbc4GhNaH/l3Sn1G/pjC2dKfcLfnpsH694Q6EnMkTH7pX2fFKR0NaEvO/rq4LrKxF1GvoSBfrR2rlVvKixbb1HzII6YmSHF0K/E5wALPqY/tNfEX6JkYjWycujXJT/KnsIXn3zhTkWs41GeWMR5Zuenr/MloHs2v0gLAluayPRWrPL5lDLO+e/o/LqdTk0nGcw4c+94+673PFATFWnmWGXq6g9vSCmbvFcyabG2NLIwgAEkNTzgSssHFUsOwHIyN2jFaBxMO1haV8C1guC+0F+28vWNxOscGoryDlKCrfWI9a0mTLO93u5KPHHWNtvtV5XVsKPSr+ylltiEFkb2HyPK9oVGJl0U57wBBBY= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 5e8229e0-2abd-4c29-bbba-08de59b678c0 X-MS-Exchange-CrossTenant-AuthSource: BL4PR10MB8229.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Jan 2026 13:02:17.8752 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 4e2c6054-71cb-48f1-bd6c-3a9705aca71b X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: Wr6S35xZsOCF+myW9digSLJgfZy/1gqmjOyo/cxLwoyYYu6mfJZwuQnUXbb9D3nYeqhRwf+ogeoqBoR0q3fNSFcKrfpKoCExbizpADcy1M0= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS0PR10MB8198 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.20,FMLib:17.12.100.49 definitions=2026-01-22_01,2026-01-22_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 spamscore=0 adultscore=0 bulkscore=0 phishscore=0 mlxlogscore=999 mlxscore=0 malwarescore=0 suspectscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2601150000 definitions=main-2601220097 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMTIyMDA5NiBTYWx0ZWRfX3yNHbdgRXTkx FBE9/4slKKmUzBBCGvQj7wd3VAMUVYYtxS+cQMQK9Jdt2dOr5f1oZow8vJahMaUXgEBFuQJaoyd NwVGGTC9jRyqx+hfMZteISRuiULkboOXjWuVErVxUiZsvTPgLIHw/PRZ8KwbVYwWdXc1Hvn4XCT I4OScL8UrdIPGjRVtHUu4xjMQb2fRxLbZmybbqUzTbWQL7156HlF7Hn+TwwQigtwvgnNAy09hKw DmmT5VtEpVMvrY8KWykpkAv2M1jDjTu/QlvFzH07HhvFfJTR+J4w7eNx8PfqUNVeAnkMMpUX9uM 4H1ASRbpsLtuCZq6l3uiwF/NNadrO9R/2gSu9nKG+e72pnQhr+mOay4U/37SeP+Fc8obgBnMG0D DatycwQolNX4l/gxzWF7pjS7zyNBiiAs1eRdIiY+Sx7pPEn0tW4n7Pa28NjVE66AzeX3Ju9/9Bs pfZRVj8VHypzgNf8X7wR8i8m3UBiZFM6We6J7fQY= X-Proofpoint-GUID: 6s4hHaE-xMFlcWnnZ7ogS7Wr6hmGlBE8 X-Authority-Analysis: v=2.4 cv=XK49iAhE c=1 sm=1 tr=0 ts=69721fdd b=1 cx=c_pps a=zPCbziy225d3KhSqZt3L1A==:117 a=zPCbziy225d3KhSqZt3L1A==:17 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=z/mQ4Ysz8XfWz/Q5cLBRGdckG28=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=xqWC_Br6kY4A:10 a=vUbySO9Y5rIA:10 a=GoEa3M9JfhUA:10 a=VkNPw1HP01LnGYTKEx00:22 a=yPCof4ZbAAAA:8 a=yBRV7UiJsV_3HBrqTEMA:9 cc=ntf awl=host:12103 X-Proofpoint-ORIG-GUID: 6s4hHaE-xMFlcWnnZ7ogS7Wr6hmGlBE8 Content-Type: text/plain; charset="utf-8" The function is a little confusing, clean it up a little then add a descriptive comment. No functional change intended. Signed-off-by: Lorenzo Stoakes --- include/linux/mmap_lock.h | 23 ++++++++++++++++++----- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/include/linux/mmap_lock.h b/include/linux/mmap_lock.h index 873bc5f3c97c..b00d34b5ad10 100644 --- a/include/linux/mmap_lock.h +++ b/include/linux/mmap_lock.h @@ -252,17 +252,30 @@ static inline void vma_end_read(struct vm_area_struct= *vma) vma_refcount_put(vma); } -/* WARNING! Can only be used if mmap_lock is expected to be write-locked */ -static inline bool __is_vma_write_locked(struct vm_area_struct *vma, unsig= ned int *mm_lock_seq) +/* + * Determine whether a VMA is write-locked. Must be invoked ONLY if the mm= ap + * write lock is held. + * + * Returns true if write-locked, otherwise false. + * + * Note that mm_lock_seq is updated only if the VMA is NOT write-locked. + */ +static inline bool __is_vma_write_locked(struct vm_area_struct *vma, + unsigned int *mm_lock_seq) { - mmap_assert_write_locked(vma->vm_mm); + struct mm_struct *mm =3D vma->vm_mm; + const unsigned int seq =3D mm->mm_lock_seq.sequence; + + mmap_assert_write_locked(mm); /* * current task is holding mmap_write_lock, both vma->vm_lock_seq and * mm->mm_lock_seq can't be concurrently modified. */ - *mm_lock_seq =3D vma->vm_mm->mm_lock_seq.sequence; - return (vma->vm_lock_seq =3D=3D *mm_lock_seq); + if (vma->vm_lock_seq =3D=3D seq) + return true; + *mm_lock_seq =3D seq; + return false; } int __vma_start_write(struct vm_area_struct *vma, unsigned int mm_lock_seq, -- 2.52.0 From nobody Sat Feb 7 22:21:30 2026 Received: from mx0a-00069f02.pphosted.com (mx0a-00069f02.pphosted.com [205.220.165.32]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 3F5262F39AB for ; Thu, 22 Jan 2026 13:03:03 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=205.220.165.32 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769086984; cv=fail; b=FNlYb+Vi+Dbk/UcMFPlqmi0wjeMX9yYy6qXrEdHm0aKvP3jB+9hfIjW12x9snXAROKgTPoNmYFkvJhP12ZoK5No2q/6qMkTxBOnoNqdafbncTuRoB5+QDWugFRJiVrvEz9pv2efh2pVkKX3/G36ldc3TBIFuJkubybKZtNPwgt8= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769086984; c=relaxed/simple; bh=lVEpVBKUNOL9WPs9WI2/z3otNRRALZ2HGW4p3nN6JMk=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=fHCDN9XqOwOkPX3gWsWdOBU2tAgQ4fTouYvC15wKdgJuj5xOmEkkvDrD67Gv5lJmDuHW/PF9hkikCcvDRC0XBoe9r99YUni54vsa9V5tpurpkmDG0jPMUGbfKkS5xOnNSu71SgRwDg2BBL6Lu7pvUOfqDGhNokesrECeZO4QYOg= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oracle.com; spf=pass smtp.mailfrom=oracle.com; dkim=pass (2048-bit key) header.d=oracle.com header.i=@oracle.com header.b=OU3KZTis; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=PXZcfruy; arc=fail smtp.client-ip=205.220.165.32 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oracle.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oracle.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=oracle.com header.i=@oracle.com header.b="OU3KZTis"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="PXZcfruy" Received: from pps.filterd (m0246617.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 60M0wk613031717; Thu, 22 Jan 2026 13:02:24 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=cc :content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s= corp-2025-04-25; bh=epiW399uMP9UrhW9YvtPSyVYi6MdQHkk0nA39PwbWHM=; b= OU3KZTismdKhSEMAMZbt4v1dZFlt+CwJ44y5O91zRfikl/eaDYH6+uLckvjkfAkB W3nhvpmVbubJfppqluDXsPsFK3iB8uLXnnG4vEcfwuMQyY2Yz944W9J2mryuGck5 pSZfTdcjOiacIAzqzYbQ1a/LDnTpbnhG5EY4HAUjFBDoJL6n9LfARs7f1uM2Fpi5 hg/uXNEBblrmMAjj1/z3k9dyUc0aPYgr8bLhPvhuSakCXNzK6M5ghdvdm3yOXfui NzrWBofpK91DLDqJ+FPGbXnZHCLXTv1yvpaAc4osJf787UQ2OssHMUv94lFHD63N FUHFvgHl6pXJ0Pg4n++3Wg== Received: from phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta03.appoci.oracle.com [138.1.37.129]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 4br2ypyjfs-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Thu, 22 Jan 2026 13:02:23 +0000 (GMT) Received: from pps.filterd (phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com [127.0.0.1]) by phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (8.18.1.2/8.18.1.2) with ESMTP id 60MCrUcg038783; Thu, 22 Jan 2026 13:02:23 GMT Received: from ch4pr04cu002.outbound.protection.outlook.com (mail-northcentralusazon11013003.outbound.protection.outlook.com [40.107.201.3]) by phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 4br0vcrwd4-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Thu, 22 Jan 2026 13:02:22 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=gC+OfX77qyBxuDe7OJqQ9t7F0nYgY3NOvGWQFu2AdX7AA89FOrpVSsDyoJEsJmw1WnuBjxBiIM4hXy1cM7x5IGviK25glAxa6GNnaerVT0fCNDqloJwvtenzIRU2k320EP+xB3cJ0Xg9ju/MhpPYO978jE5r/VHrS0I1fUoaa2IAm+qaEI/DmLzf7tL/BFEIhb2EFfIdgVSgrqmhcibN3h6hIf9gYMtHEHaCRVVXs9o8AOY3F5/Sf864OHhbqmu20lY7tkRINCx9I8sme9ivpXcqyGwnR0kMmoHY+H3P9A5dL7EXNkdKg6JkcCR7Zyn6pg+iYrR7t8f7gu/2BpkKTg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=epiW399uMP9UrhW9YvtPSyVYi6MdQHkk0nA39PwbWHM=; b=d9K/hfZ0pKG+ZHfeY6uZIrUbwwrb/NC653G+Ez79jlQ1Fy/k4Zi1bDmTAJrsNUGicBLARLntZi2lUhrJINyQekbIxIdLotVVU2eZx5CZnlHsptUAGx9uBdY3NE8MyB5YPehE57wJekKDZvVCuP0Q66maeCayLj559Y6KR6ttDWeY5srnZBgPpPohjYKXr9WohQiLZzZbRqsfSkiH/h950uiYFQtDXBWn4fesG5L+DnfMPVnk6q7GHtYaVj3sCeNSpj0vsINGIzr1kj23go3Dbh12ZgPUIyxhkqn/FDF206xaBByYKTSC8ifNfq8He/5Ga788POCDB/1657/SQ8lNdw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oracle.com; dmarc=pass action=none header.from=oracle.com; dkim=pass header.d=oracle.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.onmicrosoft.com; s=selector2-oracle-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=epiW399uMP9UrhW9YvtPSyVYi6MdQHkk0nA39PwbWHM=; b=PXZcfruy0sYNjaGOImUZoGp6DBy4LpsQy/oXiZF8Y+M752k+UQTgtxkbXrvG05XwGIDlJ1S1YnrkZ8kghWoCphn8Isqg4CV4g7qYtK5IjMOpsrtRnQyK7/r/2xIGYuL/tW83fnTepV0e+nSfanxNQilLPHfPmLQMX/H932a6R30= Received: from BL4PR10MB8229.namprd10.prod.outlook.com (2603:10b6:208:4e6::14) by DS0PR10MB8198.namprd10.prod.outlook.com (2603:10b6:8:1f4::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9542.9; Thu, 22 Jan 2026 13:02:19 +0000 Received: from BL4PR10MB8229.namprd10.prod.outlook.com ([fe80::552b:16d2:af:c582]) by BL4PR10MB8229.namprd10.prod.outlook.com ([fe80::552b:16d2:af:c582%6]) with mapi id 15.20.9520.005; Thu, 22 Jan 2026 13:02:19 +0000 From: Lorenzo Stoakes To: Andrew Morton Cc: David Hildenbrand , "Liam R . Howlett" , Vlastimil Babka , Mike Rapoport , Suren Baghdasaryan , Michal Hocko , Shakeel Butt , Jann Horn , linux-mm@kvack.org, linux-kernel@vger.kernel.org, linux-rt-devel@lists.linux.dev, Peter Zijlstra , Ingo Molnar , Will Deacon , Boqun Feng , Waiman Long , Sebastian Andrzej Siewior , Clark Williams , Steven Rostedt Subject: [PATCH RESEND v3 09/10] mm/vma: update vma_assert_locked() to use lockdep Date: Thu, 22 Jan 2026 13:02:01 +0000 Message-ID: X-Mailer: git-send-email 2.52.0 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: LO4P265CA0035.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:2ae::11) To BL4PR10MB8229.namprd10.prod.outlook.com (2603:10b6:208:4e6::14) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BL4PR10MB8229:EE_|DS0PR10MB8198:EE_ X-MS-Office365-Filtering-Correlation-Id: 2632035a-f873-41b2-c8de-08de59b679d8 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|7416014|1800799024|366016; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?5x2Mw6vmHPeSqLmi903GCuZaYNxz8EK6+6vFt4skI+8HQS7TEnrNY2lw6iNq?= =?us-ascii?Q?thZMrsaoLDGz3hRnOcJEdjXVfwIc2Z4lSJqbXqwxNOz4PhWJEuzM82oq+k66?= =?us-ascii?Q?IxjUvPIFD6MEDyeFIrjD/DRbcagh1X8u5NERSRMzoNrB4LDCbxzwjG9/sqRX?= =?us-ascii?Q?ybMpMlgKH1RfPWRLr5DO5AM7ZFaqDvNKJISRG6ywkREuuqkVV9DK+1jZI8VE?= =?us-ascii?Q?W2ryZeKbLFg9BL3wmDhGIcg44PiwijeZI5hjU0zPwHtP1bEzgl4PtLqHnQPP?= =?us-ascii?Q?SRrylj6nuftYYaSRt0WFLxHv89t7krcTka3BuZXTgB5QdduV6ZGGoqKbTJ+g?= =?us-ascii?Q?pOl2hOxr3q2w3HMTpV4hi8k0Nlp68GYdte2VpNJnCTQYVxd4otsEH4sPreEM?= =?us-ascii?Q?0vGjS/8WnU4jtgw+Qr1IJdrlzbh3u3zMwisbiBCQVavOqecyzKejHhr2fR++?= =?us-ascii?Q?jMEdEA9VAvyr18smgjwsbqLWbwW7IjDWIGBddZnBX6aaysFh2aPXEQhLuPqn?= =?us-ascii?Q?DZY4xfvfjAzill+Qe9nFSRV9r89LlHNbB01P6tv3G5ADJjxI61Sfb1fKq4A4?= =?us-ascii?Q?NysZ7FsrKSmxBhZajJCrSpHulGatQGKqouK+n0oez8Ioa59086cGsgrL5Q81?= =?us-ascii?Q?lIHjCDwZ7V5jFycUxXmZLI+WCBX0ZjoFXAzgZROhkV3SVfQHinQN1uYV+ugo?= =?us-ascii?Q?hRkk8+ueDETNRktJYIRn6LdnG/IjKOUdr3t0jDd0DHeRDf2UF2eISkKJkI+K?= =?us-ascii?Q?MP/1RI9+fInU81AFxAWecJ/XGVH+CHKiPMjaGyHZZqmPAOtai0RKT3PGAD65?= =?us-ascii?Q?acsawe0UAtltkL2yV3un/aR7uRoczRJc0LA7Sbagnz9aixPK4SNAYcP0MNCP?= =?us-ascii?Q?cuQq5w0dKEFcjCnROqBdNgL4IrpuaL+9kRGb9/7Id5gtDFFZD7Bg1TUDCkzZ?= =?us-ascii?Q?ssHfpzV9/D36hG79oQGUBl15W7c1inC9Zstkd/0rQA/hLK+ohPcnTLI7yFCv?= =?us-ascii?Q?MoSCJIqYKW985BL9dHv4iI19A1qPAw3hT8jniTa1UuGc1/MG7KjdVTjCXF+0?= =?us-ascii?Q?AyLoJ0gTaaKhweXnFawNxQhkihX3HJhEOhMMFjDgUToBtnqIXTczWXrnLTqF?= =?us-ascii?Q?fAaEMp9J/KuBrJdSvZv9krhK1/JhJELBVJDUyOtNRdZPYQDtq9ikxnON8aO3?= =?us-ascii?Q?RDqDszuQlrYILo7JZMA50ROVSl99VDBXDrOOAJ/FNHPi0yEOkir7V9DJ+LEV?= =?us-ascii?Q?RgC3tfahukQQvH5anfC3xmNSYs4ke8b4wI35fauh1l611CSk6sfM4mSJrHFA?= =?us-ascii?Q?w5Mu9QwygCX6uKBhMbqi7VGIFE9FxtbwGeHad9YMBQfpQI3G1QBrPp+RU/1h?= =?us-ascii?Q?u+tXOnbP9sIH2KxtkvI37f1lifMIfAkbuPN/qaG73UZTPxZ6sfwnH5N9yG8Y?= =?us-ascii?Q?v3bfWfldEvsJKmO9QTdB4oNqs3mXbeyOPwylXf8KiwHEl8aJSKG3Oo094dCE?= =?us-ascii?Q?jCkUG7qoEKorKbH4LCM02PkrLE+cF1t4TRf7zEatexJjTynppOa+L5wkf1jS?= =?us-ascii?Q?kywfxbc1QEcwWfg161o=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BL4PR10MB8229.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(7416014)(1800799024)(366016);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?IVvYASPSv1mz8rP62nvEH1/8RZxkX4C9NUdyh/DUlhuBQuuh6A9xNk/pme3D?= =?us-ascii?Q?q2O2+CmUFWbAj08W6gFmxyQVIuJowcMhkiKrBGmn/zEvIl1gb4rM1aejc1T3?= =?us-ascii?Q?BdV/0/NPl7niBpcVZUsNfvdzfcc4laeLsc8WgDtqcb76+EV35WAGMA8IiSiX?= =?us-ascii?Q?mrll7yRgxf6QHLTc74dcHZB8gxnzzWHzYoEPf/CJoGd6Idb3eXtrqa5EIu+Q?= =?us-ascii?Q?UtWKlg+XjtZbBVmqqcDaVcXx+pjPpbHRmBCHGOncxYMSx4V0adfn9b/UXXMs?= =?us-ascii?Q?6lOVSWaXvluKrtJ7/M1ZpqxupwnX8XUweGlGq/NV3PdumvAw9JXSYq8BKy1D?= =?us-ascii?Q?Rz/61nRt6DMNmbAXI3mLSkhEClOxb6miUWUYuzCtlfgHH0o9FidcgNHDMMuD?= =?us-ascii?Q?VJsMkL3yKRcFF74cXzI9fIHLeAJvmMYE78A8GHMePLTGjYSD/e/GEslJaML2?= =?us-ascii?Q?fQ6DT5TDMbuS/lUh+EH+skEn6Z7rgDeH6YPA5zzHXVjShS0HE9JUKOYEmAhP?= =?us-ascii?Q?8rJKWn9WCINO78TDPjF4RurEBOvup5rDQOe1uB1I1MzsQ2Qc9ygKvRFp52z+?= =?us-ascii?Q?ZVEPpQpkEhfWGn8hScxGIQNpmHXfCG5oawYDcHEjPM/Wmn2fnaGrJ6kAIkFQ?= =?us-ascii?Q?Qih3qYBolUda1GzB+rJwCCV3nROGN3JDVflt6y4wy/e/u/1YI79N2OY2EAzV?= =?us-ascii?Q?9dAa+rA8VhWlr0uYlbDtOnLmNl/VJj+jMcWUX2KOQwXHNAHczP3iNhuD0Eau?= =?us-ascii?Q?NmnNN5FkoeHzeuV9TAkormf+D8odr29//fq2dIDHlaQXDxOSBKRIKuLgmips?= =?us-ascii?Q?qE/XxnpMMvDXEjz28wamzps72Ar5vZYEgxpF3L4jO1vJanVSsnFPa1njOjFE?= =?us-ascii?Q?prMKYr4TJQ85w0PDPzo5pCw4G2qkXiqMohu05zAAxnxUOPRaGY9XODWZqQSM?= =?us-ascii?Q?7t8LOg8An6Jq+5znI9Nh64bqo7rBbV+VrMTpt0z7ccvirPK/+vkZKj6exk+K?= =?us-ascii?Q?U9FLZLSWClQLditpKwidnB/N+HraMTmvrq3g2aFNFt2jMXP/0nla6rpcad7J?= =?us-ascii?Q?8/WvSimYkueMlMb9Xv5Fm/GzUf+PsmIaCpuxH+WC7ZBv2Si73UdeF/B1XK0B?= =?us-ascii?Q?9hjCiwLFGopvjVuz15a1FNWJLGJUKKkcTlT3tIf1nThq9UcmC3799+SoYuIu?= =?us-ascii?Q?uMht17s3oDhmbZRqRjs2Ms87L1/pqVx58m6YzkzEnkGF5aeZFHyKsWGTGRLh?= =?us-ascii?Q?y/LPE12aTK/MDsSGnUNdG4xJXZ03sCsTY+Y9O/6oauz/v8JrXlvjczudf2E5?= =?us-ascii?Q?03EEbbjMWB2JbZDlqM6IpFAUwhM8jMZYq1pUsEHSVLQwSTN+K6kESjqNUM37?= =?us-ascii?Q?nBRQn4+a7LT7wr3HlriXVV1dTfCLcU+0jvf7CPR8lNIBQaXiqL3IDouDLkfA?= =?us-ascii?Q?G5RqVdEYIxzIHXuRi3GxKKW/j+VsRMfl7XSxYcscawRffxaFq7CSzYQywQ9j?= =?us-ascii?Q?IuAygWffRHGdvnc5ntR57QQqPtylGhaZLhsb80Gl+lvRARcsb52pNnu5IdgM?= =?us-ascii?Q?Dqft7rm22PiLDw5Re6PI0UxANPQ28v7XYXW9VNb4lvOOr2rLAv6768426HK8?= =?us-ascii?Q?wijboe2bROquKM7Yh8Su11zf0dcVYQplXuTfXmRSJW7R5UBElYW5y5lejCjn?= =?us-ascii?Q?hzGVfszVnaEEH8lfczVNFJkhvjaUyXqEmeHMRLcth/FSsSsMz0hYjI5whZ12?= =?us-ascii?Q?/oo62INFtxAtTv976Y75yZz7jisjdeg=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: KYJELRsazWAlvSJQJyB9UqG9+Z7U9nlNMd+Oj9vYkREZClRq/I3x3Ua4wG6/FM/DSHDdCS+3bzQHVeA/9GyvOcV6805wLGsXjJTgnkyvg/z9nR60vhzNdA71/fo6HlgEalpeCfeQARzT+RrML1THaTxN2peimyN5iObnESiYEjbkdd5qeXrUMPg72AHKzuAxOB4zaDH76mfzxJEiE9NSGnpKBLZd+T2w/dnXwMbVG+VrVWq0RsrcVW5OrJ+4+Wry/6F1DQm1mzm3i0bbXKqSAUhPvHPr9MGukfu3WBBNGyTQNR+kXGG+kgDIgRtWWNWZxspVwx+VfjGjT8mK+/IUK2RlANwbvrP2oEQ+NZSc5A1F8yX7PyVoLvP8rdB1QJEbXrFNoGqnCARbfVGnCeh5o4l0l065uRy3kpiTLi7TrkDiS3Np1vaIsuxEfYsoMKo9zay1gbRAtXFx+wJfA3pLBNQP2K79ewLn371Ovu39/ViuvobcB5Iq+6muGiLiDDd+W4zXSXpg7ufdzJC4UaVFx9TBkZOuV+76DrTpk7qPrdl4kTf0YLpeH7nWPwGH9PuyT1fnWRA+kn8uAGecVMGbg0BVUloocGuevPtg0tqinRc= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 2632035a-f873-41b2-c8de-08de59b679d8 X-MS-Exchange-CrossTenant-AuthSource: BL4PR10MB8229.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Jan 2026 13:02:19.7422 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 4e2c6054-71cb-48f1-bd6c-3a9705aca71b X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: Mjp2yiUXr9psNyQPUZS8AV/1j7UuFjkFoSTRi+ZzdPztu+A0zBBoJgBFITCNT/5iYAh/9bQnsfgL2Zpx2QbhkKg96EHVioGnRwnwmAZbWDE= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS0PR10MB8198 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.20,FMLib:17.12.100.49 definitions=2026-01-22_01,2026-01-22_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 mlxscore=0 bulkscore=0 phishscore=0 malwarescore=0 adultscore=0 mlxlogscore=999 suspectscore=0 spamscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2601150000 definitions=main-2601220097 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMTIyMDA5NiBTYWx0ZWRfX+6aUfpqUaDdG WS+m3z4TXv37S6eT+bpH6LYDpATfklrj2GaDPliuw2IdGgw45FsHj38io+f4+pl/dzk3dhGAOIl dXbhtviOaJvig+f9hcNwExMgI43XuDwhmiNuQi6uyYlkUoTCm8WEonbjkPvLhRugjAybs9ake+V IG08Jp76J7XmaLA/KjWeRClFcq6uTll7mI2AjLzzQalhIc2lWr8ghVqTSqVgAWcNn+QQRWMr5Sk CtAnh7v224+cSb9YwzClOY8lShZTeNBNsqPcuS4iDVKYRII/VHJnN3J6c/MtAbDcNH1tXVzsqlv dHC0HyjlkV15EB6m5BwHDr974O4DiMaUmygn1SEc0fJlcFrqAfriJPCwdxiF8lDSV1ZjXsMKEj0 HdqhzkrxTL3o65WrX8tUD9PZOAe4nyM3t206Ix8fh5IWF9Z8SftJ/qEEXj7RI4Vw1ci5WEv4Znt Xk9MhnauDSNWAFpSMJQ== X-Authority-Analysis: v=2.4 cv=de6NHHXe c=1 sm=1 tr=0 ts=69721fdf b=1 cx=c_pps a=WeWmnZmh0fydH62SvGsd2A==:117 a=WeWmnZmh0fydH62SvGsd2A==:17 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=z/mQ4Ysz8XfWz/Q5cLBRGdckG28=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=xqWC_Br6kY4A:10 a=vUbySO9Y5rIA:10 a=GoEa3M9JfhUA:10 a=VkNPw1HP01LnGYTKEx00:22 a=yPCof4ZbAAAA:8 a=UGbfwpFX44Y6iY_wFi8A:9 X-Proofpoint-ORIG-GUID: I01NnlHAF5Kk5a8SUQaQlCQ59gnsFUg- X-Proofpoint-GUID: I01NnlHAF5Kk5a8SUQaQlCQ59gnsFUg- Content-Type: text/plain; charset="utf-8" We can use lockdep to avoid unnecessary work here, otherwise update the code to logically evaluate all pertinent cases and share code with vma_assert_write_locked(). Make it clear here that we treat the VMA being detached at this point as a bug, this was only implicit before. Signed-off-by: Lorenzo Stoakes Reviewed-by: Suren Baghdasaryan --- include/linux/mmap_lock.h | 42 ++++++++++++++++++++++++++++++++++++--- 1 file changed, 39 insertions(+), 3 deletions(-) diff --git a/include/linux/mmap_lock.h b/include/linux/mmap_lock.h index b00d34b5ad10..92ea07f0da4e 100644 --- a/include/linux/mmap_lock.h +++ b/include/linux/mmap_lock.h @@ -319,6 +319,10 @@ int vma_start_write_killable(struct vm_area_struct *vm= a) return __vma_start_write(vma, mm_lock_seq, TASK_KILLABLE); } +/** + * vma_assert_write_locked() - assert that @vma holds a VMA write lock. + * @vma: The VMA to assert. + */ static inline void vma_assert_write_locked(struct vm_area_struct *vma) { unsigned int mm_lock_seq; @@ -326,16 +330,48 @@ static inline void vma_assert_write_locked(struct vm_= area_struct *vma) VM_BUG_ON_VMA(!__is_vma_write_locked(vma, &mm_lock_seq), vma); } +/** + * vma_assert_locked() - assert that @vma holds either a VMA read or a VMA= write + * lock and is not detached. + * @vma: The VMA to assert. + */ static inline void vma_assert_locked(struct vm_area_struct *vma) { - unsigned int mm_lock_seq; + unsigned int refs; /* * See the comment describing the vm_area_struct->vm_refcnt field for * details of possible refcnt values. */ - VM_BUG_ON_VMA(refcount_read(&vma->vm_refcnt) <=3D 1 && - !__is_vma_write_locked(vma, &mm_lock_seq), vma); + + /* + * If read-locked or currently excluding readers, then the VMA is + * locked. + */ +#ifdef CONFIG_LOCKDEP + if (lock_is_held(&vma->vmlock_dep_map)) + return; +#endif + + refs =3D refcount_read(&vma->vm_refcnt); + + /* + * In this case we're either read-locked, write-locked with temporary + * readers, or in the midst of excluding readers, all of which means + * we're locked. + */ + if (refs > 1) + return; + + /* It is a bug for the VMA to be detached here. */ + VM_BUG_ON_VMA(!refs, vma); + + /* + * OK, the VMA has a reference count of 1 which means it is either + * unlocked and attached or write-locked, so assert that it is + * write-locked. + */ + vma_assert_write_locked(vma); } static inline bool vma_is_attached(struct vm_area_struct *vma) -- 2.52.0 From nobody Sat Feb 7 22:21:30 2026 Received: from mx0b-00069f02.pphosted.com (mx0b-00069f02.pphosted.com [205.220.177.32]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id BF45F2D8DD6 for ; Thu, 22 Jan 2026 13:03:21 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=205.220.177.32 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769087003; cv=fail; b=f4F0CQuJmJMRlEpc8lYYRRVBxw+5OtfFWqvQDL28v4/2V9Yi7pDs2AgE0K6xmbzKMs01yA/T3a620usfCycj+OoS8s30NOwBe//i01WkoNXDum1iKYrfW9Dzz7nePmz8DCj3I8NbxnlOqmeHew3NIA/r/ov6O6VZp5BBIEpwiM4= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769087003; c=relaxed/simple; bh=ztKUZ5q2xR2CQRZcdM0ahcE5tBAY6MfqVr08VtIga+E=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=CyI06zwgq9oVGGPP6MpHyo0TNorqreao1zBCXCC/W5yYMGisQsRvviu9gyq+pnAi7ouhVFScdTfVRloFtFWjz4NnzSqQ7HELDkRHG26lhC1REk/vxjcfcGKOQFDqw1YOHeZtQ1HTjkQ9+hNx+YR/Us4A0LIMSfbPuXu2aniL2fw= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oracle.com; spf=pass smtp.mailfrom=oracle.com; dkim=pass (2048-bit key) header.d=oracle.com header.i=@oracle.com header.b=FhnpUHay; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=OaUEDuox; arc=fail smtp.client-ip=205.220.177.32 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oracle.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oracle.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=oracle.com header.i=@oracle.com header.b="FhnpUHay"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="OaUEDuox" Received: from pps.filterd (m0246630.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 60LKN1wQ3418986; Thu, 22 Jan 2026 13:02:52 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=cc :content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s= corp-2025-04-25; bh=VdDoARu2R8NRYGTS9g8O3Evq5xYPY3YfY23sEgRG6N4=; b= FhnpUHayNYyTVNE+rIX8IThVLJdM76c/fztlFvYa6UJNSK0msbWXS0sVAiuHdGL9 +ssuofWf3p9vIoLSJCOISSRmubf9ZTVGGqdslUEE/ebWlEzeUDMq05oaxg+Hr1Cf alIPodip85LZMO+e/t9lY5A0nI3xaynFGOrrf+aVp3BndrzEiJvMcZW0tRAWTYtW qWfETp0hCh+s7b9XRLZZiiGFQ3bJcYtftgWudEsaxazXtG3F13upKnCDxmm3QeZg xYvSXIPPLZNFhVKWbQptLxCKWm1tE5V+jD094V4wo2XVYIdwg3zzIwY8UTN2Y50p AvIc1njSs7Q4bFWQH8XTmA== Received: from phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta03.appoci.oracle.com [138.1.37.129]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 4br0u9qtxf-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Thu, 22 Jan 2026 13:02:26 +0000 (GMT) Received: from pps.filterd (phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com [127.0.0.1]) by phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (8.18.1.2/8.18.1.2) with ESMTP id 60MCrUck038783; Thu, 22 Jan 2026 13:02:25 GMT Received: from ch4pr04cu002.outbound.protection.outlook.com (mail-northcentralusazon11013003.outbound.protection.outlook.com [40.107.201.3]) by phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 4br0vcrwd4-2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Thu, 22 Jan 2026 13:02:25 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=ZixynWfUFapLYv/mXeGDW0EzppRX1iJkBjPsYZg4PuAlsbSmw96Jge6GSyX9rUwYiXf124W7hPypTTYERsB6vLJ+WJ5tdB819iCJ24BxUXuqxe7aveEeFDRENUs6RySbPQCNlXsnYys/Rop87S43PGyJ3r1bsDXRglEsfwXIKDRcEu04+XqKM5FJL55dk5rkk7UylZ5FoEdoMvafu6goirjHG1LP7kGZ3riKYQwBkzz98r/ux5jzPYBKLrE3wOF3MZqTahfn9RxACxBXOm9C3ih1fislL60AEI30op3lb3d8M658v6qDXLW9Ht9Z+WiRD9Mg5Aws9T/bt/yjx0W27w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=VdDoARu2R8NRYGTS9g8O3Evq5xYPY3YfY23sEgRG6N4=; b=qq1A/WrhAJJF0H4j0YTG5jSVj+fL81aiHk7fY1xO1JxfRKIV3ZbExPkonY5vT8JEX46C7Qgsq7bj53hJbE6YBjAW5I7mjz3nCfExip8SmIegiQwwnwCJc91HzwcFnvG3oJ6h60GHPb5a1VNzVBr43J58gh2dOgu8xKaW6VikKTwJV3lZIbCqrje586zqt37r+jL7EPLsgzBPZXF/UxHf9luEh80WVd8rw0wAIjoBabrV/7HYsak/sJvQ1/Pz1MWOjuO7hqnb/nptLDIkL7GAkxYgtpsRcLoQCBKmUZx9HsDZl5xhNjjtT/WEaZK9JYE6972vkTmqkE60FUVw8P6oRg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oracle.com; dmarc=pass action=none header.from=oracle.com; dkim=pass header.d=oracle.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.onmicrosoft.com; s=selector2-oracle-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=VdDoARu2R8NRYGTS9g8O3Evq5xYPY3YfY23sEgRG6N4=; b=OaUEDuoxbyMt1K7IF7lU7clRQTSwdrOcaWy3M6kCln6HAh5nyisyV6djMSPZkgiJd8NElxHWK/HRI7bdTnd+W/61iue8G5le/A3ONAw6BY1Dhwtay2YvtiszHKanxutOCvVU4CcAVVcoln1WZYDFTitGe7I2ItoPYba0JioFmGw= Received: from BL4PR10MB8229.namprd10.prod.outlook.com (2603:10b6:208:4e6::14) by DS0PR10MB8198.namprd10.prod.outlook.com (2603:10b6:8:1f4::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9542.9; Thu, 22 Jan 2026 13:02:21 +0000 Received: from BL4PR10MB8229.namprd10.prod.outlook.com ([fe80::552b:16d2:af:c582]) by BL4PR10MB8229.namprd10.prod.outlook.com ([fe80::552b:16d2:af:c582%6]) with mapi id 15.20.9520.005; Thu, 22 Jan 2026 13:02:21 +0000 From: Lorenzo Stoakes To: Andrew Morton Cc: David Hildenbrand , "Liam R . Howlett" , Vlastimil Babka , Mike Rapoport , Suren Baghdasaryan , Michal Hocko , Shakeel Butt , Jann Horn , linux-mm@kvack.org, linux-kernel@vger.kernel.org, linux-rt-devel@lists.linux.dev, Peter Zijlstra , Ingo Molnar , Will Deacon , Boqun Feng , Waiman Long , Sebastian Andrzej Siewior , Clark Williams , Steven Rostedt Subject: [PATCH RESEND v3 10/10] mm/vma: add and use vma_assert_stabilised() Date: Thu, 22 Jan 2026 13:02:02 +0000 Message-ID: <43c90424ba0874a71bb7ab9d6423b3a2bf616f8e.1769086312.git.lorenzo.stoakes@oracle.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: LO4P265CA0237.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:315::20) To BL4PR10MB8229.namprd10.prod.outlook.com (2603:10b6:208:4e6::14) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BL4PR10MB8229:EE_|DS0PR10MB8198:EE_ X-MS-Office365-Filtering-Correlation-Id: 68e07b19-29ce-450f-1ab5-08de59b67b11 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|7416014|1800799024|366016; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?zEPUNVvJhzitYprOkbLToNRDKgC66dytFnlmykK5Nb1Cn5BMScae6dnJgafn?= =?us-ascii?Q?vPJoJV4axB7ic6sEwp1Gr+0YAyKboWP4Y3gept55OJzkpLRYjQ0Qmw0Qhz5h?= =?us-ascii?Q?8JHNNA6bKxKxGVpY4IFqVs0B4dN4rqydbC6FpWI8Nfc7mkCbrb9wulHFXlev?= =?us-ascii?Q?GAChfvGoTQCR4+Vii82Yi+S6IUnHUl5oFVJEYq3wmFmbo+OztUrw67+Bxcl2?= =?us-ascii?Q?zakKrsp6tGWitBGHn5DgTBrfSA42tt96fzLKhjTb+FGzKsIKAtjfvyUnjxDy?= =?us-ascii?Q?BGYzUlJuw9I8BoLWWTwcMEy4jOmd/n/ILpkj/yuw1YCiFb7NrHvK3yX4yJhS?= =?us-ascii?Q?iYcm4XQEI2jxCr0EFX8zIbQ3jkgIgwpvP1/n8OVEbzXiZ9eXu84BX3bZ9L/S?= =?us-ascii?Q?TapzIZfvenueVPb9sHe6Qcmci5MVE5XX7idK3rIFSf5IH2nC7nj8kzK59S7f?= =?us-ascii?Q?aBmkbwK6ZzBoJ/Ql1r5L7czQtDpKYEi9ycfc2emmt2f2S5vFg6LqWeIGZJEv?= =?us-ascii?Q?WT6U/be1wno99X9n5LItLBYUKYGL1F0hmhGEo2AaZ+z0818aNhzuQqti8qpx?= =?us-ascii?Q?b3ABqlqCT/j946LHfaKRVj8xYwzHNgaqbu0cepFOYceghsUaM7WC+vPBQQc7?= =?us-ascii?Q?mcyEKvF/QCTdNJq4DcUZ/6dYlcn+ZD9vK6Y0oeg31I+MxzwEaiwAKiu1rv/U?= =?us-ascii?Q?XIgrpeLFL+JgZBXxlGMr1nTBVmPys/yJT4zkwil7g2FPU54RuRqjT1CZ/ZB/?= =?us-ascii?Q?zchq+xRX/89iBd8cuD4ItNXPPQR+rSKZ/nFljDVBQahOlWLjFCWOjbT8kFh5?= =?us-ascii?Q?sAHSaK9PaQWbFVPK8rLDI82xwWOCM0PN244t/dFup4j2AJ0bCKLiLG4vnIn9?= =?us-ascii?Q?+9XkqufcQCUNWjSPz1CzR1jMqo3uYxnhLlYxFl+MObSmuXxO1o8Q+Hjw5xCq?= =?us-ascii?Q?KtYfBlPGbFa8XJuXKWrKbuTG4LCzq/cqUl6G/UJ3ure3enZ3vUbKJMw6WJp4?= =?us-ascii?Q?neWZAlneF3SsGR3yUJsUz98xscNZG6xJxKLehHcsUwIpWqpxfW8toSTeQmGG?= =?us-ascii?Q?PzctzEZUvH/NHLgzVDQU2y+IISnWke3D+WeEcRtbZNsdjJRCspjZ0toGEBj+?= =?us-ascii?Q?APR0u/qiQBTCsv5rKjbBBrHJH71lNySs5ctIRbYWfyS3WxIzjEi0N5+gIV7S?= =?us-ascii?Q?81kHYWX1T6I9K+j4BwTKYDtqoYFmFf6rpQWq8O37YCHMRUOz6cZtPrZU0fxy?= =?us-ascii?Q?DkvcL/aGFJqtB1KERbru7JFD/NgT2tyPs9ktOCZyvIOlqGgOcOPz7jClvAfI?= =?us-ascii?Q?WBBU21K6VwuPVH1+NEDHVxpDzcR8iRsAEXYidw7pkFNVSvi+CmSwXndk7rUr?= =?us-ascii?Q?Pq22kzmLC5zgO9GkJH3Te7X1JDMeBsLPI/xKmbEJRdJF8lGJuj+z3kIu5J7Q?= =?us-ascii?Q?wa+SYARTIhuJQZEiRDrz/6bp6tCadMZCjnuYTcue050YrSQHJJA1c1FHCSFf?= =?us-ascii?Q?XU877LBuH8ogg8YQ+yoDS91aASInP8J2IBiAnLywnZ/Ttq3JDjSokoEm1bQ5?= =?us-ascii?Q?9zpVtB11EpDYROj2OiA=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BL4PR10MB8229.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(7416014)(1800799024)(366016);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?MQBv7K0IPh1n/562ABata+1DCxtroDqJLWt8k/I21f1wsSEk3hAXpwWmlEwK?= =?us-ascii?Q?7i32VOO9SZc50q5aSgbnQ+qYsOQgwbIw6r1T09FjBXXRDQDPQU+cmguNJbvb?= =?us-ascii?Q?/5hGWuHjKbD3UIkCxDQcDSueXx86iVItov4QoPDHs2dmx+1dx9pQ06fwjkhf?= =?us-ascii?Q?OL3uKjrG5txPwRtoZa027JlLp2mhctLaI+gjIspP89AtBYVxxwBsg/4IVHFw?= =?us-ascii?Q?/sXeL7uFj9VVMT3ME/6NHVdv1qJ9NZo3DHqvSsBk1dsWyMn1OJMDP2F+lyzk?= =?us-ascii?Q?MV3IjQhzDDfr6ZrCIzlGbSg2gT3Dc85BH2yjjZ+/IHhHqGTmTXUuImbm1Pr+?= =?us-ascii?Q?gRIl6WFRiRYR0CDGgizWrXNCj1OqJ7Y1XkjSaj7dGJQfhw9uEohxkUzDOxa/?= =?us-ascii?Q?z/kKZsBjeww9yJejsdbe0iJfLdrLOntlK5/vaCsKQcVMLKcU2/wy8iV58Ic4?= =?us-ascii?Q?B7feLIyC5iw0FT0Ai5R4VI/hz7dh1tI5LPdFBOKuXcxxKK9H+Sj48zt1T4rZ?= =?us-ascii?Q?rLgMPvvwas37HiUmnU8qciNpnkliYGrBPxaeHFFXNAfPVXje1Q9KsBi8xzXw?= =?us-ascii?Q?/9rNLyYu1O+pLY6c/Blje3w4A8FWgtqeR1nG6JW/OIc+MHwl2uJ4YdeUcDvS?= =?us-ascii?Q?VkQE2BI1n7QFRBdf0ncUD2cIYVt/IQo9Ej+xyzrpl600dMn4dpVY21ESnjC6?= =?us-ascii?Q?RiztYn4163UyMielyc7xlraQTTvPCWRCe1cy7i1O+rFSd1E7bB+cHOJtaNiI?= =?us-ascii?Q?Xzl1tgMnl8tyliZkBvhOBQQn8siycFI8JmwBVwCSA0QVw9df3vx7h2XnYo+9?= =?us-ascii?Q?y+buOIOaslH/WPrbKN4jlqFWMiiGVH1eNy2f6ble23oP9pg5R782gVoNKH5m?= =?us-ascii?Q?AigoRpCPsDgQVvUXHSj1OQyLtFnKnIjfIzuf+ziMnCmmx6txcR4a/99wqBXq?= =?us-ascii?Q?3VZCzkYo8Fmoiz/F8r7yUzckV0xNuhw9/fwpusNUT/fkn1kgU1O4R5PeO0To?= =?us-ascii?Q?yTY/ol+TDZXZAl3byp5YZR+ep0l1aJofGCZc2yTdB8RdqAc2FcCViq0hsK/e?= =?us-ascii?Q?BcLo91w4Sbr3XClllYLi3M6GI+6rjH2jEkMwi11InjE/Y1D0vFzYqM7xnh75?= =?us-ascii?Q?bnNTm0FOJ/3puiunlEBrU7nUMgRLV74GI14jQcJDWmzMy5y5y72opzYy0x9H?= =?us-ascii?Q?X+lhnLzY+Yg3JDS8HGiZ+uyqoYFoU4yA9DKjzvqcwKz33eN170eVigDE+075?= =?us-ascii?Q?JoN14aI1zBemQW1ZjYguRjVXyO84CaUTEevOBGYOQv2TNz8jnDA99C1We4kl?= =?us-ascii?Q?YsUp8heBU+aSADdJgPJ4GYDfsQ7jw1mqmvk0FwmJCAR3QXRjJcJ+LRaha+Q1?= =?us-ascii?Q?wZG5D+e7NfumSgHmaKqFxF3E9CBFjIv9qqN28atvpv/h8WTvogZgTrFpARdo?= =?us-ascii?Q?npysxPq45bbQvvtgs2utXeVF1i85WJio3FbjktK/6HjRyDS1dHyYoaX0quRx?= =?us-ascii?Q?vBd31QYt2aI78EUcsrkcvamlCAEYY/IG3Tm53L8IkfgltI67U57cWfloccKz?= =?us-ascii?Q?qHw1a0GH2zpTyes2dVhUQKadEHatQ/yY9gv9iJ5Plk4rRFegg+/I4NKxOT21?= =?us-ascii?Q?suMZJWukJxcApuSwYDtW03md0Qi259pJU6x4iCWqAfu/WWasnz+VYMnEcrjD?= =?us-ascii?Q?bB1X+ABaA0Yvz54HE0SWHfmDy4ITjI4/ZC8vVXknoNDx5MFcdDyEDfF9/IrD?= =?us-ascii?Q?I60ajCW6GhjqmYlIlsJYHJcjbCguBIo=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: /fAHaJ3zQtx5SjqT/xsHyn6nnxss3D6Hm/8XO96Ko4whbLRMABq76Wz8Qawi/HKcNxyEw42Wu/QbwViBl757ZaE9zHSG1oAwpPWbzpEUuS9l2609dCdJ3bhdcO9kdOZIgHfsGuh82cDzjyEoxoqLG3yHwDN0NYbvx9QDdOYO3U5847938F66yz/6lUvskUVe00Bds/JuYn8ZgGZqBYPih/HowUhO72XQENuZc/Rzp5+S93pUaiLjaWpnR03bevrznhmhTJVEZxfQcv5BWJF29SAj9Y7dHp0YXwmNsA97k4oLi/CfRWSUV8FEnoXx7XeTlPStfLTLl47BSu307B4I50njkDkNLgJLnOznTwcEDu2itDGR5zin2ZEsHBFyvLNpRmxNpaB51CajAmjQFIGkrhNhTFfxmqxECY6G8Rn3i6DQ6L/XMI6karXd47TxBSIKoOFDTz/05u3o1+l41GKDcArulswVb2fy2/hOB78w3xzQVor8Vhh5EucRqx0PavVedLrfcWyj197yUjov6NhEUiN2P/qZ+HyZfDyeUstywQ3Ul8U+MYx0YCaV6mvv6C8dRz2Z7DeT5TApwpDV1kdQdDswE5/mOgPeGWDZREDhp4s= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 68e07b19-29ce-450f-1ab5-08de59b67b11 X-MS-Exchange-CrossTenant-AuthSource: BL4PR10MB8229.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Jan 2026 13:02:21.7596 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 4e2c6054-71cb-48f1-bd6c-3a9705aca71b X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: LWBrO+Ict8gijm1Xuk5F/M6WWTqgsSzqGJUj/w+MZpFWfNG0bDpHPJuJVFskM5rJhnM0y20bKP/7HuJq1PLeQPjupvfxeXAygPFwoLEDxC0= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS0PR10MB8198 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.20,FMLib:17.12.100.49 definitions=2026-01-22_01,2026-01-22_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 mlxscore=0 bulkscore=0 phishscore=0 malwarescore=0 adultscore=0 mlxlogscore=999 suspectscore=0 spamscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2601150000 definitions=main-2601220097 X-Authority-Analysis: v=2.4 cv=OJUqHCaB c=1 sm=1 tr=0 ts=69721ffb b=1 cx=c_pps a=WeWmnZmh0fydH62SvGsd2A==:117 a=WeWmnZmh0fydH62SvGsd2A==:17 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=z/mQ4Ysz8XfWz/Q5cLBRGdckG28=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=xqWC_Br6kY4A:10 a=vUbySO9Y5rIA:10 a=GoEa3M9JfhUA:10 a=VkNPw1HP01LnGYTKEx00:22 a=yPCof4ZbAAAA:8 a=myXMqSKX-38MvfvLfZoA:9 X-Proofpoint-GUID: jBL8CPB4YWX_ZOh22Gsl8OxzUNb07jMr X-Proofpoint-ORIG-GUID: jBL8CPB4YWX_ZOh22Gsl8OxzUNb07jMr X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMTIyMDA5NiBTYWx0ZWRfXw2NK6hNWwkDV Pg2MxgiYYcxxiYYe9fBf8o1X6bqGXqIUZOiINNyHPrvL0qbUbBoCUAU7T+SBOUoPn+sAGcLq1U0 jDAczb2TFX3I5iBSN9kXv2wcTuFNFQPAn1/vidH2wPEenFw1CUB7b8XACX6dMCTwZ9IHVHiBHay u1dlgbhVFW3y77Suwr0M3BrOJ00gbg/NeJfjthbkVgaCf7VMdUSvF/IHgRcx0CwiG9woynAH5BR HZHvBkR5G5k/eSbkMCVEhtaWGTayubv2ORlkN9WVjZayz4klNyMj1ylvkPQu7Iwi6hFjCdJAUdU CV8IB6nUxGFinjebwkXCFYMy6zPmN13XxVr3UgpJYStvk/9rjKWcYcxqHl30JsThhhHucXPTxcA A0mdbsY2hrPLYrigitFOMMiJsRVLRY8MFG8F5xxZ3PPjWXVAGM3DXOp4elLBySy+GbbepK7hmpQ BYk1l5DfDbSOcwoeyBQ== Content-Type: text/plain; charset="utf-8" Sometimes we wish to assert that a VMA is stable, that is - the VMA cannot be changed underneath us. This will be the case if EITHER the VMA lock or the mmap lock is held. In order to do so, we introduce a new assert vma_assert_stablised() - this will make a lockdep assert if lockdep is enabled AND the VMA is read-locked. Currently lockdep tracking for VMA write locks is not implemented, so it suffices to check in this case that we have either an mmap read or write semaphore held. Note that because the VMA lock uses the non-standard vmlock_dep_map naming convention, we cannot use lockdep_assert_is_write_held() so have to open code this ourselves via lockdep-asserting that lock_is_held_type(&vma->vmlock_dep_map, 0). We have to be careful here - for instance when merging a VMA, we use the mmap write lock to stabilise the examination of adjacent VMAs which might be simultaneously VMA read-locked whilst being faulted in. If we were to assert VMA read lock using lockdep we would encounter an incorrect lockdep assert. Also, we have to be careful about asserting mmap locks are held - if we try to address the above issue by first checking whether mmap lock is held and if so asserting it via lockdep, we may find that we were raced by another thread acquiring an mmap read lock simultaneously that either we don't own (and thus can be released any time - so we are not stable) or was indeed released since we last checked. So to deal with these complexities we end up with either a precise (if lockdep is enabled) or imprecise (if not) approach - in the first instance we assert the lock is held using lockdep and thus whether we own it. If we do own it, then the check is complete, otherwise we must check for the VMA read lock being held (VMA write lock implies mmap write lock so the mmap lock suffices for this). If lockdep is not enabled we simply check if the mmap lock is held and risk a false negative (i.e. not asserting when we should do). There are a couple places in the kernel where we already do this stabliisation check - the anon_vma_name() helper in mm/madvise.c and vma_flag_set_atomic() in include/linux/mm.h, which we update to use vma_assert_stabilised(). This change abstracts these into vma_assert_stabilised(), uses lockdep if possible, and avoids a duplicate check of whether the mmap lock is held. This is also self-documenting and lays the foundations for further VMA stability checks in the code. Signed-off-by: Lorenzo Stoakes Reviewed-by: Suren Baghdasaryan Reviewed-by: Vlastimil Babka --- include/linux/mm.h | 5 +--- include/linux/mmap_lock.h | 52 +++++++++++++++++++++++++++++++++++++++ mm/madvise.c | 4 +-- 3 files changed, 54 insertions(+), 7 deletions(-) diff --git a/include/linux/mm.h b/include/linux/mm.h index 6029a71a6908..d7ca837dd8a5 100644 --- a/include/linux/mm.h +++ b/include/linux/mm.h @@ -1008,10 +1008,7 @@ static inline void vma_flag_set_atomic(struct vm_are= a_struct *vma, { unsigned long *bitmap =3D ACCESS_PRIVATE(&vma->flags, __vma_flags); - /* mmap read lock/VMA read lock must be held. */ - if (!rwsem_is_locked(&vma->vm_mm->mmap_lock)) - vma_assert_locked(vma); - + vma_assert_stabilised(vma); if (__vma_flag_atomic_valid(vma, bit)) set_bit((__force int)bit, bitmap); } diff --git a/include/linux/mmap_lock.h b/include/linux/mmap_lock.h index 92ea07f0da4e..e01161560608 100644 --- a/include/linux/mmap_lock.h +++ b/include/linux/mmap_lock.h @@ -374,6 +374,52 @@ static inline void vma_assert_locked(struct vm_area_st= ruct *vma) vma_assert_write_locked(vma); } +/** + * vma_assert_stabilised() - assert that this VMA cannot be changed from + * underneath us either by having a VMA or mmap lock held. + * @vma: The VMA whose stability we wish to assess. + * + * If lockdep is enabled we can precisely ensure stability via either an m= map + * lock owned by us or a specific VMA lock. + * + * With lockdep disabled we may sometimes race with other threads acquirin= g the + * mmap read lock simultaneous with our VMA read lock. + */ +static inline void vma_assert_stabilised(struct vm_area_struct *vma) +{ + /* + * If another thread owns an mmap lock, it may go away at any time, and + * thus is no guarantee of stability. + * + * If lockdep is enabled we can accurately determine if an mmap lock is + * held and owned by us. Otherwise we must approximate. + * + * It doesn't necessarily mean we are not stabilised however, as we may + * hold a VMA read lock (not a write lock as this would require an owned + * mmap lock). + * + * If (assuming lockdep is not enabled) we were to assert a VMA read + * lock first we may also run into issues, as other threads can hold VMA + * read locks simlutaneous to us. + * + * Therefore if lockdep is not enabled we risk a false negative (i.e. no + * assert fired). If accurate checking is required, enable lockdep. + */ + if (IS_ENABLED(CONFIG_LOCKDEP)) { + if (lockdep_is_held(&vma->vm_mm->mmap_lock)) + return; + } else { + if (rwsem_is_locked(&vma->vm_mm->mmap_lock)) + return; + } + + /* + * We're not stabilised by the mmap lock, so assert that we're + * stabilised by a VMA lock. + */ + vma_assert_locked(vma); +} + static inline bool vma_is_attached(struct vm_area_struct *vma) { return refcount_read(&vma->vm_refcnt); @@ -455,6 +501,12 @@ static inline void vma_assert_locked(struct vm_area_st= ruct *vma) mmap_assert_locked(vma->vm_mm); } +static inline void vma_assert_stabilised(struct vm_area_struct *vma) +{ + /* If no VMA locks, then either mmap lock suffices to stabilise. */ + mmap_assert_locked(vma->vm_mm); +} + #endif /* CONFIG_PER_VMA_LOCK */ static inline void mmap_write_lock(struct mm_struct *mm) diff --git a/mm/madvise.c b/mm/madvise.c index 4bf4c8c38fd3..1f3040688f04 100644 --- a/mm/madvise.c +++ b/mm/madvise.c @@ -109,9 +109,7 @@ void anon_vma_name_free(struct kref *kref) struct anon_vma_name *anon_vma_name(struct vm_area_struct *vma) { - if (!rwsem_is_locked(&vma->vm_mm->mmap_lock)) - vma_assert_locked(vma); - + vma_assert_stabilised(vma); return vma->anon_name; } -- 2.52.0