From nobody Sat Feb 7 09:58:57 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 C7F902D6E44 for ; Fri, 23 Jan 2026 20:12:53 +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=1769199175; cv=fail; b=kWR6utRkNUrqvdyHlW+ULZ/BDmDOIAOGHrNoImQnJYvYfIoui0IOvKVbiqnA04ZPJsliM7FL6hLCYseFmCsNZyxpL+1j2vTW7k5yOXjEfVoBLGhj7w9M67nrNf0msfuNMZobAJkwhqaVbMX7vTs2wfC1pXmpUS8Av7kwqynO4nc= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769199175; c=relaxed/simple; bh=JXjXFai20sajtcLJZvvK63oayM0Vu9OmXMtWOAmDF7I=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=FpPC6GDsB+T67wtsMtAvm6DdjHSiXpF0VOnrljKerm1vg4Ys4oPW2csTKbGgoSZANw69SmrPfDvspmHIqNQkttimSq8BMUJzwDcDhkBcZDMvzqlZMbKgMfNF6MEZhk4AP5Rsws3CiFXaOKVk9WJ+3s+QAETxw0v011zKDPLszv4= 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=KxDmHMcC; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=ZFnwkU+4; 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="KxDmHMcC"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="ZFnwkU+4" 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 60NBjs1o1674936; Fri, 23 Jan 2026 20:12:26 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=TZugk4ONtwUmHILNMZMJnCWibT8Rl7AgMlcKeFVzyng=; b= KxDmHMcC2MyX2ZCfLbHjI2WXucVe0MXKCz5ERRWAt2LxAb+HXse3JWteknIgzF9w HvtCxK0ig5oxxqnfy/2QJqbWAUWtA5yL46h6fCuUdGnZsyNRi72DBZBuK3zcHORA T0ZNMGma2HMyJ7n4DhQ/pUeAsriWFGOyxtlHzKB3c6Ui10KIfnxFnVxXirsiNuOO jt6GQDhXn/wXWFtQpshIXJihvRIwqv7wJrMGRMyNvLoUiIKmR61Tf8S4hBJa29Qt m+ZhS4ffm1xDVQ6u2Ym1JWoeHp8keCu9lcsmi4mHnjHgQ2+aroGfS/zF08aB75Xc v17cxrK9CZkVxiltT7TcLA== Received: from phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta02.appoci.oracle.com [147.154.114.232]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 4br10w32nr-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 23 Jan 2026 20:12:26 +0000 (GMT) Received: from pps.filterd (phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com [127.0.0.1]) by phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com (8.18.1.2/8.18.1.2) with ESMTP id 60NK4eN1033115; Fri, 23 Jan 2026 20:12:25 GMT Received: from bl2pr02cu003.outbound.protection.outlook.com (mail-eastusazon11011002.outbound.protection.outlook.com [52.101.52.2]) by phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 4buyvfba2c-2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 23 Jan 2026 20:12:25 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=Tt4zs3UyAVln6CnKXpZOyehKc2FycBK6xNYkNuprR6fdyzO9azCNoI77ScevzgFo6OMJAXreUoLW4cJ4aKphuslsAPMYzb+rVWasxMi913D5D5/4RTF52fFChtFgVFLA1YSEZlfpwswla3dGLgTozK9gUr+RkFKfXsRZ8xK24m769p4PK3ZGhYEs89iCURiezcIZYxiN9O+fNk8REovzTHmxjYFy8ZZOTewLhP7AXWNUUGNvPXnqsI0G5aJ8MqWJkKZdWnJWUm5CiakZPk0K6OYKCWmve2+pedVJ0vSnO6IFY3OyqsVFcwzKZjXwkEyVwU+t49/YRAjp7wfkxpx9kA== 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=TZugk4ONtwUmHILNMZMJnCWibT8Rl7AgMlcKeFVzyng=; b=LzJBz+5muZiYrn7T4AcpCtK8tpkGKAQfOHE/NjD2Caqajud5V2gaG96qJD7V8U/RVvZJZSBhrt3JWStjNE9BrcgfjqI4PbwRKZenPQ+m3dlqAcPpkAt7XGvTcWaNftl32x/iF9w/AcMnRgV2hPb7tGJya3OW/wSzx8JvxWwNbQTiKbKd61/KeR7br3207u9N+LJevYYmRHirY6g6ozAimkTEXotoW4v4dWK0M0c4jjj4SWxnISgHr9FYcJY6ipDvJ8Ru7CB1nbIVpvdfT+WcK4UjC8l3rrdw08TaFgxxq1CV1aiGZuichWiNs8rqe4LwBYpYt2tHjWxvJn+gypTGzw== 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=TZugk4ONtwUmHILNMZMJnCWibT8Rl7AgMlcKeFVzyng=; b=ZFnwkU+4PXaNcwyrR735LE6RuTO4y2bhdTImSExYEURkxBf03qPe/ng0zpQnhwQpFPnHS+hQ4PtzsTZqyg76p9JvF3SuAzuxufACkPZ8qKp0NlcT9NARy/lKtuh6+zy+WY6Is8KGHNOCcIIuKJq+0T22mIbBjVTRnWOKBPrv8v0= Received: from BL4PR10MB8229.namprd10.prod.outlook.com (2603:10b6:208:4e6::14) by PH0PR10MB4536.namprd10.prod.outlook.com (2603:10b6:510:40::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9542.11; Fri, 23 Jan 2026 20:12:23 +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; Fri, 23 Jan 2026 20:12:23 +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 v4 01/10] mm/vma: rename VMA_LOCK_OFFSET to VM_REFCNT_EXCLUDE_READERS_FLAG Date: Fri, 23 Jan 2026 20:12:11 +0000 Message-ID: <817bd763e5fe35f23e01347996f9007e6eb88460.1769198904.git.lorenzo.stoakes@oracle.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: LNXP265CA0002.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:5e::14) 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_|PH0PR10MB4536:EE_ X-MS-Office365-Filtering-Correlation-Id: a608e0f5-4135-4f8d-aa21-08de5abbb833 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|7416014|376014|1800799024|366016; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?Dm103wiYmWSuxrIUEB8pPGKAnQKzhLn/Z0dm8j+yxqwcxdw+qGhwlzf/l3Wd?= =?us-ascii?Q?fzf3HR42lsb8ChMV9wm9Q6A0bI55SlDdiu6P/s8HAgOOUFWmuiwCn5oZwCTo?= =?us-ascii?Q?WncSlVp+euJEYfjOaySMfbcHn0Kafm++KMUWPg+nA6PbwBgY1djCffeyZhc1?= =?us-ascii?Q?jWvoK7FQtKtfo8U9gXRvAwFwS2o2+I1/iS1h3CEoAQyvS2YnZTWL9dc24b20?= =?us-ascii?Q?yMj+6BKj7ooEEYMO6CX6wVwL19ELKUS5KQ6ukR8vf1vvF7m9pog8XeLuxKaQ?= =?us-ascii?Q?+ZU+Cn43ZPhi6YQbHgN8RQrikl1i0n3HS092y35+CuFYbya5LKM/45smY7Z1?= =?us-ascii?Q?WBomPdj3YZ751EolnoVK2q+PqkkReDOhjyPPsZI5/dA82wf1wEvbQDTeUeA1?= =?us-ascii?Q?7CJ0f1M599CJ4p+aG9uQ9RjrSlBNnu1fQaFKg4FzKqtaiaRowF16zUrmGxYg?= =?us-ascii?Q?OSLfI3Zbro5e/LdJTPKg4fAuu9Kkh5Q9WlbCaplkF3NMXlCBvHJBPX6xjWOa?= =?us-ascii?Q?s4NONjMu49aQ7viwkCGA6nKPvfKdO9ItHnMMq7C/akehxbVJCbYNFDMRTlMu?= =?us-ascii?Q?nSTHZKPz9JchiM1lYytdxzUGbMgejbjHJN6/qCVUsDkAeTmB2AIfgLPv6euw?= =?us-ascii?Q?oIcmAvgiP2YAeVe4ZaNvXAB0oYmzcohgcExT60MINuxO+3rm8vy94XV5U5/O?= =?us-ascii?Q?dsf9mfjGyGqc/BbmEAZ9uWj4sBvyFVwVYfnrQd5R0qOEc/MMByFtt+2A/pyU?= =?us-ascii?Q?lgkzvmCGxo9HhG7ylt1+X4Qs+HZIE+p2npSX5qjFvr34pyko6U6Pd20p2Tih?= =?us-ascii?Q?LhaTnHLAfbqxeS9k3rOaf6k3R7ZnJwDwGEwPMMqFbTElMmi99kHDFP3mo42R?= =?us-ascii?Q?A0X9uRn2mYTDZ+Lu66GU67QowNhpNRfpTpGyYckPlsd9a6w++HPqHV63hfe3?= =?us-ascii?Q?ojHzrHoGwFxAmbBSXctQcyqMJuWXmqio29smPtqdIBJJtDd22c3wO+5jOhq1?= =?us-ascii?Q?F2DJXwoqYgfUwJidyB+IzPxzMAhTiGUpJ3h9ughgmxmOQKJLHP+Bcut8sChe?= =?us-ascii?Q?EQgFo43adYaywhTDcpI+M4H3NWbI24yLOzYlya1hqzTbDN2ZRACNRE1wCuAZ?= =?us-ascii?Q?6u8w3n0mxobiD+3qwzpalf9kfC4vH5Y3lF/1RsBoe9vt6TFEsCnR//D3Qe0j?= =?us-ascii?Q?ij+Y6MObaQdKBh8gtUUnBE9EALDjwrxP4c0i0K6EBB4XhVqZHNK5gtk1Uygn?= =?us-ascii?Q?wAgAXqGEXirSjWogQmOAccpMom8j0W+qkEFq1HwPPnIJLz+lJnYfyJQMAk8/?= =?us-ascii?Q?ot/mgPndjoMCgb9XZ8ziEKfrtejG7uOp+KwZeVclB07gEtyIuuqFWDmTHCFs?= =?us-ascii?Q?BCIaGukR+N38+vwyLDtxnhJmtIXlHzcmyCsibEnr/aqYR3iI780/nnILICYY?= =?us-ascii?Q?oyWOhKQ8y0GIC02kMcrAdEiniRLLJnZlxO5YdH3NYhCOggLBCDmkwiIrbglv?= =?us-ascii?Q?D22JZ+wTEjJMAMaUI9y4+7Jvg8P2hSELHMhrz3YtDXRsycRASGmUWXFbXwod?= =?us-ascii?Q?JCigsS6bdyXuAlsgfW0=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)(7416014)(376014)(1800799024)(366016);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?Y5fIvNFnpYja74YAZWhCu5UVo5+UfL7bL9VvMYZG/VRUqLfl16qqdiJ6yA6u?= =?us-ascii?Q?KjMnE+8FrSD6A0/Ln0L2GaBx0VxCS+W+nzXlG5h95bQ8aOYzluXwyysjxUGq?= =?us-ascii?Q?HdHeWBte52WrZS75OfqpmLjcWSdU4oXc2g9UQvAE/3kHxcerYT61o9K/iOht?= =?us-ascii?Q?On3zJCYX6s++A8j5vTVbKcCMlZvfTQadK+90PsQicax7hd8v07u7DGHioNbX?= =?us-ascii?Q?wPOIm4xp4VF33DL4rJKLZkeXrk4W5SztB0DgxK3/+J/eOMXwmfUrkRV+BhxG?= =?us-ascii?Q?WbyBC7F7Q9n5YlLuikSEfyBUoTJUBFLDWzRFza0Kc7GYWdL5A//7YPkRGSOY?= =?us-ascii?Q?YhBRSkjKEoOodkZKNGT0wNXziKg6wmcmuCUY5FsVYI7zRl7FomY07rhMEuR3?= =?us-ascii?Q?ufnSCN5w5PFvTh7f1mGl2UaEiAS6ZdYcU0OQAUYX//p//gh0KoQ6V1t4Ia6O?= =?us-ascii?Q?QFH5p27lcfjAFqRNM5XAPkQ0UAJZs/zvD//PAc7r5GEN/SzFPlW1hg2OC7O3?= =?us-ascii?Q?TO9iA+QvTcuag0T7uhE8cqUBq7ypqmuTtiK+OoSYkMlQinyrzni7QVbkMpNY?= =?us-ascii?Q?Gbu5kKCANjD3kY4BbWNWxjw1ivW1mdkkXNOFN7lMB4mTp7NbQWgrJIghqbyu?= =?us-ascii?Q?DRt+UiZ3cPy3QPRF7I9OGOgqNmqMGwY7hxaVZO2O7wDkwbKkJIJKPhbBycOl?= =?us-ascii?Q?iNv4JWC7ZE9txTbPiNcVWgaPUBcXOnjAsrWn+jVkvqacVPap5nbbuEke6sXA?= =?us-ascii?Q?K+SXva065w+Xu8VCTae+9SHYDDX8rXUpkwudRn1IFZXOSDxZyEY3kXLibiHr?= =?us-ascii?Q?3UNa/Pg6mEWQHaZDbPwWqHMCrC/qKcup2YcbENNrfUMtVUtkSzaW90uRJBv5?= =?us-ascii?Q?6UhHj2Connxmm5Z/sJqQTbusGrIBhNc2zbjZsBt8M5uzr1aKzHB7bkNfA4W5?= =?us-ascii?Q?zkZbBeLd0ImuN+Yu/hYdfKJ4sMIW/2CNKNTUf9NURZ73vHgNYIWTs1FFOzzg?= =?us-ascii?Q?nUqHliieXRxnoBfH8nKzdelHj+Z187QsCAw+7o6jWaMCO0rYdpNNH37+YWR3?= =?us-ascii?Q?Y0YHLizGOl1MnYccbq/6iHdtIBRWzTvUgRy5ECX+wmorFxRnHevFZK4i/UMF?= =?us-ascii?Q?/tRij9JCtd5SchrvFky10geL6UVqiNiZIl23CCXsjhgtOXAYfKPLDr49XsZS?= =?us-ascii?Q?h09KZmoldhjiS7rMNRzvNsU/7AODHEZkBD4EscdJdNRDnWfKP3IxPQIXQO0g?= =?us-ascii?Q?P4HmF2C2LhhOfS2rKQGuzzQPO0/v5iYktIXhVCvSkJI2ljD5nCc1ndqlaNQu?= =?us-ascii?Q?+TVk+LMTm38y9E4R/BKzq/O8KoGTkS4YTL/+i81/mFNLmb5aCcY/VMguSuUL?= =?us-ascii?Q?wI7dsd5Hh4csNjWyY4QIcUbFfDRvF0lPO9xV/MT+czUPjges1QsKcrBwmsYv?= =?us-ascii?Q?lfZbvSqmc/Z87+XxIwdRPDvxd0D5vLM1B4KLIBTRoNQlHOTMTuhW8tcA/6PF?= =?us-ascii?Q?vpUy6GCd0loLRwKe/jth6qg56MnyN2nV6wwQdY4cBRSu5ZRFnQ6TZYGkYkRO?= =?us-ascii?Q?a3ndwOxF40Ly/3VnpQJ/LKqrftYRtdnTRnis5RAyo3jLrBJsMuK0hlaCaLm7?= =?us-ascii?Q?/lyUUCcxEy5NTXFAze7B54Pb/OON4NALNxeQpDuOd6mPjFWBNcqIETsxwNpn?= =?us-ascii?Q?/JGlp4rbDGcGZBk0T2x2NbMM4mYmat4amLetw/QpyDlvcwDndYgbYYBhLANV?= =?us-ascii?Q?RZB4vXA17baxrwaX+lDxWPY59h3N/1U=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: fFE14iPXitnZdtjB6le/IWHm8XF5wtfZPrK7HQoE5/HcBLTeyA/rgEbIqPdwrtyQ5orprmVyW9nb6ESox+HCfENu3AjmtAMX+ROpzMEjo4IqlmF4t44o6GGLY1MDI9aNbBzRVL0ufH8D72kNLkI2lUGake0SNCE/sKGV4ONCJDG1GtkXZRUV3TnUMPmB1iV57xD1oGZqM6T2Cma6YycURKVKN3KKN0Jmg4rBPuZ3uHBr5vxeBnQYnhIOc+n/bgOFALlQ9VvU4gA4KHclCro0aNJBSXUmnp50DNTEW/xoMq8Axp2XkqIK1/eVZKUEXMH0DdbYwaKoYpOi8vtUT2r5LkL3yvkveBwQFHYUQ/RgdKbcLoIm0DXSLgXvVElrT7+qGRW47Mss9kxABgbVPLieB2eOgh1tKYH+tFWmQ9xtCWd0+3lCjqhW6xrle7MzcJobPW6SojLvuCjb4eQzTomVod5mvKP0Y03pq3arP4zPpc9rJhAOAHOqT+9SOxi9uNVLo45CVwHGo0JEIumRyP3jDo5LaWMDw4ik4c7nf6cAsLh8kJUORiKsytuB7VHmYtjiWs+HQe1sXD1sbIKyNcEM5VHqW+H+c+xLvQVyz+twmak= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: a608e0f5-4135-4f8d-aa21-08de5abbb833 X-MS-Exchange-CrossTenant-AuthSource: BL4PR10MB8229.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Jan 2026 20:12:22.9932 (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: 0bu1GOJl7FWWu/JOFXHcUJTVIg8+9dl3UH1HPzEib7jA3I6JTvLkgdvSzkdPMujA4YbCdTPyj8Z/R9b7ezupTXtwXIzXArxBZ4D/ZnPvkGQ= X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR10MB4536 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-23_03,2026-01-22_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 phishscore=0 adultscore=0 malwarescore=0 mlxlogscore=999 mlxscore=0 bulkscore=0 spamscore=0 suspectscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2601150000 definitions=main-2601230154 X-Authority-Analysis: v=2.4 cv=H4nWAuYi c=1 sm=1 tr=0 ts=6973d62a cx=c_pps a=OOZaFjgC48PWsiFpTAqLcw==:117 a=OOZaFjgC48PWsiFpTAqLcw==: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=1XWaLZrsAAAA:8 a=yPCof4ZbAAAA:8 a=9TB_ZDaqR0cpHShmxdgA:9 X-Proofpoint-GUID: YVzsvvWc0tnUsIFEgdYl0X-_8xQWwxYt X-Proofpoint-ORIG-GUID: YVzsvvWc0tnUsIFEgdYl0X-_8xQWwxYt X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMTIzMDE1NSBTYWx0ZWRfX6Uzl711B/pKQ jyzz7m2qLwXMYGIdr0sUBMHotNjTjzeHIBHgcFHf0t6eFTtISW7JbVm6hME22G/Z34Xk0OlwBnq eK+u7THQ13+SqwVz3VWVWewRDjiaEwG58sP9crjzQt+lZcBpslYqeYQtBi0a42KnvPUbZoNxQAY TRnY1XBaI4azikYx0OPCXMGwKuH2wQ3doYofp/MWkgS4V+SxqjHUA/AYJE6ikPSJVD/xJU7TWQz ewY8VdsTeueWeeudJ3BYtws4qtupNytxy610gcD9NY/BeZGlW/hL+QW97D8xBJ3O1Ekq5/YKJOO SwxuimiB3FStCjOkEEvm99M2KU17QluulPfoiq4ylNKoknSg+DKDb0eKbd+RoeCKhg2qwr6mukx xDM9Q2PmwDB04Hfb4NMGZRIYE3ummMYc+VACB5Sb0qfRsJTiC17uE2d81ChGZMKjr/ojFvUpGDe avmLGavusZ4buMKpZJA== 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. Reviewed-by: Suren Baghdasaryan Signed-off-by: Lorenzo Stoakes Reviewed-by: Liam R. Howlett --- 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..bdbf17c4f26b 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 =20 -#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) =20 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; } =20 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 =20 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; =20 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; =20 mmap_assert_write_locked(vma->vm_mm); =20 @@ -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; =20 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, =20 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_); } =20 @@ -180,13 +181,15 @@ static inline struct vm_area_struct *vma_start_read(s= truct mm_struct *mm, } =20 /* - * 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; --=20 2.52.0 From nobody Sat Feb 7 09:58:57 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 594342110E for ; Fri, 23 Jan 2026 20:12:52 +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=1769199173; cv=fail; b=XvdfSxPrO4gAs0+rWamW9dtEwzKZvTbwq0hqxSf1NXcgFPLABzpC0yrl+GRKqUaLZPDwAfJbUIOnncCRqR7EwHXKfPbIp6nqYr4eI6pZDJdIn4x+Z2clK4mm9JXsBPKUdHsXrVrojJ6/zEqYcxk9YKvkMEkm99GFYunkiN3EyFo= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769199173; c=relaxed/simple; bh=S5gfl7XrYerje5QqnBJTLF3ukegzE9MZ65NR3GtWQiA=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=Bpfe9xj/ihqXnKl/EhkOqH4xL/kM7mu8AgwbGCkqwne2yn1reMcMy29BwsckeAEhUVZkFY6tMdx/KxFmYh6ViGO1e0XVrj07am1qlCF2P87kn/FOMoSDeM8/ULZdKMPnoiD8uULmQpYmjSIUYqOy5ExCwzZSEp2pQ4lIdYYu+V8= 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=H1CaHgAJ; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=gNjXqN+B; 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="H1CaHgAJ"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="gNjXqN+B" 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 60NBnKCl2172813; Fri, 23 Jan 2026 20:12:28 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=t1KU4jCZS6L/0xtiZA9NVZsfVAfFi3/ltK+jPGtmfSU=; b= H1CaHgAJFq4MJScYkNu6p/uRSRAIh7RZ9/I6yQhpVPOsz8TI0fbAdI5AXfuwTHg7 Kf25xLXtmvqZQpZn+0aw8nEWGjKegkh4ObwEaB+yzimTBPoZEM3+JArPOGjdbPAd ebM2ZaBBXRYxIWfq2VpCCJY9uVP/zcuZG2HsAUHU0cWpMQvrO4IURH3oJWf909rY g+qhevgL41L88mC4EpeqXsP4ODSnbO/zvFcyeduUHSQ9dVxzrByFRR47gbJvEW19 6KgoC3ws8Gkn1zojgNqQvi2J91UufM+/2vPSe0Mc5ZBADX2ROKfCTwuqP+1tOnPf ig6o75Zq9ZnPdyC6FXKtCw== Received: from iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta01.appoci.oracle.com [130.35.100.223]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 4btagd7k7p-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 23 Jan 2026 20:12:28 +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 60NJV0GY022439; Fri, 23 Jan 2026 20:12:28 GMT Received: from bn1pr04cu002.outbound.protection.outlook.com (mail-eastus2azon11010020.outbound.protection.outlook.com [52.101.56.20]) by iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 4br0vjmgqp-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 23 Jan 2026 20:12:27 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=mW8rmRylzNguLYAvE8X3VNJB12+Asku93AHa/zQR3kzZXHyXSGruKhWxg2qW81srriD6+AYx8E3waxVq4t4roj0oYNRDpPrnGfz1LCrrLnZ0Ha/D6axMzhWUrQV+ecSlZeCt+OrsMNufCRYJO1LgBHvu9az/rmBkkt3/NH8qcd/umjxYVIor/8XqE2nacY4ro20ccFXLP/SqdkU4wy6Xp1SlWpbErWZAMF2rLEElf7x18hW82Pl/rSXwzxxpAXfA6YxOXgXk5IxEipt2Bsk9DZcYhbw/0vEO0NWmaCuS5b3dFTHF+O8/B7BgFaMIZL2au6CY5doB93zyB2n+joYAKg== 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=t1KU4jCZS6L/0xtiZA9NVZsfVAfFi3/ltK+jPGtmfSU=; b=ZJuaSzRqHf/zLMhJ+/eGBuu2Cie2D2ItVXjb77BzxWsvvIMF2+f1hmqgWLiXZ/Q5pIE0Lgc9JgE+Mqy5DrlYPResFjLxP9t5wlOmCtV0FxN4EkxT3tmZ5MK/zRg0cxjt7h7Wn0wujgxFhO8oECdw79Vpj9BWZPOa5HMThkmKnM526WPaj/wKaufIxZeAVynclTzzFhGmvQC4+KgMhSFWCuDaD4kPYvr4GK3mWWFh022pgtVuq/fm/SqKUiS+HoBGY3+2hume8xf0GDQdHuHAicPspzUorZ4vLSzrgKGoRSPWxeFU/HnSlFmo6r3n8YWp17ZRtO5GR4eAEsY8Pt9kTA== 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=t1KU4jCZS6L/0xtiZA9NVZsfVAfFi3/ltK+jPGtmfSU=; b=gNjXqN+B2ZJCOZcakSjOw/D0KyosickXnktk5z5HfsSIGJnQXLOFvAGiePeb+XtlGl7TTL+LO9OMSUIaPZBvVCm6wFl8aKzI3wCXXtGSk7IRGMk1nVVcyH9T1fxEB+5WZMXt/RV/shspQLmBo6O5swaDc7bvLUclzmeATHE+hPw= Received: from BL4PR10MB8229.namprd10.prod.outlook.com (2603:10b6:208:4e6::14) by IA1PR10MB6877.namprd10.prod.outlook.com (2603:10b6:208:423::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9542.11; Fri, 23 Jan 2026 20:12:25 +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; Fri, 23 Jan 2026 20:12:24 +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 v4 02/10] mm/vma: document possible vma->vm_refcnt values and reference comment Date: Fri, 23 Jan 2026 20:12:12 +0000 Message-ID: X-Mailer: git-send-email 2.52.0 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: LO2P265CA0286.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:a1::34) 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_|IA1PR10MB6877:EE_ X-MS-Office365-Filtering-Correlation-Id: 82559725-ecbc-40e5-760b-08de5abbb959 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|7416014|376014|1800799024|366016; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?zyuZ9qyFy/NXc/M9if6X3aKwuuIyBb6DJEEhNXp6HNdzG6jaCZ9YiyhIZ2J9?= =?us-ascii?Q?8pZBYkWZbD43g//rT5eCuhfcTx8M3V6siylUZdpHW3f38je6yhLQ+ym3V1uL?= =?us-ascii?Q?Dl5HS0sHvGeuxRpvyv54VxnO2IGOyxzgySFm3g6HVHKqh/IwQPuk5g3p3Wr2?= =?us-ascii?Q?AtCDnGiLeDThVAZ/r/RmzqhgX55RzeiYkUQhgDKAUG+nK0AyiWiDc8hn9T3d?= =?us-ascii?Q?dzYZVDUF0bxy+M6F5ZlN6tDUHzDgrGJFkGNJbvOlusrgW2z7MqLxSW+vMULF?= =?us-ascii?Q?Wdayj/9yOEAcjYFEWIoUuUAxfgyRrAM6/0OFRwpUpMWEpHwCnTw+oB5QhTYz?= =?us-ascii?Q?EZ6Rs7gUoj95BXaCCFe9Ixib0nBG/moqa3ipikRoYaDeOMRZ8GkEMJz3km9J?= =?us-ascii?Q?QSRuKHRsOflgpR+5B1k0erMCpcc+50JrF329SN6gA6KuXJK26oLCvcbprXPI?= =?us-ascii?Q?ou5HzkK5km1VYDe+KXyRtRGgr5a9Q5dkcOnlpYxJVAngkY/Jgj767Ycui41V?= =?us-ascii?Q?zR943zpCJViteA6LtdJQUuljZCGKaNsIpC2ZWTGyUzzraVyfgACsQYPGQb/0?= =?us-ascii?Q?O/5ZTxAORqzc3arW9UxvYYcjdDgyjemJIoDvH+rhQVbWsur9gD+EAPN6ts8G?= =?us-ascii?Q?F8aofhqPJ4tjeTqR6MNYYklyf5kKDjeYGYANnuMTK81PaWCsULGzuwyG/KSI?= =?us-ascii?Q?IJWSg8muI+D6YfW06hueabixQcAIzuAY6c4vN0L5Mi9d5Es0E+eUsG5VTk4O?= =?us-ascii?Q?3wW8LyHinf+XLWWlUzN74PdWhJztp17ayeQpUGA2EivGIhsR7a8CmBrBKens?= =?us-ascii?Q?Oc4KWO4i/fmnQaW3cC7flzcdfXpmZaM6XR5F9SnO80twm82wXHaYJV3Fxzg/?= =?us-ascii?Q?yzLvUor5IV4AlSAVIorVdqHsrb6cU6ilGlkaFhrFm8nsRktbV4qFKf+GcUwm?= =?us-ascii?Q?IKB96/jYq71SfN5LDDCDw6RD/LcTlLmhUZOdlJMJfxuA9xoUwxTBQ9d9omT2?= =?us-ascii?Q?D84cwHDcz4fsGxA+qV4n3A9Xl48+oLkGW/pwus6TjwRTVhG6Yx+Yi6TOFGty?= =?us-ascii?Q?J4cPtkGwqYGyYTQyL0on1WNQypjwsE1Gqc0ruwPOjaeJ4GA5g/mbxlfe1P1n?= =?us-ascii?Q?EnGEMlfqV3Co+x16p1LbanzEBaaYjt2Buc56GcpyzgK/z8ZZlfLjYOrZeLJg?= =?us-ascii?Q?oWFQI65K0Dx/dCkFUFHPuiOsouWshgbZzZXj+NUVfbrKAGBomulbZCTR3Upr?= =?us-ascii?Q?2tZGDcKYiWK/KHlrZLURjAFRoAJX6CDKYqeoFiI4NeISEmEKcf6G5LkbBu4U?= =?us-ascii?Q?oP+nEF1GpdzHM4Zk4mAhq4SsHGetLUtCicCP6fEsVHt7Pkkb1QxEinZBR1kB?= =?us-ascii?Q?zFNexaRoiqDQFPDVdvcDgC8n4Rml70iSoVREZDyrY94Wx62rkdfdke7xOYbP?= =?us-ascii?Q?Vqr0yxe42gF1PMmswtS88pPxULTqoEAYGb/E6067dCOF6Y+hOCm2E+DUPT55?= =?us-ascii?Q?2wbu0weFEhwrbBiUCjMAIsMkFDZT7V3lai4P9I90wmBMSq0CpQ4FOVhRK/p8?= =?us-ascii?Q?XrXSrF6kJnbAI0IqCeA=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)(7416014)(376014)(1800799024)(366016);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?sNZrUub1xMPomMB+kWP9mRYc90qsRS9NBjZJ2FVMHMjM9xE/xpgWLVmCEQiU?= =?us-ascii?Q?Zo/3gN9boKxkf3EdTDOiKT4h9UlOVb8ESDes0OljccOe/kqWxYHNtI8tS7bK?= =?us-ascii?Q?KbVjE7xp0MBR2b/e3U5LJRuG7bBBSjPx7GI9sPcdztebdrI19jUBWNx5ktb+?= =?us-ascii?Q?lo2p5MJymQgYuZl43SByph5D7fl6u6TC1umFzC3OUFRoSHJV5KtJ5d2UpjCM?= =?us-ascii?Q?TnZ7Gv+FCvl007u9kOm/sKxUYcDaQGWuFh6/IYUyNBR/cYc+wkeNg4Omi4fn?= =?us-ascii?Q?i0lCZFSQNnj9qQWjkjg2xdaKWYIrDsZ/nRB8knJ6f8+Y2zC516gYsounhGDT?= =?us-ascii?Q?y1rKIZ+YbzwOYii3OilVTOR3jvJsjDYy/bqQ3jh7zbgijktn7whOyL1NHj8o?= =?us-ascii?Q?DzhQz1wJkawj5sdTbIfCxpxysEvEi45ZWFMZ0BNeYEmEpHU5aaY4fDOK+Yqo?= =?us-ascii?Q?HyYmWDcFBZ94+HBIdz26D8E0UXDmwSAFKotSH5Zdh0TbWagAVANjFRwYk66t?= =?us-ascii?Q?Zt3V2pcd8Ur8P0OFYahvTxWoe9xp910uhe9sT14ErVqT9DfR+TtoZM6c45dl?= =?us-ascii?Q?uQmmTS6zOq95pO54oXSdkUSeQeZ81XbO4gmtgQJTy5yIiXtzRu9XMhwVqu1t?= =?us-ascii?Q?MW+LbbHOMxZv/4OfrrSVQ8MFR01nXmBz42jFvvmqhbwNmNrWqL7JM3zn5xPq?= =?us-ascii?Q?MKS9/porVG6squ/jhtJih/lOFPbWS62cpYqz+Xck1ra+iryyDCxTZiH/l+Sm?= =?us-ascii?Q?mR8SkkPFu1G/xR3XT6FQqkaXcpyEoo91Z6Eyrx+rG942R7VFdYZaiY/EIb61?= =?us-ascii?Q?VaACaITdPUn+8IO/fxU/2X22Vm+67qqP+NSw4TsVZ01oU1DM5oK4MTk4BaRN?= =?us-ascii?Q?1R7Fi7SI6+eKVPXFHJVxQIzPDo+Vj1+GuaS6HJOgX3FUQ/+sKTwXXR5EbB2r?= =?us-ascii?Q?7A7myU1o/eg4cfCQ6sU7DFFxfNry00MArDTP9Rc9vKxp5DzyQzsChuX8F76U?= =?us-ascii?Q?mYxfCWMMp5g3oLHyg1s4vwiOmg9JBNJgGTNDj+Vf6e6af+YvUL7FZV+DQWQG?= =?us-ascii?Q?PWZrlDbD1FHbXWOakKHgo6Xt0XCkKetrvIVGfOPRE4vofaLbsXnqxNXAIxRZ?= =?us-ascii?Q?v4FF6rsz4AQmFRkHwSERbzYFwyRjgqIjUrY1fRWzptbuIp9+YZkDyCAmSSO8?= =?us-ascii?Q?jLIYdkO99nw/YP/aNMOkcBDGvSpzHeczOQjkGNGPrCqjapzTJJVkHPaRLWS3?= =?us-ascii?Q?HW2dXSFCFz1FEIO7Ast8VxQ88R010xXnRMLfCcd/5uRiy/4u+YnNud0z0yp0?= =?us-ascii?Q?CqUZnRYIr/cV0TNDhWWOk+ZLnScbt1WsR0+0HUmK1iF9Fp+blnKgPitHcvT2?= =?us-ascii?Q?d5MDTd2YZxVw1oEJXXPoEHrPwZj7Yk1NGYuuNiigWVsz+XrKIA6TUZC1lmsj?= =?us-ascii?Q?zHCO1FVSg3OMDsNsbgIZq5LHKX+eZ6RteqJZpUE6qNlbHx99LzJfl0wqxgBu?= =?us-ascii?Q?26t5RYWjkc1ulmoLtlF/hYnkXOia1gw0Glsmm8onCnQb5nYPXrDubTS83emE?= =?us-ascii?Q?XaFqvHgy6QVTs1OybXpUtR0aaUkhYRfPL1ce1RL3wL9OTvr7AKPI6FISiyZK?= =?us-ascii?Q?ftDAiNOIGNE9xE4y+uzDFtBrQGoYEE9OG4cWXwNvwBIu7Er0AiML/pnJgHhz?= =?us-ascii?Q?t3fLFZpctIvK7voiJSKhcz2x1t+Op46yJIg04hXgftFyzDVDQtcFRe9Mk0Ri?= =?us-ascii?Q?qAlbSq3vr6Pucnz/dxuEX5vo7Q9288E=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: chg8iKCyiMRg6KWfq0v2XkKaOuFfsEm+44uu3Ttr3QGX6o74uxyDIBtN66Zke3jWImuLgAqIXJRBO1bQXx3HgStiheIDQLCjhvmvr7vvCyXiHno26kfTS0x7Mrr6xwUN/O8Wsfd0MO448Ezf+atLYzXk0bcgjuOk3z9hPeHTQ+cxLA3DpZ5WVUvzUxhzeQrtC5vFBMQWhNDpBoe9jUD4qB4nt21Vvw3bavD9tOM1qfvc0/bgyenPiW1PNm1sY+uRdx/2uaHdlHEa9ctceNO6guOJQ5dQoU+PGv8G5OeYriTvGEQhW9V1sjFB0MJIhppR5rD7yFi/QvUdPZsSYRKXjRx2u+HmTi7T/BX2hcfvDnpsaj4YNLbtQBYcIbVC8vONsSIKm1rvhVI6x/HfvBDhYa2brBOfmTI3TCjBjuHtfYkL1UgUVvazwsIYIpYXZIlrc/EmyPO2GKkuHZvtimcSt1SRH9xfRbTptc87iHl7i//RSCtZbUZj2TyMuu1vFoEonUiah8cTo2TSTrltVimpKGDKqD+ipqzyQtdkznfxPSKNxYEHsvew58nQuYvirFKo8zMXgspz+cFz4aJtOtxuyUX0PBzlLbrbG2ISsFxWT0o= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 82559725-ecbc-40e5-760b-08de5abbb959 X-MS-Exchange-CrossTenant-AuthSource: BL4PR10MB8229.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Jan 2026 20:12:24.9399 (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: P+k38Oy7ThRbVIw4Rb0PwbWvhcU18ho6zujVfubQqnbUPC7H37WCPUtE6CPtDiB/hrcRuVHH/BnapWTo89CkijOGy4fRMjYm4Z8cc+IXUmU= X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA1PR10MB6877 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-23_03,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-2601230154 X-Authority-Analysis: v=2.4 cv=PqqergM3 c=1 sm=1 tr=0 ts=6973d62c 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=ZcgAvwBTlqKtWV1XiNIA:9 cc=ntf awl=host:12103 X-Proofpoint-ORIG-GUID: Yz6Ne3jnDp1akr6cqYXEYgP4yBjRcYfo X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMTIzMDE1NSBTYWx0ZWRfXytIFOWyPdvRb FY1kGZSI9YtvDLSFdzAEJ3CiseRsnNdQW9WfoxU9mbvUCJyD8BPs5OAeK64wJWFe9vbMdLIhz27 s52wdYn9M7Z5zpsKYbURLqnfB4U60ICHypAnIc4yux39EgDRmjtryseiUiZhh01zZ00klR0Zw3X +Z/phOmqRR6SAhtsTd6YquZLx5OnlSxhWuf2M4wNUgEi//sILNRkuAVsNMU0shENjCu5ZfP5U3L MxqWf7mWJRMBTD5YkveloQFtPgffjiXgbzEqjB9kDqqWUgBVxBpvzjHx8rK5N4nina8EmuG5MJ7 2aMCN3yTWOYSnHB4/Wv0dQZZs7OcufR/seAuLOCnBofSn2ZBY3Dx/1vpnvoTNAFBP+e4X0N+B24 LMMSN+WHvWgcrpOgjZwpP1mqlT26uh4xBXohmNHTRHJ/HqYDvzSXwHIheteQfHwSMBHVJr2bru9 q6hxz/OYf1ybMNT9EFnUBkQuCRMq+Y4mQ7P7RvoU= X-Proofpoint-GUID: Yz6Ne3jnDp1akr6cqYXEYgP4yBjRcYfo 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 Reviewed-by: Liam R. Howlett Reviewed-by: Suren Baghdasaryan Reviewed-by: Vlastimil Babka --- include/linux/mm_types.h | 42 +++++++++++++++++++++++++++++++++++++-- include/linux/mmap_lock.h | 7 +++++++ mm/mmap_lock.c | 6 ++++++ 3 files changed, 53 insertions(+), 2 deletions(-) diff --git a/include/linux/mm_types.h b/include/linux/mm_types.h index bdbf17c4f26b..12281a1128c9 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,44 @@ 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 firstly, whether the VMA is attached, secondly, + * if attached, how many read locks are taken, and thirdly, if the + * VM_REFCNT_EXCLUDE_READERS_FLAG is set, whether any read locks held + * are currently in the process of being excluded. + * + * This value can be equal to: + * + * 0 - Detached. IMPORTANT: when the refcnt is zero, readers cannot + * increment it. + * + * 1 - Attached and either unlocked or write-locked. Write locks are + * identified via __is_vma_write_locked() which checks for equality of + * vma->vm_lock_seq and mm->mm_lock_seq. + * + * >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 - A thread is either write-locking + * an attached VMA and has yet to invoke __vma_exit_locked(), OR a + * thread is detaching a VMA and is waiting on a single spurious reader + * in order to decrement the reference count. IMPORTANT - as above, no + * further readers can increment the reference count. + * + * > VM_REFCNT_EXCLUDE_READERS_FLAG + 1 - A thread is either + * write-locking or detaching a VMA is waiting on readers to + * exit. 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; =20 + /* + * 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. */ --=20 2.52.0 From nobody Sat Feb 7 09:58:57 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 8EFD92D77FA for ; Fri, 23 Jan 2026 20:12:59 +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=1769199181; cv=fail; b=QSZuqByr8WDV6NeF5X/ZcqLuko2ucWbvoxgjl3j6PE8R4ARKyUinvN1vP/3raPdYtlIyUnpt+V1HcDeks7mQE/Estau67M8HqN/dwFsdJxjhvamBdPd+hpemnyHa+B4pkUk31NqYnGDGTd6t/kK/E/CMs0twu6ClS0iyt148CLU= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769199181; c=relaxed/simple; bh=QJbrHCQTpZaiquv85fXqJpuvznMwjtwuPMIEGBgAakg=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=i9tgeOZDPoq6URO31R755YRfxojFLK6XWJzEoLdkNzK0dzIX8EIVUStk5yIFyZZfS133FCSyeLF2122TNzW0q7vtrjPeOklGAT38KTwnW2V8+1Cm2jhN7/bt2+KhbTXIdVkbUNGTGfOZaSobMe/AFTZK1UirxFQSNBnJ7OZ/Jj8= 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=sPJIiEbs; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=MCwHBHBF; 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="sPJIiEbs"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="MCwHBHBF" 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 60NDuYi71631761; Fri, 23 Jan 2026 20:12:32 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=k1qZEj4V0j8DrZtu9wEf52/caol/HgW66KdTGjKsKHc=; b= sPJIiEbsBsGJx6OtjrSYFiw4fO127nhDlrbFWC3ZZ8S1bmBNTJLzNdDl5w+8n8DL iEB4Hjtowo3JKSTyTPo2DXjvdc3NyW/G5GiuRSMCU/HqtqLw3FA49gISdvS+yMB/ gcID6wAfRT49M0mFqI++O8YAW8OelZtHb17G7FsHY2NPvZRRTqUN3pSCZJbr9Ayy uLznSLm0yPaATvyPmZuWOfw6HQbIwbHHXJCMBfAz1IAbXz4UaoJRoO2uVp2Dey2E /bjUkr1/7IBjk8nUANR9seyhZ6M7RkNj1j6Ak2noY9LTbYgCjh0KsuWjqSwugm+2 yvRJcFuhnB3m58v6me30vw== Received: from phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta03.appoci.oracle.com [138.1.37.129]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 4br2yq2ysh-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 23 Jan 2026 20:12:31 +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 60NIYFT3015062; Fri, 23 Jan 2026 20:12:31 GMT Received: from bn1pr04cu002.outbound.protection.outlook.com (mail-eastus2azon11010053.outbound.protection.outlook.com [52.101.56.53]) by phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 4butv0w84j-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 23 Jan 2026 20:12:31 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=R1dwrKZAQUUN3mCRp5syf1Xjt+zOXxeCKN2FVLmMwuDLqprCSsSEUtoBJoS5hCSDZPbY2HX4kIECmQaCcbbW/olEZTUZmppihdFQdIseEmse0RuJFIvUVTZrR2+gWqDQIXLhb2HsCcnAQ+DwfZT48H1S769qJlWAHUYhPJ/kMyawKG7HtExl1nvLSexmiKnTK9O49lqMihlyFTcn7ZGCfKkM910zUbvT51fM89d8YldBL0cfgTW11AdXbIyA1ZujPgN1v7r1IYXPz/mSqszaL7G7p0xk5xN6RuES36Cz2M4vpeiQokYY05LR8S52/0H06liGiuj4Nmjf3ZcxJiowiQ== 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=k1qZEj4V0j8DrZtu9wEf52/caol/HgW66KdTGjKsKHc=; b=KMd+G/K03SrhsadMBRjUtvDCmz9AHyLjsOovzFCQzaokQ8xxXYE30ek1qTdhFCVlzLwKoMTbsyP9mgLXRCyR4w9NxRB+2gOayUL+9h9h2/C4XNIsPkJSzj5qW/JutN4HNXZ3O5s6HT4JrJVJ8yPDRaCkX7uop54xB7JG5eTYXGCgsPke8AbhoFH1KmeLMcWMhbTwlEykqDmXjnJXY2hrXjeCoVIjoz9wJWcKeh0HKqLNTMfOG826oathpQuj+ydaYrNGAd9bu/zK70YqTgcyD44/PROgHVXquF8DSjR7C2OWC5yORvI34vF65p04iDmmj+YnEP5DLzk5VxYSEYdnVw== 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=k1qZEj4V0j8DrZtu9wEf52/caol/HgW66KdTGjKsKHc=; b=MCwHBHBFYscnDvUbwo/2j2cbnPYvyNZtcQ0vHOY9cFOm2Fg6+PQ/ogqxfsv2MppiFWAYDBGkh5Q1xTY7X7tDRdtAPE8CQh3/G6ofrcz7E9x2ndiSCBZEwaflQaoS8tIkiryaZlFShRQeJQwLUK+imVehkPp31fX/k6n28t9zxiM= Received: from BL4PR10MB8229.namprd10.prod.outlook.com (2603:10b6:208:4e6::14) by IA1PR10MB6877.namprd10.prod.outlook.com (2603:10b6:208:423::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9542.11; Fri, 23 Jan 2026 20:12:26 +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; Fri, 23 Jan 2026 20:12:26 +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 v4 03/10] mm/vma: rename is_vma_write_only(), separate out shared refcount put Date: Fri, 23 Jan 2026 20:12:13 +0000 Message-ID: <32053580bff460eb1092ef780b526cefeb748bad.1769198904.git.lorenzo.stoakes@oracle.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: LO4P123CA0501.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:1ab::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_|IA1PR10MB6877:EE_ X-MS-Office365-Filtering-Correlation-Id: 12518456-3b19-4416-1ec1-08de5abbba7b X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|7416014|376014|1800799024|366016; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?ciZ8mbbummgiKv2BDXxMc3K2EBmctSbWH+wvn9co5jHnK9Ye5jh+DtesLWSt?= =?us-ascii?Q?lg6l2iZNPNq4O8s54LCoD4DBTn+LkoGGDXrhyEFaYFsLDWEGiR0wJS7Ou3f7?= =?us-ascii?Q?3cDtPCX9dCBEG3k5c6KZhx4VXlAKmtCeOFQmcvY/+bX9ZsPnD3y3SSBKelbx?= =?us-ascii?Q?N7DbGZ1assu6nOO+IaeAlgvRnogvWTlYOvdQweFJU4qqGZ2HTE6KesPnYipQ?= =?us-ascii?Q?uLTfZ01k5JaL5gzcn+Sy6ldJh8b3owgkAm9MQ6bj56LwiGnLUSJ91OYsH3u2?= =?us-ascii?Q?UK0t5uUPXJuFIgAS3GEKZNae7451qu3tV6fQlO8eIhyZafTZ2BpRSusMxlm1?= =?us-ascii?Q?YtuB2C2frsCaReqhOTCuFQzK4S2z4n3GIM0PaQ01EcEnDJcEVvIYhDx/3dqT?= =?us-ascii?Q?DU97WoN2b3NfrUr6lF2MwD3f0XjI1FRtzDeiJDXf3my26o3J7kKG2CsDN7KA?= =?us-ascii?Q?SVMglEbW7f/07o0MRuf5Xrj3z34F7pC8UJPusD5sEebxKpaVJaNOpCnHslPn?= =?us-ascii?Q?k4xJcBv+Zff5hF40tjVMv8TGGZdsOj3a4RpKFiv834nm/YqxRctyGe0CEb3N?= =?us-ascii?Q?GnbeIAWhYQh8U/p0pWiCekORho9DjLS7WQaPBWdwKGL97mTX9l8GXoBhlt9Y?= =?us-ascii?Q?V8ekyWSPquiwcg0D8QpJWWdRepsvfTAZfcQS40b46jyJxwCbFZbTwWBiB3iZ?= =?us-ascii?Q?7oUa3IvdgeK3bhodFPJhjR/jj+DYoJGgMg6hXchcOMKKsBuDldK43r1EkDPG?= =?us-ascii?Q?sUaMaLODgXlnXoapdnVFhCzAQPlPk5xDhhGhOf0RvzlHFQtpwhqDc7T1Q3To?= =?us-ascii?Q?eiYZ26J6Srs3WosmvmUMb8AS0p8YLSfOyxqNFkgMgociVlQZgDT9E2U1djH4?= =?us-ascii?Q?Gh7+At0u7D6v17Qr1VbPfThS/qZJlrYUdI+qbhvUeuJK7dAjgadhYMSL8nTh?= =?us-ascii?Q?JlkXnMLox8T1zqfjq27BVh/bwMFVrd/tAUwHIaRNdAB1Gs88lk1loK8Mw3ay?= =?us-ascii?Q?plc/3ZTv7ncRR7lraWhdbJu1xfV4yAuLC/lW2Lf1TRfLe69wvZYHS65xBIGC?= =?us-ascii?Q?dlqUAFWy0hMwTukxKS8smJPKEHvpFkyAO4U90ZRVcENvK6mpJYtcOIceDK0p?= =?us-ascii?Q?/HOlnts3vam12FsfgE/9XcKcKtgVjT8QfVtfgTLVq/Paxv1NXHE8adOaC8vt?= =?us-ascii?Q?k8r934fIks0R8OaW14c++YubaZRttEwXMECDUbMNv1BdciqtnoPr/q1S/Uv3?= =?us-ascii?Q?4zOYwQe9tJYOw0W+t0WngWkfD/36Tsf8ALxpxm/F4wBki4AfgwLWbQGHAIQr?= =?us-ascii?Q?z/hltYaoT46fOXiLbXfZ1+20qCb9zN2xf3N/4CTuf6vQYQHaSkb0KYBze3kb?= =?us-ascii?Q?5nJINw+P8ar/MdaOslgEQ4TccUrfSRh+NbcXwEYDihUC9DJbXBSYMopRGojb?= =?us-ascii?Q?5BZQsHqdBJ7uQlVJOYzUxpkd3yqhUKV776ALYpq/x68tjafj72bokLoyUB+n?= =?us-ascii?Q?L++vJfz0Vfj15u2UhEDqEwySZrquH4gFfUSqtVZ25EFUQ7y6tcEzirJmmDnl?= =?us-ascii?Q?oWGV6hIRsDuKoYwiUwc=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)(7416014)(376014)(1800799024)(366016);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?Ifg4HoSFGsOv5uRPuM2SXkQxC1kSTw+mAPmLIcL0Wshqo53pD1iukgVNgzv5?= =?us-ascii?Q?iEN2xjy9O3QHs9cRNcoUx5kdf1zFsCtSR41Np6woVEzNe5NJg1k8J+PTHHM4?= =?us-ascii?Q?2zkzfS4yD9I+V98g9WbAiq5/y+4lVCXHYP07QfqvoVc84XbhZdodN6lQ/vYw?= =?us-ascii?Q?dCBXIsSvuZ/osTQGQhpU0U+AmLn+4ElwBSx/+xF0yyjoknuTh+IW40pTwbiw?= =?us-ascii?Q?jAjQbpKK/yiyR2xZNhJimol2Z5Mcbs8G5G/P3CPg6FamB7lRiQT5bQ1QGWzX?= =?us-ascii?Q?vzH4vfBOTEvw1UAd/jrjYa+nacbplvkXHIRe1hrWUyl+kkURhbqoKPggR/oh?= =?us-ascii?Q?0QwTKZPpTcI7m491XvsjHmDK2LRdhTYh1Il6QjTKAB89AmUwT7LBevtntbYQ?= =?us-ascii?Q?okfCduhhOauDHroWoyp+Cqph8UGwtrsePLyWTHMH92YywGvyfMoMqjfVFlIR?= =?us-ascii?Q?UhFvtMwAHg6+I+Nzo/JOlwV4Cii06ZFrY1A/188605zEAIhqJV7Eku2djZfc?= =?us-ascii?Q?2CKgyXsFKdSZWD3pxEnOHRGmllhJWFeDU0+WTJZdOEzsq6VZfJVH5Iovh6WF?= =?us-ascii?Q?nX02axih9gO4CmOEU87zB7ZfF3Euf2mlywkgUmV3uynEPjoQNNXiFrCtd+eA?= =?us-ascii?Q?7CZMbptCGsejep3ww1ALTd0Xf39FTHr4SEG0MDZRRAKRU+AcLh4+R9TPJN0s?= =?us-ascii?Q?YY15Zz3K26oAHDfHBC/mTHR3sskHdFNw+kT1RCuHOv2yRxPQ3inBo6OAQXgb?= =?us-ascii?Q?BKzavlg6Rhbu1E+0ov81sOUCvr7U1Du7KC5X8KP537Se4DvXJbPb4WaBrwIY?= =?us-ascii?Q?dFrFSxUYsv2hem/PGY1v/C+z0OmUaNiD3K7bUFr7AMgYvDlJW/EV2JzIfvqA?= =?us-ascii?Q?vRlUqxO847lWge93FtSkloeeTVD3gqnAIIdEAwVhwgk0fici/Bc+o4Zcn2p8?= =?us-ascii?Q?ti3SqATzZx9gJSOgQySiPraa/k48f/P5zjDzsmBY9nPazd3TsqXenGhjx3M1?= =?us-ascii?Q?mp2c59rkfxqLEpMph7ZyIaw5FKh9ebUsg2jDaT5stscS2z7v0Br5aYWsLJUv?= =?us-ascii?Q?RUseZymNfhTsYTxhQMxWQhWE1ej1Heq4auPx7dSJ2cVzF6CNLYskiTZkxKw0?= =?us-ascii?Q?vUjvWCsSUtwXjauzHjxzTSuGjIAr+Qu4jSGnnpIC36zzaM8Ry1dluyS7DIDB?= =?us-ascii?Q?eXyIvX5JPXnsMJ5c5mnHE1DAbU1lG1FltwreQ/Ie0mZYGAgCuz7ujIwH+IJE?= =?us-ascii?Q?C2wHJ7BA4A8mhJCDw3rhZouYEUr8eL+wfDz8nFwxU6vaJ23s4FIgK45pjzq2?= =?us-ascii?Q?LB7jXTV22XOWJs/QmX9jK9uvED7i6lgDLlUbRk/HyeF3KsBdh28+4TEYKwUw?= =?us-ascii?Q?UBHxHVXcM2VaM0f042F2ipZgmRyID/kU8YX6D31T8m85+Dp7J6EEl7SAWAM/?= =?us-ascii?Q?m0bZ3uS5Fx22Ix5MfeN9icF+rczdskSDhosPR8Fsy5xOMUO9+6UC7DI3rOyv?= =?us-ascii?Q?m3pHByaG8YLBlnv/+sRQfqZVmqokvwYQ6IrCxffG1rSCH4ht1owsUNebaUKv?= =?us-ascii?Q?95vI/kaVm3oGCJmxGMYkmmfCf2KvAU4UFwHxuB2K/v/kHLhVRHoN5qxEACGM?= =?us-ascii?Q?N8z8qfeqqBXuT5bamSJCXWvvlApgUuMGxn0YUVqBqKZtABVg9x+/lU3xvGuv?= =?us-ascii?Q?KvSj81PWX6vkyimNuiUDjARTRlObaqyjG7gyvbaS8RqNIn9YDWR1JDEtQcw6?= =?us-ascii?Q?lKXu1zrtSqXdfYVvkt49vyMggPh0hA4=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: yRSXcY0M/WDzG7IyzDMDRMSJIa4Hjxl+XkNTB4UJZ4kZjG9H/wctNb9cygaPfNwogt6FY1T8lgVpyydE5vgOC5QgDCjf+AXgmZnK5TigE9AuttU3MaOdQw/axmDMcxw34sSDH0MdQYy77oFEUTv+QnT2WVrbDTW5N6CRW93EmWUHS/zgPW+K8K4Z1vBXuxTs1FR/2fcQG+79rdXlUSz0bTQOFXIxEX+aVCrXeego7M3hcyyjpl/VXy8E6N69LZKt5yonIK95QwSSmjtb2HcX0VIISu4zHyirZ4LYRFeFnJxxEmpWjv5jul542ZYs1FjpSP9s/gHuGXx0MA/NWssGX/v27u8lLsledntjLKAci6yKSo81PR/RWdIfyimcJiWZjqyLc7dP/g6+I+7tev6QsjH9GtGt54YcZ7NdvBrT5pu7Ldv6/5zA3xHAW5CyuKtEdfOFsIWgw8CyCCPlqWzosdI9NFn2qOoxjGRK4tLKiT13PB1cg+4MS85XDhjZQxd3FHkwXmOD/TYMxuHzGtoPAzkBsg3LxTf7R9RId5oPMuHzez3KMTzmaMwRrOU30l0dsPb0VpsRgOlm3mWIjGzzvv7X80TOf5v8kCBaJzf0GKk= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 12518456-3b19-4416-1ec1-08de5abbba7b X-MS-Exchange-CrossTenant-AuthSource: BL4PR10MB8229.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Jan 2026 20:12:26.8108 (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: ExKohtzYJj0d6HAYB6Nyvhqqjx4v6DlxgF1YYEKBU+dGyx5NZNVrtuIRcwUpmhflLw0s1SMCYvCMcF8jZxuM+bBMhR0xQamx+rA3eABZVG8= X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA1PR10MB6877 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-23_03,2026-01-22_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 spamscore=0 malwarescore=0 suspectscore=0 mlxlogscore=999 adultscore=0 phishscore=0 bulkscore=0 mlxscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2601150000 definitions=main-2601230154 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMTIzMDE1NSBTYWx0ZWRfX2dzTThTH7BPa 2ccOBxgjJIiu55vO1wnZ7pImevsXm8oZ/Jhh8NrYClzOHoQDWZYDViXmf14jfdTHmhpObSyXLiv +JNuQL077zKYuXeVK+fF2GhpAnIO7seOlyno1XvwS1TzEoJbJyvab2KT8pBtAXTa1v7et/j1nZh 0T261B4KHCbeCN85gb0LHYhssdhIpQ2E2DUs3kzvuwWg9iHez/tG6jYosWGAy3w/O2D+NsWpx6h WlcqQLbJdfRl2D9lKTuPm/fprzql2TYcB8kpwVHo1/nFsgBsHmw8JI+IBVjXaFEVhqNBndHZYxX kLUPJ2nLS8NR507CMFYH2RpMAb+FkxBFDAMnQzKn2VPp1wqqzEXw6oVVH466oR1JJr3iedYmhtb hctbVUgegdaGZmq+UGAp6X6wpBgpfQwRkvtOS3AJJU1MiC+PIJ/TGhv6bgPVBRnqShDFBDVa0AO w8vwqxnLepj83JS94ig== X-Authority-Analysis: v=2.4 cv=de6NHHXe c=1 sm=1 tr=0 ts=6973d630 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=CKvSG63ff_v9dp8pWWQA:9 X-Proofpoint-ORIG-GUID: dalFBzzzyKY7jdGfSaQfRHyyJ6BdWHH5 X-Proofpoint-GUID: dalFBzzzyKY7jdGfSaQfRHyyJ6BdWHH5 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 __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_return() function, which we can then utilise in vma_mark_detached() and thus keep the refcount primitive usage abstracted. This function, as the name implies, returns the value after the reference count has been updated. This reduces duplication in the two invocations of this function. Also adjust comments, removing duplicative comments covered elsewhere and adding more to aid understanding. No functional change intended. Signed-off-by: Lorenzo Stoakes Reviewed-by: Suren Baghdasaryan Reviewed-by: Vlastimil Babka --- include/linux/mmap_lock.h | 66 +++++++++++++++++++++++++++++++-------- mm/mmap_lock.c | 17 +++++----- 2 files changed, 63 insertions(+), 20 deletions(-) diff --git a/include/linux/mmap_lock.h b/include/linux/mmap_lock.h index a764439d0276..294fb282052d 100644 --- a/include/linux/mmap_lock.h +++ b/include/linux/mmap_lock.h @@ -122,15 +122,22 @@ static inline void vma_lock_init(struct vm_area_struc= t *vma, bool reset_refcnt) vma->vm_lock_seq =3D UINT_MAX; } =20 -static inline bool is_vma_writer_only(int refcnt) +/* + * This function determines whether the input VMA reference count describe= s a + * VMA which has excluded all VMA read locks. + * + * 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 __vma_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 +145,51 @@ static inline bool is_vma_writer_only(int refcnt) refcnt <=3D VM_REFCNT_EXCLUDE_READERS_FLAG + 1; } =20 +/* + * Actually decrement the VMA reference count. + * + * The function returns the reference count as it was immediately after the + * decrement took place. If it returns zero, the VMA is now detached. + */ +static inline __must_check unsigned int +__vma_refcount_put_return(struct vm_area_struct *vma) +{ + int oldcnt; + + if (__refcount_dec_and_test(&vma->vm_refcnt, &oldcnt)) + return 0; + + return oldcnt - 1; +} + +/** + * 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 newcnt; =20 rwsem_release(&vma->vmlock_dep_map, _RET_IP_); - if (!__refcount_dec_and_test(&vma->vm_refcnt, &oldcnt)) { =20 - if (is_vma_writer_only(oldcnt - 1)) - rcuwait_wake_up(&mm->vma_writer_wait); - } + newcnt =3D __vma_refcount_put_return(vma); + /* + * __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. + * + * We may be raced by other readers temporarily incrementing the + * reference count, though the race window is very small, this might + * cause spurious wakeups. + */ + if (newcnt && __vma_are_readers_excluded(newcnt)) + rcuwait_wake_up(&mm->vma_writer_wait); } =20 /* diff --git a/mm/mmap_lock.c b/mm/mmap_lock.c index 75dc098aea14..6be1bbcde09e 100644 --- a/mm/mmap_lock.c +++ b/mm/mmap_lock.c @@ -134,21 +134,24 @@ void vma_mark_detached(struct vm_area_struct *vma) vma_assert_attached(vma); =20 /* - * 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. + * This condition - that the VMA is still attached (refcnt > 0) - 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))) { + if (unlikely(__vma_refcount_put_return(vma))) { /* Wait until vma is detached with no readers. */ if (__vma_enter_locked(vma, true, TASK_UNINTERRUPTIBLE)) { bool detached; =20 + /* + * 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); } --=20 2.52.0 From nobody Sat Feb 7 09:58:57 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 A8C4C2110E for ; Fri, 23 Jan 2026 20:13:07 +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=1769199189; cv=fail; b=N+7r7shzybofG/pUSVZ4SJ+uNnUgHj3fkY+4ijPMqaeFbnOjhofxSCqIY2QUpYDRLfG6LUHvnVoozoCQgSxhmeyDng/2qAz7uR2C5ZpFt4C7ajAmrQC9VtEfHG1SF5KG2u+KW/I82UpgXxfxLRohNBPonrSkZ/e5aDo7vVUtBGs= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769199189; c=relaxed/simple; bh=mN6ZAojSsd64UXWuffEhBPVIpFynHpvvapNl++GhN/4=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=OpsSaMdLz3w1waryxk/hKP7YlVBTohcL3uE18cm4QJ9RjY1S0nqRyEFT1+xBImKn7KTX4Dy985ozmnqCaMLjSARoNSwABMTUqkmg9DVYl07x4w7ID707fVw0ZW08UN/trJ3FVsW+R1pJiP1S+HM/rQXCrOqZ/zwvtdncZ6m/NDw= 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=GFxCf+Md; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=jX5iDp+P; 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="GFxCf+Md"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="jX5iDp+P" 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 60NFT8x51884670; Fri, 23 Jan 2026 20:12:33 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=rG+DIQniu2FnWmI0R8wJeWVi1ymZ9Xl95eZnftbxvCU=; b= GFxCf+MdFOfgxHScMIVoDOVxmsWOFK2rCa7GJFcJwBSeRxIhRBaQiXWobGLBMn1E fLU2oY8jx0zLUEGdKG6NFFbWrrNtXg5vIRtB4/rO40RbiAwR1LDoXzURZUYwtH/F UwUZpl0NCzjEfzn5S1TxWj1UUPMS99vLNfEy9bC/mhoFiuKcEwtpZTI3XUi5j1ny eX1Eg6XE80cESyt6gMv21IdaPGKkzBRiqlqeq4fxQ1EDLhMf3xtKmP2r3jIvSj3x kZIJCBVLv0tFREnGR4vidOk0qyTUMtXESGhYv6k6QElyXre9ZCGOnlfKl/d82qJZ HJeoE0gJZF/nlYLw5Kn7fA== Received: from phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta03.appoci.oracle.com [138.1.37.129]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 4br1b8k2sw-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 23 Jan 2026 20:12:32 +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 60NIYFT4015062; Fri, 23 Jan 2026 20:12:32 GMT Received: from bn1pr04cu002.outbound.protection.outlook.com (mail-eastus2azon11010053.outbound.protection.outlook.com [52.101.56.53]) by phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 4butv0w84j-2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 23 Jan 2026 20:12:31 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=E04DkL+8ANuGJasipHd+77OuecOqAbYzERnDbhTv2xxvCNrgNDFJGQa3nWadR8rLce/UnDxynBevgeMYf2Zor4v/bYkS1KK+uAp6c2k5N0lI8UU+bKyuYrURAa/tDRTQM1E5vqypmPIQvkr74AL2P7gkEFW03cxOJPFfE/e7ISXb/QH8SskjZH89EVakVektSYipO2DoNMk2Zixqul+JwsykuLP/ejwZYqHjOavznPbFrFgDqEv4vfBTPCzIkCu1XpxeI3b1A5eggbVUuKu9ALSjeQQvhgggFVIo0Tr/g6o5/t9vymywkmErtS8RufF1GMopJIhgjiqtd7ylFr+IHw== 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=rG+DIQniu2FnWmI0R8wJeWVi1ymZ9Xl95eZnftbxvCU=; b=TNctrIpRR4buq5hPe0ScrxaJwQpxhGRvH5tzcz2pGu0fjkZ9Eevlq6+x/dUeLaPMt9PnzdPttLnHzeG1PAqh5lFbl/OVha/1EhtnM8HHCHsON01Ne5RhLFBQyZsUjlj1N05ibi4yfjv2RRu9ufanvEizEwNncXZMdtW3IvbPqB9IeUBvJaqAnMHz20tWnPAp41Wkz0QhBbKhni8OotF+sh6CwE+UwqJyk14W8XDi08LqfvnSbR4rdaubnFxb2n9vofRr6nbL8x8bwxtOL2R0LtGRFUHV9xJKwLSSm5G/qIo+yv5SxC1TIIew4EazEkQmxu92cOt2Rtky4jZXt4skiA== 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=rG+DIQniu2FnWmI0R8wJeWVi1ymZ9Xl95eZnftbxvCU=; b=jX5iDp+PcsHRjc+k0Y6P7/QAwEeaGF9I+UZpNWggOy0ZmtZCW+AyUC7R+HgbtWHCSAthxLBHFsWHwBbjAzG4vDLATtK0xvj0qGJU+lrvllNmUpMNrsdoZTcPoW4Wbbwu28zuo6JQXaihfGABM+Hm/nnhsqncYbAkKA+iMHF0fJc= Received: from BL4PR10MB8229.namprd10.prod.outlook.com (2603:10b6:208:4e6::14) by IA1PR10MB6877.namprd10.prod.outlook.com (2603:10b6:208:423::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9542.11; Fri, 23 Jan 2026 20:12:28 +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; Fri, 23 Jan 2026 20:12:28 +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 v4 04/10] mm/vma: add+use vma lockdep acquire/release defines Date: Fri, 23 Jan 2026 20:12:14 +0000 Message-ID: X-Mailer: git-send-email 2.52.0 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: LO2P265CA0193.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:9e::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_|IA1PR10MB6877:EE_ X-MS-Office365-Filtering-Correlation-Id: 02993707-a3e2-463a-1816-08de5abbbb9f X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|7416014|376014|1800799024|366016; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?HNH9e8qhLCxZGDYF6F2uQYZ2LqXxjhWtVY4jMO+yJ+qONwG4/sUkEwVXQWL9?= =?us-ascii?Q?pCc1TYVQ3w/TQMA1sQ8+ZA0cXFf7JqAYu2kY7CViNC7+yCV3pzx3mUsGs/y5?= =?us-ascii?Q?U/Y6vgXrtEKRnoNYqvL3NNFKj+5YxtIWQloNZtWlt53u0zKAHpE9Sh6ivnNB?= =?us-ascii?Q?BjAHn6aRolASakaXp+xAj7h5GGooCwpMi/wdvTK3QQUTbU2Loqy481G1JGhn?= =?us-ascii?Q?DIdjELbKi5CUnFBjHVRfA0+DpxGOU25/xtusO7ZusyM1CX9pCxCOzzQQJpx0?= =?us-ascii?Q?1A8o+UQPGoAlWQSxQShyLgybu2paGZXFil3U0sATrt1YI8Qh0gguA4BdMkv4?= =?us-ascii?Q?YNE5PE21qxAqbAmm06hDM0U9nAnrNqd3Ex0/4QwiScqtLgPgcYO9f7opRw1J?= =?us-ascii?Q?+Bw5lC30QzmU1eHu3/ZcwQOb1DIbCz0H6yX7IfGM8P4LKSRk/Ct9ZGwX2o5O?= =?us-ascii?Q?f7HAkeegpesAihMYE52T3mK/+8L6RqFrLTaHcbu6OwRVJbNBqbj94QMqVsyM?= =?us-ascii?Q?CAdZajerpj3rwjDTPGPPu7DcLia/9K494ccOcrWSeAgyDRI79xGNPc44VfMR?= =?us-ascii?Q?FsKOHaw9eHOE8fLtjYfk3x6O1M4VkB0OgzcolC4TdheRaPb+btvHny4o6v/3?= =?us-ascii?Q?Vgbw92K7rVaCkeoWxVEjC5jg5VkzT5geKpeBrDEybCTguzWDr6GoEwALHetQ?= =?us-ascii?Q?+I9tVZ4HjQ0S2ABzvdkE2wEbM4cx2roZnvAGk3eZ2hGTY4NSgn1jacgNOISx?= =?us-ascii?Q?7uHdP3bLmzHjidvOR4YEI5YZpwhZH1cD7WB6C4o6clsg5vM0xXqYsWNju5CK?= =?us-ascii?Q?QKmhR6GqQUx9vsqrVe3M7yQHYAxaiciyj4B1kgyiwIkSMttCSG/yUS6MliV+?= =?us-ascii?Q?xp6fEZ6YSmmwW8Bum2g7/xffsuOuKgxaqSZqwTuvhBegFjNgTuesZc7LbMS6?= =?us-ascii?Q?pPZrX9+6p6rYLEx1uUKqQbH4clxkdUygg3EFFk+MkQ/HvN0GlB5StcQMkHUx?= =?us-ascii?Q?FnoYNRLJ1Lw3RcgaQXremDqQbh4wiWZMq7vcaqY11c4yWzGC9/7lsSbdAIqP?= =?us-ascii?Q?PKcuXXRUaBlkglHq1/xyso6KOKJQ6906ZGDsFAoIx0J68fsGu4lp7KI6t3PW?= =?us-ascii?Q?w5oxeu01ePxZggGT60GLoJyYenWrIfDkx4XOj74WVqGQ+p9iASzJe9yv0wCs?= =?us-ascii?Q?j3UGE3oZOk1avuJxUhnnpv5zg7GNB8iZOR6Zx5Ed5bWGB5SKCCpVTnQMxtRM?= =?us-ascii?Q?mM6k6ibhyPpH7g/IWi/yB/ryf2cVd/9CT/MiC3rAf1V5NKka/aN1zPIbN3iL?= =?us-ascii?Q?xlj3lz8Xc0Fw9u+RJYzaSnW+i9JTu98DpgZeuJFpJld/7Ho82hDE/2m7jL3d?= =?us-ascii?Q?dFmVMbjVM67VEn9tHQPH2w3Pjy3YCgB9EO3CTnryQ00o2w5JCtkpPQygMuRb?= =?us-ascii?Q?64MfnbO2i3P4bQUxyPzd1kDR9AdVtk99POMBV4vCcKcQ8xmd0R0Zh6gF/+Df?= =?us-ascii?Q?iMZa0ncfqP4ZZS3GGfH6bp24m1Xf+47lAShtIirjnW+0VrC9lQhDsXf/bw86?= =?us-ascii?Q?8diT8OfcX3fmA4LykxE=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)(7416014)(376014)(1800799024)(366016);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?7+5KyMyJ+YPUrLlYsh8ZPoss4mc8tBzUBKAjk2f12+0HBliCiAa8vbxijVid?= =?us-ascii?Q?bEkWy9uAIwGR8fscjNHA+QJuT9ijV4VPlylQWNeMqVMm0w73PQColO09d4Oz?= =?us-ascii?Q?YdOcvPpS+pmab2AIrbwecL+lzsAorhT0bIkH6l8ccMWkLiybdBPyT1lY0exo?= =?us-ascii?Q?00Dd2ChH0ygQ8LR1kCjFwJYf7YOYjtX9mtpNhQl+10LvgPJqmqyH2wYXLFFU?= =?us-ascii?Q?65sbnQBEZSmJIqjJHQ8z9o6mwKs3q29dF+KrfNNyrPq371cDAJu3OUlhFLV3?= =?us-ascii?Q?0uL6Q+Zu7+ttfv/QK6PuSHszEeujWjOcrd+3GEulmpdVN5+Ng5cRMJKEjKO9?= =?us-ascii?Q?oBeQFD6/zMsODelmXVgVQAJEsptuisBiknFxQHLh4nzLFT+T5sJd3hCOMKfl?= =?us-ascii?Q?hiDn7lRnwon9JiF0Up+NjNEwEfdCrtv7/uYly8jVwrQ9dP5VHEnXwuMVw6wh?= =?us-ascii?Q?pvVvQrke12WkqMk+cqyUafM94Mu1P+GsQkCyOdb/X8ZFMhjX+vQ1Gbt1qWt7?= =?us-ascii?Q?//vkYf4SxG6RgC2lx6gaOMKJPhKAuaGmtvl90LGRZ213aQRVOg+mtMM3AGEd?= =?us-ascii?Q?npErRRaIqktTNxSqf9aMH+xYoE0iwGwZdc4hg6MbEWuHZkgTYf0KB8Rp6708?= =?us-ascii?Q?Buz5wfBjt1ZYaI5IzSFdHXJB7ESILtnXLcenoVy3PjxtVH6rWMaYcrInA8ou?= =?us-ascii?Q?OH9UbbAbxM95z4m6Ql4IoHJsBIeCY1rTeEW84IBjz3WLbbsuQRvMF++e8v8a?= =?us-ascii?Q?eg1HFhE/LudJL7QU3fGrSnFLSDpdVA9hqgjVflEZEdxja3kJDl7hmXpURiGV?= =?us-ascii?Q?ADiVavHNvPrOmUYBLP/YwQa7KdnK5+38m/hJoFk0tau4Ec+3Qd2AwzZszBwQ?= =?us-ascii?Q?3iYHA1ccbD12aRL1E3y9xGzMYlnZltMwiCVjo8yiagsM3mdZx0/Wz9cuhasq?= =?us-ascii?Q?9knMfNUHrLr5vzhGiwkfazTDuLEQyLkAEBiArPIb+vrrzOA5OWCe9jYKtplL?= =?us-ascii?Q?XW85Q108hlEpEjPPJ9tMDG86rbTCmHzm4LI408iy7Jv/3SQQ1uzw5W/wY+R9?= =?us-ascii?Q?7Ui612hJ9+Gb3eWh5LMXXwrhYfU8lyF8UCmYlRH6kutuwvz0O0mvnClRGlLc?= =?us-ascii?Q?7wtk+VD2WnT2SfK45QlGp2Io2qwO3WQtNGFF7sy5C7i7P1NCoXUV2bkU0hTu?= =?us-ascii?Q?7WetpT0s3sflFdn3NuN4E4RWLY18OZW7hCZfDi7Zr7iVTdadd1B3WgPFDUN2?= =?us-ascii?Q?kOn/gm9q4jYywXxOUpz8+UYH3glXlF0mkR+0TsZ/A1P0x9hLxfL91ZQqWG4P?= =?us-ascii?Q?s27FjrAPeDPq+Iv1qHe9a3HA3yaYnGm9FLnoRp53cbPRjSXbLjaoPfJVuA02?= =?us-ascii?Q?zA4G8l1gWqXRja7lLUscgzL8rQMiO2hZbAETaGBvOGQhrzAj7qt7Q2TzQoHk?= =?us-ascii?Q?q1Wytex501H8oF57h2gbUG3BTjqQvtM9PEYOtyWrHJzT5m3RYQa4Tpfy/kU4?= =?us-ascii?Q?eAu3tjAlFquSp7MfnfC68QkLjVgvzlFC7ewlH7sIdnxaqDjmbtez+lMfkXOV?= =?us-ascii?Q?mGeK4JT+wYu9wruFsHialDOSfCBAr1wmjW6naP0ILi604k7Kg2esPa37uG73?= =?us-ascii?Q?n/PhOtTWRy7tevoMh7e24NL50hLJCW4BNQUvlflZNsP3qjcDEQVu7uvDeluZ?= =?us-ascii?Q?ZYICqjoDLUSu41e9AFqZqaRKAQU9tNd/TB1esBTOqEU8x5LBlqFu/0uZbrD8?= =?us-ascii?Q?UYLrD2aGVwPNBcz+AXpb7OtRSvdRoY8=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: F5n6Q7YG7YxKGexVfUvsXhDPYVRsCI3OUyjMo2G6U0a3AbJIPbB1iXyPY84Wc3yQUlmNYLE2Bc8OSOq8c6B9cAwDYgZdXCpN+eY9Boi06vUN1GjevhL4uxAtT+zMyxvF9348i3RxrDFn9bRzB92on/x51M2cdBLZ5GRci3FNnTNtZleqfldVPEhOULwY6ZDumUSdDXXWwU5hyeqAco/kZPM8Bb5vBzutPWEBShFo9tt6dWxL3odM26QdE7ZqyoMrpaEt8QenMMLj9x987ECgunUm+EPGqQ5hfp8HXs5f2HxO0zda0v0zmv6AvPEgPShsmKPEQrcUxnB0uGydpZl/htP6qDqyoDQfl7WvUkTu2L/BFynan/JbvFl9rxBA8EtHWrglz2qj9Ktlz8ps13qIywadb8UlEfkb5yPtfU0p/bs8EtRYW5YrwSmJ9gH4b8aMfzWptgUFvdAJWVB7QTMEpZ3b9KzzaVesiNRC3PTrXwhGwk87yWikLfwdroTA4b7aaVcTKlvxGSy18wrWDaxDg2YIP8DnWToAqRCPNUBI2f1DcqExWFmgfjsLAJbQaITER0BU7Mzz/qJ5iMu1ZBEhGtwvUnBbJ+byEISC1URFKAU= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 02993707-a3e2-463a-1816-08de5abbbb9f X-MS-Exchange-CrossTenant-AuthSource: BL4PR10MB8229.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Jan 2026 20:12:28.7321 (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: WmrAzeD1KnihslZWro2BrVW8hGKk339dDP2tducYduARb6Qvr274W+dUpwYoBrCspXKihGphe7DLH8o/XfB79tbtqLfmlNuJ0+xmbEMDsvg= X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA1PR10MB6877 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-23_03,2026-01-22_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 spamscore=0 malwarescore=0 suspectscore=0 mlxlogscore=999 adultscore=0 phishscore=0 bulkscore=0 mlxscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2601150000 definitions=main-2601230154 X-Authority-Analysis: v=2.4 cv=WbcBqkhX c=1 sm=1 tr=0 ts=6973d630 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=1XWaLZrsAAAA:8 a=yPCof4ZbAAAA:8 a=CG25fWBXb81_lYSilX4A:9 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMTIzMDE1NSBTYWx0ZWRfX4LPJ5PANDEi8 H/C/JA4B0UzrfXO/7AW+m24yRtqfKDnj0davuUp/9JUNdphtOlBWHA8ZM5WThtOfKdZ2E9r7OSQ idOIhDfq5Cuvb1dhhF5Obs7/n6mkzE75x4tnc50YMp4JBIURhJJd/FBNXbr4muU9D+QkHDzkQ3Q wt6Sm0gGedL0nWgD0NMu5BaH6hyvkblodupVsC6IrbX2cF/RDjYwLFFQ2pscMc+d/AbPyx4qpuQ QQCV0XJDdE998YcdOlxKUUBfMLz6kYDMN8gg8j8yaxoAzX8VZ1kbR8EFO9cu9/AABJvrA/NGzdz nQVoIbRYLkK6ccxj2mvRSIdupwN8iiyfhEQw/1Gqde/NlOm7izH3jBNkl8NKJEgiTgeWhTqgN3S x/tPQrxyGmYAiczt5jTKpi1eBZ9d1sv9inZkBMXsBGJT9rfp6T+NiW+Zh7lkh/R20NnEVRm4VLy QivWHE9p6sjOUhq2ujQ== X-Proofpoint-ORIG-GUID: OS2PSasxI05vaL43tgTBZLvkkQ3XOSFu X-Proofpoint-GUID: OS2PSasxI05vaL43tgTBZLvkkQ3XOSFu 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. Reviewed-by: Suren Baghdasaryan Reviewed-by: Vlastimil Babka Signed-off-by: Lorenzo Stoakes Reviewed-by: Sebastian Andrzej Siewior --- include/linux/mmap_lock.h | 37 ++++++++++++++++++++++++++++++++++--- mm/mmap_lock.c | 10 +++++----- 2 files changed, 39 insertions(+), 8 deletions(-) diff --git a/include/linux/mmap_lock.h b/include/linux/mmap_lock.h index 294fb282052d..1887ca55ead7 100644 --- a/include/linux/mmap_lock.h +++ b/include/linux/mmap_lock.h @@ -78,6 +78,37 @@ static inline void mmap_assert_write_locked(const struct= mm_struct *mm) =20 #ifdef CONFIG_PER_VMA_LOCK =20 +/* + * 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 released. + * + * 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 wh= ich + * must be held when taking a VMA write lock. + * + * 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,9 +207,9 @@ static inline void vma_refcount_put(struct vm_area_stru= ct *vma) struct mm_struct *mm =3D vma->vm_mm; int newcnt; =20 - rwsem_release(&vma->vmlock_dep_map, _RET_IP_); - + __vma_lockdep_release_read(vma); newcnt =3D __vma_refcount_put_return(vma); + /* * __vma_enter_locked() may be sleeping waiting for readers to drop * their reference count, so wake it up if we were the last reader @@ -207,7 +238,7 @@ static inline bool vma_start_read_locked_nested(struct = vm_area_struct *vma, int VM_REFCNT_LIMIT))) return false; =20 - rwsem_acquire_read(&vma->vmlock_dep_map, 0, 1, _RET_IP_); + __vma_lockdep_acquire_read(vma); return true; } =20 diff --git a/mm/mmap_lock.c b/mm/mmap_lock.c index 6be1bbcde09e..85b2ae1d9720 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; =20 - 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); =20 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); } =20 int __vma_start_write(struct vm_area_struct *vma, unsigned int mm_lock_seq, @@ -204,7 +204,7 @@ static inline struct vm_area_struct *vma_start_read(str= uct mm_struct *mm, goto err; } =20 - rwsem_acquire_read(&vma->vmlock_dep_map, 0, 1, _RET_IP_); + __vma_lockdep_acquire_read(vma); =20 if (unlikely(vma->vm_mm !=3D mm)) goto err_unstable; --=20 2.52.0 From nobody Sat Feb 7 09:58:57 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 EC3C32D7D3A for ; Fri, 23 Jan 2026 20:12:58 +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=1769199180; cv=fail; b=G2ECrA9iKQYHdZR6DuJL1QYcVbunxkypm4j+/z5mPaEAhndHdNe/ND0OhNtbjg3dEkxgpeiNmeLRm9Ge/PHjKv9OirunV/rYcELnGIvzpar272TYOx768Ej3VwOW/ZyiZLXopxmZD9osf4LqRXjYOwsbsGnoIVKB5GpRnUC+zqk= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769199180; c=relaxed/simple; bh=lt+vYdA97iyggL6cyWBTOL3iXK+suQ7p/0+56uXrPVc=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=TmJ8yqPBi0Hfnzc80QvoxsD69WBiUodIWzWd6TFKC4jK9DxhRfyVKybSz32RvXBS/BaS5fexCuIAwyymVApuNxqWvLsClexmL9EZg23R7cj1gu7LOuu1ld8ET+ZtHnKJVMYxrGX+BOieeFgRf8a1aDOPbB+/iSiHTL2sWCg11ag= 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=WDJQLxd2; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=VUiCFOky; 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="WDJQLxd2"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="VUiCFOky" Received: from pps.filterd (m0333520.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 60NEeHlC2974134; Fri, 23 Jan 2026 20:12:35 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=kM2lpEQfJIcO/tRo7yAr119RzyDph4SO6OLNh3Kkjzw=; b= WDJQLxd2S/eblogJlZyRzaqrHVpL3U8rVvvRJcu0mXY8E8t8fn6QsuZAQthm9gfP 8Rk6NAmk2/CiZUX+JsDyI5F2VNbTZLXYZt/LaImvk9gb7ih6nlaww8wgyrpVri4t uGzGgDPWVJOuzaSGqI3zkZDbsqU/Yc8dPmb1dSvj8Ja3THc1cuBz3jbNZVbDvtD3 6BEMjc9OCF237gQ4MGjSziHcjk0aB3bbeJYUdE01RKcAwavVqg2GEAgWurHTUSuw XWGn8NgH0DsOLAl6gyNoLsyHwNoCMsIWlg++QbpdR8T5J0IyUX2b35faCrkaAopd 4itmNbj3kltSRFIwkCbBEQ== Received: from phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta03.appoci.oracle.com [138.1.37.129]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 4btagcynpq-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 23 Jan 2026 20:12:35 +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 60NK0RVS013617; Fri, 23 Jan 2026 20:12:34 GMT Received: from bn1pr04cu002.outbound.protection.outlook.com (mail-eastus2azon11010067.outbound.protection.outlook.com [52.101.56.67]) by phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 4butv0w87s-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 23 Jan 2026 20:12:34 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=JYpYXDPvjRSkAYS/C6vDA2AQfAj6dh8CQOB19i3qZy2NvYUFY2ASYl3ql8/nllkzzVQm+HqAmfl3eG+rfLXj+QqID8XxbPNmnp/bv/GuVuv0p484KL9kvtyg6UDmxE3tI4y7idaxpI5lw/pXpURrwQNPmC4rPobz335D6AaaFXRVET9kjMtvv5q9MwvnMZseRkrE0et6V1S68SNQGiTV52Kz5c/4YQdo22Dj80N51N7waoN3LFG0AQCY8UKBvZiAiWMQ0k1yaI3EHFE3XUJLX+njHyp8x97QSTvuTTfVF09HBmrYxRnspC8WEgLM5kKldVg+wzXZbH+9qXvbl6wNdw== 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=kM2lpEQfJIcO/tRo7yAr119RzyDph4SO6OLNh3Kkjzw=; b=Rwo1FjmX0PwFu05S6emkVOaDs4BOOPKJP2GXSBGkcvG2JMfCMPVtmX1kWwkiJ2tfuzE01VEcbNeQuK/dHFXHmsySuTTU9ONP8HwdnFO4blIMYhwqSzu0ZJuLDoxVvtVy1kQzZgazpKlhePdd0M4i9YvHKl5OXwhdplf/sq3mQMlExpfuEJtPXQa9mBlAYqJ1m3juYvt6a8O0Dw1Ucno3Rv1V+p/IKOd2qs07tRrGY1zO10IBNB8O2qH32eN7GHw8xlOuwT2hL4KMcLvxCmCje0wRYqhv0W9csAgpqwaYj8vKufDQ/R56MlgaSrc9wBszL7sC1GL+hA/GhOZ6td76Zg== 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=kM2lpEQfJIcO/tRo7yAr119RzyDph4SO6OLNh3Kkjzw=; b=VUiCFOkyN9IZuH+6HIGFxN6G/eL2P6JcgEun29uBHoALAB+K+/Y6/dy1YyzPMW2D6yz97TUftU0yRvaQbj8uJfZ4cxht++yzSJ8+zOI93AZxR1+STLWfzBLpSCnM3wOvdLNf5rNJtbkA5zZ0p2SMJFJZ9i3ANKlFzfOdmARRPAs= Received: from BL4PR10MB8229.namprd10.prod.outlook.com (2603:10b6:208:4e6::14) by IA1PR10MB6877.namprd10.prod.outlook.com (2603:10b6:208:423::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9542.11; Fri, 23 Jan 2026 20:12:31 +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; Fri, 23 Jan 2026 20:12:31 +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 v4 05/10] mm/vma: de-duplicate __vma_enter_locked() error path Date: Fri, 23 Jan 2026 20:12:15 +0000 Message-ID: X-Mailer: git-send-email 2.52.0 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: LO2P265CA0081.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:8::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_|IA1PR10MB6877:EE_ X-MS-Office365-Filtering-Correlation-Id: ab4ffaf0-9a01-4f6c-75a8-08de5abbbd21 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|7416014|376014|1800799024|366016; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?ZXxN1BjRVz2rAFMquncrXty88LdlEYIhl3W9Oo4FKtHvysrQtYgWPVddn9WD?= =?us-ascii?Q?v740qmeJnKazFen7vxjVu5+it6HTQqPh/DWfLAayMqKbJpMYz6AdhWAuhtnM?= =?us-ascii?Q?tUgbz6bLEuOjVp/Vu4Wa2yg1l888zkJ1ztS4T9pfyeZWFxN61Q694Kd/Gzps?= =?us-ascii?Q?YYk6oxpMfatUH87qbfSlpiOqUDn3AsuMzwv62VZjPlev9A9knGTd7+cWjdFv?= =?us-ascii?Q?XqWQyhWTnvRoReOs3lxgdE9WL2q24Zft2tKUgruda7mtsEx1eBwHdCE2Mkyu?= =?us-ascii?Q?fcygF7MskeJDR897c2kkZoc60lZFBACzMY+8U4waxhacL6NaH9dzsjeGHDH8?= =?us-ascii?Q?kiDz4DTHMZHDey4mw4kLQ0aiOqKGwyMmHcTu2XKq+I3JXqsEdmgeXyU5prYU?= =?us-ascii?Q?CT7cHPDr3zMMtloPj4QAYqY1SDxKGFyG6k/0f8uSq6WpESbZPwoXdnwXgx2m?= =?us-ascii?Q?e8CDrv9bu4sSA3sqbl1jV3rwkvIgKo1MRcpmBWkC5xEA/Hp4anUrsFKZiDvK?= =?us-ascii?Q?LDeZRswj0uVLpSzYeouMORt5HGFHqHII+RbwwxJqDA2oeVXlmkbIbZmJIsTy?= =?us-ascii?Q?S/M5ad9irc+PJupjLXkekFRwn4y6ZfOXzs8FXDC00p4Od+Z0FmfmnoEjvSWF?= =?us-ascii?Q?ru0hORDtbShDV6qMOBMZEzxpxavHLrxmJTMvcddysH/9m8+WEYIjVP4Eo6rI?= =?us-ascii?Q?Eg99zY2cCR9SXsfhU/4yw7CfgA7KPnbJMuFBmLAUp0gjUP35HVrRlqnCShQe?= =?us-ascii?Q?u2HJZKYeK8JYIHbFac9Z4beW7Ph2QHlD+gGVGUtOqAh78/vhli5hadVFMmoR?= =?us-ascii?Q?9GRin7re6aJj6uQVM6W3JxRDDOOOSSXVHukGQvGM9a3ZYUFhVWl7ADaNNBtj?= =?us-ascii?Q?wtolo1qYFESUJx/a6uilmzGt60TuuP4CkLtRr0dPs5Z410IA0Wtwx7hOXutn?= =?us-ascii?Q?INfYGIKBrqeq40BziS/r/ITp9vDVoUrwz1MXORH3jTcVONZgJfX9EurCpcbF?= =?us-ascii?Q?1iEEOqZyge1v+xl/eLzX8a/bpJLjxMNeWf9hU4S8mu1kaNVNbWQiYyZILQQn?= =?us-ascii?Q?Aqq94fBfFLPQ39pCHGxSYW0GwspzHcacqVP1Vtyf5Gt+4UnO75ygF6Xb3jHr?= =?us-ascii?Q?+nnv/+3Q3JsDqzdukj3FSf3QvhKcP1kdumsi24KMoqgSyOVILn+EMkYjWCGw?= =?us-ascii?Q?EEgqzxBuXI3b7pHV3ON+KpxCNujwDGQAsx8N+RRfur6Hy51WEPO0TD6wmFoi?= =?us-ascii?Q?FdtnqMjBjTz0nXCfpD6hBL6GRgkPZ3i2eTJmZNW3bt2kFiDTcHdGbj8R4pau?= =?us-ascii?Q?c3pHQF1TBsLfeYms0m1YPMXmfcsb5MXYM2tgmZUbQESLbKx1qSfOFoUmWSj7?= =?us-ascii?Q?MRMrQlN/kIn/hP/UVuE0j0joWQH6OIhoa3DfSTfu0kOtwVGiYcpu6KUoiont?= =?us-ascii?Q?6U9FLAmEcOrQzBSzekuOzUxm6KAWmslsZX9LGscY3/OVrBOY/GS+CQnWIhOv?= =?us-ascii?Q?cA0D0SzU7jRmdvJcSVXPfZIHmSfehaPAJuhe7ynUyG6H2r7qqv4dYSrVTrej?= =?us-ascii?Q?cEPk+kqBfF2byBOIyz4=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)(7416014)(376014)(1800799024)(366016);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?IxOHU7giDq9/GYcnx94nwHEqGBIbr0RijHLSTqT8qe6CESO/JuJX9/TKgwAW?= =?us-ascii?Q?fFF2bv+tpFfpLN3CUTIHb7b3TM08KJvgMBZESI1VZXk92rzFg1s6TRAPJ4tx?= =?us-ascii?Q?6lO0c7xPKZ4nmH7KX9JHI9OE//Ua2ACG9SDU7qjRUhb5AvoXoeKFJDWRqqkd?= =?us-ascii?Q?liPZEJ0k2C6Ann9eM/V3moBr3vrAnkH9E/z58PoQ3MIK3iacr6ZQvgqbIRAD?= =?us-ascii?Q?hti42RIdoV6+6meEFhEPwKICO+MP4Jy8dhztG6TlZRlJ0Y/7eKxxjgGYEng8?= =?us-ascii?Q?nBRI1Hfh7tTM8BmFEV4OP/ISWhcHsHrtNcNMLL6I5KivwjiY1dRYv6xbo0ov?= =?us-ascii?Q?56oYYqvXhNBS1c1ZCUOwHQkqDnBYxTebO7RpQcEvMHg3RJpgH3u6wh2gC9EK?= =?us-ascii?Q?wTfzxER4ZZhMrnPD6vN3AeQfzvP/64z/PzGcviDYihoFCUsf3QFXHk3ppZpP?= =?us-ascii?Q?3HjV/14gL0TMMPw7923ibIVgTacqyu4sYTdQwIgunty7+0wXJUoVEjqrcqdB?= =?us-ascii?Q?+nv7rXOL11kUur4/DyPKVOPb33mFTmeYX/CeRC9gOcayyj28gv7x32uhAwU4?= =?us-ascii?Q?cM/W076183ZReK1UrlMVJGyzk9GI56EE3nEvaYPblsWFIFMmP05BCuKRAQkA?= =?us-ascii?Q?TRnZTmq9nTHqCwOyIarmA7UzPD4D5ZHK9SVqkN3Xd9zuyc2XXwKedxAXJ881?= =?us-ascii?Q?+F9aol3wqwQlWVFERggCo+mh5U+5yLUiRpOWfPO/S6wfABrq46nuFVt+GRxr?= =?us-ascii?Q?oy31mQ9oKKUgzK4KPtRz/Hm7qdN2hJ7nxwcEcCRxT8i7PWSmVZQT4prBxrjY?= =?us-ascii?Q?AbHF5y7eWbTkRpiwt1V3M7zIz7jdoR1gzT9h0YW0/vcdxjCbYJvD9BskCq40?= =?us-ascii?Q?QmEVtTutfJ17Tn4o9cnNt0bvurNJQ0WStGO4OL/oVLrdPgmVGuP9NZOiRLOx?= =?us-ascii?Q?PgrMiJORYzIc+mWqTzRQ7/Zdmxl8Uf6h5TZqaRO+UCgWtBx2CO2sUjCdfEjD?= =?us-ascii?Q?yuA9l4PBmLjn34uVaTbOi5RjwppDDVpoy0ka5KuhuGX2l8nyKjGm9IbXzez5?= =?us-ascii?Q?tdWEEZYlweRimdNDGofkkGCw7D217lFA82FXM8F7M+VysAUsgxFnYesgHIVT?= =?us-ascii?Q?4kJdCzyizuh5smPxQ7xjK0g4c0eCjDfNsaYMtFmAG34FAkSFug0V1PAHRSck?= =?us-ascii?Q?K4p1mZn+XptoO6TS/gwTBicQlQd1CpFFU4VZx4PZpFAmknglH25mAjYreDil?= =?us-ascii?Q?xYy5SHLv7YsMf4o5k/5CjmQJAr7/kGf3WFFA7Uh7Ex2u7ktoVlfnnxDOBRus?= =?us-ascii?Q?++2iT2WkupBWfUKYOSMe+twA5hEbGPmKX2uJi9QNYuXC/DYV4HH+4PPAUUIM?= =?us-ascii?Q?jwo8vFma9PG/85lq+IM3umfffdwDVch/4uJ2F6XJ7CEA0BdS3+tZVxjSz5+o?= =?us-ascii?Q?jc4VdbVyrhgmFT3PXAeH1y9fvIaOILkKwcDpl3I2uilEZAu4qafS0YygKiCT?= =?us-ascii?Q?B5SbNCuBWhi+QHhlEP1k37k3keP1bZlbobxCdcegDrqr9ZOsB+abX08nQCvb?= =?us-ascii?Q?grgaMpS7jSmI3sLFryZ9BtBnSoM5xeodM7NwKVKO01iSz3XRDR0nU9Tr/DMv?= =?us-ascii?Q?yVycJECqsX2yAp0erhYrP27n9fcMP74J5HlMK0irgAErDU6JUj5XusoKPouP?= =?us-ascii?Q?IiWet28J2xcFSCeunXcnhElU9f/WjYT0P7o9X+905OhIHPEClxvZyfd97wIz?= =?us-ascii?Q?kUsGFvDRQBpNJP9qXUeb8HEVNmfjOMA=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: y05wSU+DX0gSMzMS9mxuZUxViQfKjTwKJKjq1L/zktlO/Jmy/jZQD+vDPxCpQjaqTkfZ8+iDEjRU2dw56kNNKiIkN6JCgwp33EmQl7isaqrJ35QVi9JyY4fUWN6uEtLYK2MtcfwVA3PVL4balOYfdxyJIqiWS7nkQ/b6dbobfsgxfKX4KaAhPB1G6qeyqbZazp8yHUvtC5iqJ74V8JUlwu/I290L7g/w8W+d4T8dJk5fBxPmW+NDR5gXF/DAn1GUq/KK/8WfYhS/QeDliz4qoYRteFIEq0B+AtYf43lNGLQcxEcyiqyVoGcJ7QHgwJJyI5qLuyVp+rjAgE157X4Jb1DgVCDHaafODi3nVW9UQc/x6QzCnBZvYSNhhmCwmNvk0NenKgBTxLDiJ+DgPgngNGkCnDDXmnXUUUEqSK1vnEimHASMNHR/v9a6CyiTGaF9qSOI3Lf2KUt+DsB+RnSIq456vDaZsVVm+A66fJ2HjiOZgxSZHeQiLdr/ZhqzC+zF5zymnJo6odNuo2ZYceX8pVBcGWEomwKhHyelyQKPy9M19LABbEJZ62YkJwvPS/ohLKXLzOHPeHvJ8soMYnFjngnIjtnrG9iyqlv0GzORsFQ= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: ab4ffaf0-9a01-4f6c-75a8-08de5abbbd21 X-MS-Exchange-CrossTenant-AuthSource: BL4PR10MB8229.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Jan 2026 20:12:31.2944 (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: 2uX6xl3SY7PXoWXwiMjqHjuLqIq7V5CYHo+UXfJ7zJkg4BpF9B4aCix4w82i089sciirHyvcdVoeopxoIcjk3HZ0bcW0HZKyRXpOiDLNlUw= X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA1PR10MB6877 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-23_03,2026-01-22_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 spamscore=0 malwarescore=0 suspectscore=0 mlxlogscore=999 adultscore=0 phishscore=0 bulkscore=0 mlxscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2601150000 definitions=main-2601230154 X-Proofpoint-ORIG-GUID: t_3Q4fiaWoNGwVyn2biDHBdGkszab9UD X-Authority-Analysis: v=2.4 cv=IsYTsb/g c=1 sm=1 tr=0 ts=6973d633 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=1XWaLZrsAAAA:8 a=yPCof4ZbAAAA:8 a=3lrxA4fjdKnX_o0fwtQA:9 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMTIzMDE1NSBTYWx0ZWRfXwXbRVMQk8Qmf UnH1eXwIrCXsEumhvvUEYzjZpWMlIGrZo5DyEEVFRlUyfVvxrXMVNk4MLwdHbeQvAfvaD1eSciE K6GWdtapMSuhf+rImVXw7dRCBXY6sXSotdgQBhWUFNKT3S5AYADeyK9aaH8xkCFGg0m+vETZcAP yBazGFzI7F9mNwD61LM2tUCBhA6hsmxLBh9bZOVnenoaBM5Ahx4cThoE2KcfWuGaD926xdj2Zfw 6jqzSO9JseuraEo7d89dRFM+NmVtSEMzqP69Bfcx3cw5LJmHWhZe8pWmFx9v5xDwMHAmunNzS0x SDIsNl8hwAIgsMv07XGBc/QXZDAUJfWMtvvb93IGYtsgkyuleJq1TnTJpphhFl8pg2NIp6DhVLl C04pfdtIjBaUOAmPjFLBL4CbhHNxS56h2gA1gUR0zjVoX2NqlVCMMgRcHyZ0/VqtVd3SdQX/aYZ xFdN99OGnV/ILwFaxdQ== X-Proofpoint-GUID: t_3Q4fiaWoNGwVyn2biDHBdGkszab9UD 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. Reviewed-by: Suren Baghdasaryan Reviewed-by: Vlastimil Babka Signed-off-by: Lorenzo Stoakes --- 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 85b2ae1d9720..1fabda07c922 100644 --- a/mm/mmap_lock.c +++ b/mm/mmap_lock.c @@ -45,6 +45,14 @@ EXPORT_SYMBOL(__mmap_lock_do_trace_released); =20 #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; } =20 -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) { --=20 2.52.0 From nobody Sat Feb 7 09:58:57 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 DB5492C1586 for ; Fri, 23 Jan 2026 20:13:06 +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=1769199188; cv=fail; b=OG8h1Ik7s/fiHXKmTgtX2IXX4C1DVlyk8BF56V6mmpfjwRI4yaCWpw5PKSP2z1oUaYFhgoTTKGVBA7pec1Z6ESvE8bXXgVPPA3B5KTb4oh+6GjU7XlEdudNWMIVdPzGbCXpGhQbUZ2ZANlzF3Ugdqo257EtEdoUuTU9VdhZEBgo= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769199188; c=relaxed/simple; bh=m1VOx1/w6MiQrR1hhQW/LX9q7hA1/pCitqynsXBq5xY=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=ZMvCjFEjDs+4P3HlVwayPQnTq0s2FOv7b/Dxpz0Si4rmut3KP4e8/Q3CbR+symeu5TW7xZrU9nm1Y2oAAoSHIA/jneEwV902mnyL8noiaFh6tfch3M4mMnQnL+m9BcGAaxnF8vEXzuqO2imPE+ujdkYc16ww8l4M7D1sIbLksoU= 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=bWWz9F19; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=dsPzXDRY; 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="bWWz9F19"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="dsPzXDRY" 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 60NERYfb2172868; Fri, 23 Jan 2026 20:12:40 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=dLbZr34JiUIBapcFS5ocHNpSQXz1NqrIgAa6UQubWMQ=; b= bWWz9F19gY8ZeaOq4N+sNy41il2Yz0xnVZsfQVBjjVy4/6FV1bTiVF4wI43dQymY clwc+WBxEd1yWk29lXM1zltKEyu4BN0LZVmqcOyEdqfVECjLMTFs/gxT7BrXFG07 tXVYx38PhAcibZrJUxDtDYicckIx9tyLdwAv7MfYTC/qpvYcLSIabHS3eXSj0tXm 9uln5QBDwjG4JBWKCRD1oJo8+92zgJe6Ffm9NYo0y7Iwnf43mKaZgIStqRpfszcc Dr3FlFuQhd9SUe/lVsG0HFfzbONEfBx5l2uoBszXVSEUA5xKegKBZc+KkpN+f8g2 ZygpY8iIqE3oKRue+ejsEg== Received: from iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta01.appoci.oracle.com [130.35.100.223]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 4btagd7k7v-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 23 Jan 2026 20:12:40 +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 60NIpV5E022490; Fri, 23 Jan 2026 20:12:39 GMT Received: from bn1pr04cu002.outbound.protection.outlook.com (mail-eastus2azon11010053.outbound.protection.outlook.com [52.101.56.53]) by iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 4br0vjmgwm-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 23 Jan 2026 20:12:39 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=O2bzRaGoF6YB4+iqBRxH96RpNClCYjQw8inO7WjlSguK2FkSVglgX8HnetRZQcSFhPkpWjz46fJgyvCf+gbHSR6TEmCkMhMUym045unRB28RH3EP4sTl9HcYLVGW4kAtWVJ65g1EuwIif5Ktmv++oCbdTAqdNK+dxQH+KsRlI3q0Gvo32aSNjXeiX4nYKGawB4nnUph0rPHUoqYu9vdvAKBStflncU+IdIRORKKRvT0Z5cTxk5BJ1IeD0lNmH0zjLbyUjeFbYrZEMBLj4/YJbDOgBjsz0xAsITO0BaJXIQGh+V+zUCqYTrDeaAMLX6sQ9LisbQedq5AJ6HBkBbUkGw== 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=dLbZr34JiUIBapcFS5ocHNpSQXz1NqrIgAa6UQubWMQ=; b=kLchPMidBN3hxSNVZENETBGwY/36c8z2813P18gDWd8Pu7CHcSI2VafUZTfCSaXz+2+r72sgwTIvr8SdMdI/t+EQf+S8UJcZ5sZlICCAdY0aIm4WMuIm9VfgdT3U7IX1+BhfNDiwdwbuOcZt1hcaFuuoRIeUdXXZNqAuAMd5OvPHSdfj+4j5jLUewNDworpx9evUf2I5LfxKFcYi7hyAf0CyLtxDkQcV7SxcFyIPihTwjuJRdN5n3BTd8vDWPMZf3xdqjNrRKRyjl1PlEmpdcnZoqK2G68jRfgKK3xdUFv4+X+K8i14i1MX3ok+dgx2Cd5QtINCb7gZ/s98nUae+6A== 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=dLbZr34JiUIBapcFS5ocHNpSQXz1NqrIgAa6UQubWMQ=; b=dsPzXDRYJDmTdQRyYlcFBUdVLiqNkq2k22fAwkv0QmQPSFa+XHa86btLQxsDvzuPLia4IAR2PioGUW1yPZr1otHYGwUUI5PTFfxKHkGYw3kwRIo0Zq++xbs34ii/Oz3GlXnNsiNnPH3x19nVhrFdorZzwhgbxxUKWBF9uXvmfPQ= Received: from BL4PR10MB8229.namprd10.prod.outlook.com (2603:10b6:208:4e6::14) by IA1PR10MB6877.namprd10.prod.outlook.com (2603:10b6:208:423::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9542.11; Fri, 23 Jan 2026 20:12:34 +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; Fri, 23 Jan 2026 20:12:34 +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 v4 06/10] mm/vma: clean up __vma_enter/exit_locked() Date: Fri, 23 Jan 2026 20:12:16 +0000 Message-ID: <33273be9389712347d69987c408ca7436f0c1b22.1769198904.git.lorenzo.stoakes@oracle.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: LO4P123CA0133.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:193::12) 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_|IA1PR10MB6877:EE_ X-MS-Office365-Filtering-Correlation-Id: 828bb5d2-a183-4a71-5b35-08de5abbbeb4 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|7416014|376014|1800799024|366016; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?Nv4b5MIKOnJ1LCB+muTmcSBCyAHZ+WrtmQ5T4Y6ncIgaowX1CtDs38gbTMyJ?= =?us-ascii?Q?FBXHDW11AUFWSf9EFE+WMyFozejCoVXjqcRLmFa/v7TsOWxm/GJLCXsTwenR?= =?us-ascii?Q?BhsKWHj/Kpwk2ozdglA/nGI+yZYRWlBWV314WAdOIausRPVCXUMtW40tJg09?= =?us-ascii?Q?cbt5BoGxarIpMdOaZltrsoX72kWcaMr4TMtHX0WCgVCVbThS3pm2BJglCLR5?= =?us-ascii?Q?nWlvJOPVaHpan/3H5joJsJv7rviNunxBalUWy5MuHN1iAxCBEZ6TnudqymwG?= =?us-ascii?Q?1t+wmhcKsk9radFBIoM7+3e2cGIuK2+pD+dSlFWDJjAAQy1RcjZdib4RD4wi?= =?us-ascii?Q?LFHAuUB90sGCWGa6ea8UFbsW8W58E0iVNaV4McUcj8KSMl7gtkJYrgW5HCiT?= =?us-ascii?Q?2BK0t4DFQCshJSSiG08OIFeOC5yg71brDpxuXJGhUyAvNjx+irYAY8DDAySI?= =?us-ascii?Q?+0ugiYuet66y1tVvWwEcS0RozmpRlPRIb8KA8pGwRwswV6nCVgRlHuYpR5Pe?= =?us-ascii?Q?xVDJ+2EPeIroBO9C4p64O7z/RQJYLRQuPYX6siPq5FHJFEDFLhBP/B6jLOa8?= =?us-ascii?Q?v9IZ72347tLTHri0BOXPVVIkTtbOZ9dq6FrYgzEnfQsMH/stI/bLnuda/J1X?= =?us-ascii?Q?AVW1povHFiTH6er7+lDyrgKnfW7Ky7tQJGD6sas/9kqvwfm6WRBwh0EQOpkU?= =?us-ascii?Q?/A2tF7nP+YeB5cOsEv67zFiY58cG1jmmWWDr5/ERU515anSA7ErWFRzJic+r?= =?us-ascii?Q?n2ythewxRu2z/nbMwDeFpPC2pwza5SBf3ivITD9+dg0OGCIk+KUaZ1DpxlKc?= =?us-ascii?Q?lUxNo7YkPkOA1ckt5EeBna/K2LMV0ogOMAwf+VujMOll1XKpafs7mM+FTJPi?= =?us-ascii?Q?ETZGhOdhnNz1icx5s8RiGZyOx8eKIhpM0lfRY/P0apMao7i1rZE4Yj0ixaoV?= =?us-ascii?Q?NInzaNIkDi3F8NRez4GNSHGZZDDkWWo8JNmRysO6pdEtgGwfr2SEK2tQ4Ykr?= =?us-ascii?Q?5YPsoTsJOvlRJ8gEnJG0hg9sUln4FgzDORoMNUByNxdrZGkIbI3agOx6tbAe?= =?us-ascii?Q?nLb7ermU5XiMYNWOlc/YDgner4iLI4lPXXXcIxPeRM5MxDsFl4EnO3lkQsXx?= =?us-ascii?Q?kKKy4yR1bJTOp4rUN+1HvG7lJVnFo14Hze/3O79+lrOtLKoSvGej4/RT2QW9?= =?us-ascii?Q?3d3DsJPCORZX8UYiOjVm3m3xCW9tRiqYIHUraBsxxCK+Kbrn/cVs7RSa4loi?= =?us-ascii?Q?YHwSZSY14uEf24W9gK/ZdA03CV8n8p9+XWWyzSdL/Kmly7kf+ssvuyCt0V+T?= =?us-ascii?Q?4ZwyI5/ATnybltdaIVRcxCiLY6rMu0fIcLcSfGSBbuFjUH518JH0WbEgajnb?= =?us-ascii?Q?U6aJnugA5/iDCOc7g5/RyW0JVZgAsh93MDNsy214nCYheVif03J/uk+2XdnK?= =?us-ascii?Q?H6oXtHs0zCTr9/or1D4bNAay6Zcn8Szn8vw7y+KWeXKROcu/d1f8LlTUqZIS?= =?us-ascii?Q?aHXeEVAzKZ1NluIB0rB4alhKmJHsgP4/AsSwyr0XTnsbuvSXnko5J3RhR22h?= =?us-ascii?Q?Q3GVt8Als5SL4PCLW2k=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)(7416014)(376014)(1800799024)(366016);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?FtVUGwejQzCHp53dLfiyTEKs7SynB9CDFrsTPn+dCa3YQKjt91QhHpf7rVm2?= =?us-ascii?Q?73ZKiJ0+8LTYEHxQjGrnBbtKN0iWi0jAOZBi0hPSvYNLofPnjecby6TPNC77?= =?us-ascii?Q?bxFQ2NBpCUbi/9TEp0D5NjEM/H5XUQlVWPBdy6JL2stopdKJDLf4X2hE5x8p?= =?us-ascii?Q?5gTLNSoYO0vl5LDvLvtIrCryo2jzsWU7SU8fg37QvEHsAp1OTmgeet0cFw8s?= =?us-ascii?Q?MT7KAAgjup3ue2UzXhP8m9DbG2flWtZgD94GyS6jBS4p+23oWZh5lPIjE7E4?= =?us-ascii?Q?N/qXiLJA2xwIipofbTfXhkE0jldL6FK9b5MLUXGCwUwhQv1z0ITltlylS9F/?= =?us-ascii?Q?Fr9KUYhP7edgEPcjIafka7klfMvmNyy0+tXK7BYRrjQMDrOTntfjOQBL/dHg?= =?us-ascii?Q?z4iiN4y1q88/4CeAPq0eDiDx5GcXsVTVu8ceWUgucmm8PDw6QilMHcb4n6jI?= =?us-ascii?Q?cIRyB++SmYwbKKEQXrfYDrc7HE0OiYMEJgx+qAzoRBD29s7G0bI7kBRLMhCE?= =?us-ascii?Q?eup/jgawi1V8wO8YhvitHayhopR0XH+N5oEpDi+3XIgr/ZFg5HhPGv1tGtry?= =?us-ascii?Q?wBJhRwGdRiVkSZ7ZIDGuOdQX9O3Co1ysVekTRMmvhtWO3nSibkDf5BGDf6Ww?= =?us-ascii?Q?+uf0F6OLHx6vPInsa3IU/fNPoQ7vD1i33Chh3+wTfrSo7QwwvyBrKDH7xWeq?= =?us-ascii?Q?cZvrhA54YMoLQpOadjzBl54RIP0+37T3ulttljysTKzS/cIsJ5342Vgv7GK2?= =?us-ascii?Q?xepMKwLTDBZ+RxhKrVhVdDqdrro0K/heakd+t4Km1PcH2352KKDlZVRVBrPr?= =?us-ascii?Q?AvUnh5XQnta90rtoucbo339Pta3iiH+gP5y9wyLRsno4glkRYp2+CJSCwVlg?= =?us-ascii?Q?ONv+1/hJaIMhPDKxLJGBNt4DFYvH6EkeFIP0NsgXnDZlZTSWWX/xjt4aU9+z?= =?us-ascii?Q?iKH4vc0zVnGu6Sqpo0mUgmpo+j4Gc8S/0UgOXZprzBJS6z1/ZlmY7wD16KDl?= =?us-ascii?Q?q9F3V+BPoyEtUaxE1AfTSbLTq4RhGrH+HftAtgbqLVRSRYjfHEVO9LGjJKE3?= =?us-ascii?Q?bx0pm5fOV2dRTfIh/fKgBp1wdGHasrU8iJA8E+E6DqCAGz9KpnRFjvZklJ6S?= =?us-ascii?Q?4pM4Wy1xQGZBQAGf/bS7BZS3kb/qsbwBMs2E1JPYcrpkckCCVlsGOo7gOf1a?= =?us-ascii?Q?SUzV0Rvnw2+0UpFre1MNeJj8f6bh1SoUfkiyv4ArlPnBbjBDDFNiFSajMrnf?= =?us-ascii?Q?oyGncKny26xNXa29m51DSlwSaKW/+jHKDs4YZcOX5s7leLMujBeP+k1V7pxC?= =?us-ascii?Q?67sZy6vp0Lda6Hf4Mgh2eYuWW9bJoPTVdYl++10K87AH5hfGE8tNcKi17fYm?= =?us-ascii?Q?WxZsxqAjdbR58O6bZpCSd+NXNE3VsaNN+0vyJs5WAl5edkMUE35t3B6gJs5e?= =?us-ascii?Q?CyN2867QK0+DKzhDrfblz5up0q9RcEvnYaH7J5Tfv1UWxf/miiIVWF+fZYXs?= =?us-ascii?Q?wwAWFN9o4WohY54SjyhgWs5ffhbpdgUdd38+dK6TXIz3zcL0Us25rQ8DPzGX?= =?us-ascii?Q?TAxmndAGCnIlZ0lb6cULYi/+sAfOvl65N5RQmoyuHE8xAusX58qfYnJZee85?= =?us-ascii?Q?mGy1ovtnC0CWYD9MXjFUG2tbw6ouMtyYxOhQH4VEfTWabrCSeo0Ua3wIPkTV?= =?us-ascii?Q?5PTtDN94U7MF7xbDeyFihnelu1RZcBydHr5U5/7Hh/p9jYJ0/5Yu3vl6xvK2?= =?us-ascii?Q?iPnciwNkjGkxww145O/VEQgi2gWOl90=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: kt/9xDdm6j6KBN++vxu0K1hXgs6jurYFpA5/yEBNXVSRluXVDvqMh0QNbPoOHlt4M6Qu3WSfBUWk+3Ok+vvOi6U0w8PNS14bNMXHnW6+xV8la8gHO+8o7jBuo8pZr2OCRUogFbU+QzhyKTRZX75/lez/Ll9tyfBCaHpo24s6qgtPtNnDR+IlYif5pOxBq/deW4hUOfX8TLaovNHZFUKw8mWM6U1LY4Ss0hiABWn4EPkaSpY9Y2SCqplaNbufnLxGIkohLRLy/Sz50lNhmhBm5UfbjS20/VM5uRemdJoPnbRuVuqV9umVCMJ5RT+okKo91CsXPEVu/JeHYeSGFhLqEKclRmm+hoMjHXd4KK8Yzs+epC+E+fB+b2vrlLi5j2P9QM8mthNnLY+UkW9O0bywVvDa0BcPv/ekki2s2H48WS+q+EMlsZZW3kEJ9JlTa69zynyRyzn6LER5Ed36MekVj2RK852zr9X3r09vvHxSWZ+DJizvC5JIv19r+l6rWar9vCdhc7FqFGfOAri6Fmb/LZ7h5yt3uXtDEhL5sgoU4I/AWDaQB51D3vea0VjzMEKXhTnCnhRZ5G37Bq70E7BHWV7y22KbO1omfl4EpXkeVYM= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 828bb5d2-a183-4a71-5b35-08de5abbbeb4 X-MS-Exchange-CrossTenant-AuthSource: BL4PR10MB8229.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Jan 2026 20:12:33.9321 (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: 4YBE6TdPrAyyLzzaOchH7lEjbop9gmgbM3v7fcD6rzDoB3rylnxNT2AzGrODVvfgA8wG9wAPBQ/oUmWNjW2F8VGcuPTqhdZ5ri5syQZVrpM= X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA1PR10MB6877 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-23_03,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-2601230154 X-Authority-Analysis: v=2.4 cv=PqqergM3 c=1 sm=1 tr=0 ts=6973d638 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=Qfc5p1S1sjZ_rCI9KBYA:9 cc=ntf awl=host:12103 X-Proofpoint-ORIG-GUID: Bsrpjnw6NCjqnyql6Sk0tZPAM0MVbapA X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMTIzMDE1NSBTYWx0ZWRfXwnji9dIs6bqQ 6n3pFuPRyWZKxluIWbmfeWMkHqS9geUb2lkF2Co8wB1ebbpBOebCm4lM8HqgTF0scqyZKv7njG+ bBODvIfvGox3+++v+Mks/arQYd5sLyYbskMpzNnVz0kZdz5H1cCueAdIfIIHQFSVDs8VsNHGJ1s ap8ScZS1NSZVAbZuz4B6/gvdDypB40ukpXaGFxJlsr5uXocJF8gUUI6GGJe59gGdXvRycE74F9z lYnmSs12VOYD0ffU0norPxozpFfjRqv5FuFD48lXr0UkwjmGMzXiTm1amEUfGaY5ZEf7DmXY//H Lqsy27QdKt+z5FmKMI0Q0UdBm0NtHYhNv5WAHVaXpKa8zeerNOcWkbqMJpWyp3Swt5WL9RxmyAe RPJ2Y6RQAbU6tnrUjTonNe2a3uTwkZ6FOhTap2aeH+8UpNZActqGh9YbqtFC3glVrM2thUdOe57 xNTEO7e2gt7Wrjfz6FCKOKyZ+cKLphZpDI+vbiFE= X-Proofpoint-GUID: Bsrpjnw6NCjqnyql6Sk0tZPAM0MVbapA 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_end_exclude_readers() 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_start_exclude_readers(). Finally, remove the unnecessary 'inline' directives. No functional change intended. Signed-off-by: Lorenzo Stoakes Reviewed-by: Suren Baghdasaryan Reviewed-by: Vlastimil Babka --- include/linux/mmap_lock.h | 4 +-- mm/mmap_lock.c | 58 +++++++++++++++++++++++++++------------ 2 files changed, 42 insertions(+), 20 deletions(-) diff --git a/include/linux/mmap_lock.h b/include/linux/mmap_lock.h index 1887ca55ead7..d6df6aad3e24 100644 --- a/include/linux/mmap_lock.h +++ b/include/linux/mmap_lock.h @@ -211,8 +211,8 @@ static inline void vma_refcount_put(struct vm_area_stru= ct *vma) newcnt =3D __vma_refcount_put_return(vma); =20 /* - * __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_start_exclude_readers() 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. * * We may be raced by other readers temporarily incrementing the diff --git a/mm/mmap_lock.c b/mm/mmap_lock.c index 1fabda07c922..72f15f606093 100644 --- a/mm/mmap_lock.c +++ b/mm/mmap_lock.c @@ -46,19 +46,44 @@ 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_end_exclude_readers(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, or wait = for + * readers and return 1 once they have all exited, leaving the VMA exclusi= vely + * locked. + * + * If the function returns 1, the caller is required to invoke + * __vma_end_exclude_readers() once the exclusive state is no longer requi= red. + * + * 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_start_exclude_readers(struct vm_area_struct *vma, bool detaching, int state) { int err; @@ -85,13 +110,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_end_exclude_readers(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 +130,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_start_exclude_readers(vma, false, state); if (locked < 0) return locked; =20 @@ -121,10 +143,10 @@ int __vma_start_write(struct vm_area_struct *vma, uns= igned int mm_lock_seq, WRITE_ONCE(vma->vm_lock_seq, mm_lock_seq); =20 if (locked) { - bool detached; + bool detached =3D __vma_end_exclude_readers(vma); =20 - __vma_exit_locked(vma, &detached); - WARN_ON_ONCE(detached); /* vma should remain attached */ + /* The VMA should remain attached. */ + WARN_ON_ONCE(detached); } =20 return 0; @@ -148,14 +170,14 @@ void vma_mark_detached(struct vm_area_struct *vma) */ if (unlikely(__vma_refcount_put_return(vma))) { /* Wait until vma is detached with no readers. */ - if (__vma_enter_locked(vma, true, TASK_UNINTERRUPTIBLE)) { + if (__vma_start_exclude_readers(vma, true, TASK_UNINTERRUPTIBLE)) { bool detached; =20 /* * 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_end_exclude_readers(vma); WARN_ON_ONCE(!detached); } } --=20 2.52.0 From nobody Sat Feb 7 09:58:57 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 679D62D73B9 for ; Fri, 23 Jan 2026 20:13:11 +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=1769199193; cv=fail; b=b2MHIye4id7TecWlMM+f3TTwrSU4YUG6V8erPtwoa6srGY8C9NSTn9Zch0V7rRdGUL8P3gU9QgrlXL0u+FKsZs5GL8kDD2sY0GHb4iXNul8qJ2/NRAinNet8yI4qDvlMjLKahhkwTMIisoL2b5MqvY5K9FZrr5jKIQgoGOUx5o8= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769199193; c=relaxed/simple; bh=3oRXc31Qta1XFmzmJNLrWLdo1tfmQdcUZjwB/IElhqw=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=tcTuex+f2VXT+wDAjTgRWhgUikDw/9ipA9SWVw6bCxSu7penno7W75HRpq2+XYBrhihjwSXB69cVNgUJZzTbrBYQtU9xXm0SfhfXltOYCljqW0+WMdhB8nyM35ttLhZCOCYbt1oX707s3efpbccUm+WqhF9dVWSCi01XWqXtLFU= 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=qfFWgcZG; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=nwIffVBh; 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="qfFWgcZG"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="nwIffVBh" 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 60NE1Zl02271176; Fri, 23 Jan 2026 20:12:43 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=TnK8UCwbs1UCNJjabizfDK4HYEur2xyLX6kiZlAg2sA=; b= qfFWgcZGXtn8sCWKyn6XSZDm+TFALrhAeGdDgkxO3mrnUF5A57b6Ol5xla6CiBwt IxaHw+zWFJ0Owp6pV4QxAqRNahBG9xUU15Zp6N0X/WD616poBtw3aRxezjDZeKCQ //l2kFD5BcWMMk69PKiD8uMvYvx67nLqz6k7VqsYbTDpH1xjcNtGPnDXCh9MB5TZ PXFiUf8GTacqwlqAZ2t7e+/E+i026JKF6x9fWbajkACH8M8Wvv1ZWVd2tqLCeWsV ycFz/fZV/Wj1X8yyzxsouCo7E+mKTfAHKw/ykV6vLd8Y79RdObkYDVPTvlCbl/Yu y4ocuFrfFBPL0fYcmPd6Rw== Received: from iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta02.appoci.oracle.com [147.154.18.20]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 4br0u9u62t-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 23 Jan 2026 20:12:43 +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 60NJlkOa038344; Fri, 23 Jan 2026 20:12:42 GMT Received: from dm1pr04cu001.outbound.protection.outlook.com (mail-centralusazon11010022.outbound.protection.outlook.com [52.101.61.22]) by iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 4buswcgwq5-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 23 Jan 2026 20:12:42 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=ZWWg/KUdSc8dLh7ZO7YFOHcS+4fFrNO3BgRi908U6njmWYpAVAzQ/gtfpukdNPqVZMh7+xBDHuW/2ugj2X281/yH3Oz0ZH/t/lngdruFTjIEDHNTJjSYp95MHCHTi7mn1AFoBxjc+REV/yZ4GML11XgZeF5hWoHVXP5IGjAlcHjKYTf6wcGCsuGr23FG3S4UdCF3Uqdd1a5fuzxkjLh0ICFQb8hZjMRlr/DeR7fOWURrFgYaIgp+STXUi6tQptPQreuCl92zWzNZ+UJSwuJrvR4YKBm6FCYcykn2ewsmPlfEHN1uQzAAcBDhojvbDtdK9Hp1VA7kJQTbFD+petm7gg== 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=TnK8UCwbs1UCNJjabizfDK4HYEur2xyLX6kiZlAg2sA=; b=svg3TdttXE/8qKtM6yRKCZ44fvZyVAhUyMcD785yLSF8AYomiEuVFw7Ds5nMElljqKF0ESkztBs/rY65YoCOT7Rpr5guM/P24vO04TOlvOup8v+AEmljTQGwdHMfwGPMLaJRjRsE1824lpP+gP4drboscYRJYihesuEJ6Q1QnhZQkj6v5EWnKxvNi8zRTVwCLBXNuEcsSyZ/hjE3vvwYFIntV9eXDa7qjGCwHNamXkNhQQRVyjs1F+0ZceOXbrU6ezl37lg+VEDtnR95PxWxAMivUTlRlROOMEpvq1P/avT7wR1xU3tgB/gEeOVu5QEtlEiJ6iwDIqVlWS6wQy8C2A== 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=TnK8UCwbs1UCNJjabizfDK4HYEur2xyLX6kiZlAg2sA=; b=nwIffVBh90nxeKob9PgGecFVjJEImhd3idiH3xV1SdlMh2w7cBCC+2zhyazaodH4bTYTtQISW5zJfSOxYI5mnQuCfFxnhz8azxpYZNePj7rToWFXzNbh93xZlFKAiOME+Cv5gOj9uLtfKeHbIGbUCOnc4/zamfriah41c9RsEGw= Received: from BL4PR10MB8229.namprd10.prod.outlook.com (2603:10b6:208:4e6::14) by IA1PR10MB6877.namprd10.prod.outlook.com (2603:10b6:208:423::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9542.11; Fri, 23 Jan 2026 20:12:39 +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; Fri, 23 Jan 2026 20:12:36 +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 v4 07/10] mm/vma: introduce helper struct + thread through exclusive lock fns Date: Fri, 23 Jan 2026 20:12:17 +0000 Message-ID: <7d3084d596c84da10dd374130a5055deba6439c0.1769198904.git.lorenzo.stoakes@oracle.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: LO2P265CA0074.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:8::14) 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_|IA1PR10MB6877:EE_ X-MS-Office365-Filtering-Correlation-Id: 35ef30a5-1d91-4025-a3cf-08de5abbc02e X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|7416014|376014|1800799024|366016; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?CHybtkQua/o7fDYtsajv2jnEKrq/JYjkUDf42yrcfh8QnDfrDGEkfwx+Ldec?= =?us-ascii?Q?uCFZx7T2pHE38rq2/YyNsNsRb/4bSo2tuXtxDRM5qHlBJF1Imp5oVmmGTRcl?= =?us-ascii?Q?f3wZmAVJR6ZOppITr1wgpxeVMxiBNVYy3kabkJiImWhPKcyx42biFUsPoOOt?= =?us-ascii?Q?sHBNNK66uuaSGT5gEdGqzDtu8PzoZnvv1OpPtmE8RS3bjwY+sh6nLtx4Vvfs?= =?us-ascii?Q?/2rSUkT2rkVUrQfjaH0Cm3PS8mWWe4gX6zbanY66Q0UUIX9KsEPrHd8DwvGY?= =?us-ascii?Q?ch8hMfLnycCWbU5iRi6kKMJ1VeoRqdmYFjSPkypJIIATOO/t3DqSa4P7X4P/?= =?us-ascii?Q?FbYsffa7lwvv/M2kMj4yxl9m+Hgwg/lWRRT4oexS0rWCS1m6exKUa0+f0VO3?= =?us-ascii?Q?YpcgI0M3sS+CC96knahc8Q7TnfMQpaPKy3q4dlqwQfxMMsVBhr8Bm9ovptDl?= =?us-ascii?Q?Px8qis+sVzXe+ugeUpN+4JAeQOziWFmusdeHN70rAQ1ufEwA/LWoGbyk658B?= =?us-ascii?Q?7DYHUuwQ3QqjIR7/LZEeMjx2/I/U4fDEQ2qOMHW2HaSuq2Y8MySQBNj70bBv?= =?us-ascii?Q?/EQORvIKeneUMU1lR0KkLMFozaEg+oFiZjW5PZRgUzyjmRYBN4ixD6n7+tkW?= =?us-ascii?Q?oIVsgSVnY38GdSpG0MdstoGBII2DK6oPqJTbuLvAmm+F7ft/TL3a/Hc2pVzI?= =?us-ascii?Q?j/41Msb68rf2oVPfKvM5MiajnFh9OdiJSm79fTnvaTlAQk/VCqIxAh51/C7t?= =?us-ascii?Q?BXBjzBt7pOvss2xB5AFCi+GwS+P6gPqFwu0Bwo5iLjMcmgWOVJaImlq9drVY?= =?us-ascii?Q?MKeANYcsjTF3UGSiZI8mYesFz7i4V5Wyj9AaWrUh/ftvoyAGM3ThHiFUfvtU?= =?us-ascii?Q?+Ryz9j5R6DTiQqZmi4j3tkSN4BpPFqEu+aOOa9fi933ol1oFwvfLcXVW6fQs?= =?us-ascii?Q?Q6XtddwV2IxfFtYgNxLya2s31+2ZWmyIKp4iwZkZDEaRwkoID/voEqUDM9wm?= =?us-ascii?Q?QhgfFFafOcD3J6MXOkop2ElcbACkn6kpOvs7C8ZpGxAPleBHVFgfdp+hNV4S?= =?us-ascii?Q?3fSzmjiQ/84AfrbCmvhTRAt/cKEJyRmicYha1jv1HV9YRWmPVrkEVaxvzl1j?= =?us-ascii?Q?hP+iPoD4qvz72KWkIO/GrUPjiVJnt3n89m1h3kHCgSNor/U1oeE9Eyiu0s84?= =?us-ascii?Q?M2EpcLn17Y1+jAHy0qmdoZino9EfMfWyAjH+0TwL41E5YcfvmCPDDKQmGuna?= =?us-ascii?Q?oVBO3gwX3i51nuJ+chgwmopiu8opzbyHfqP9Eda6+PMeihkrj3+7q23kKsHx?= =?us-ascii?Q?sK5u+BQfJORksxEgyjE+Yq/s+qgB8KnxYA3+RfQDZiak2yX7Sdn6342/8uM7?= =?us-ascii?Q?EthlYurciIfw1Oq9B0Pi+SGnZq7q+H2GudlVKE1vgQzcB3WS/OseObS9SVl3?= =?us-ascii?Q?UNRtCf/i4UPFQK/wrpGJh8XMkXe+rcY9bLDRcmG+vjAjpKRFf36FczwEQHWM?= =?us-ascii?Q?Y2i17uEuvySqEuq303xGfqEoE3IsK7ofhGpxkRCnMtxpaoQeIeRGxgl2LFRd?= =?us-ascii?Q?cvXGb4fyJ9XQ+83GFqs=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)(7416014)(376014)(1800799024)(366016);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?rLbEVWBwJinSmKJs3AI1zZ9WnBQ5Ne9mX6jzVbnl6/9q9BDMiywNFtMJIdZj?= =?us-ascii?Q?kExINwK+G4E0elWHw76sD3arhbXplpa1uUXr2ehITAToP4SlB23wkozrZgv8?= =?us-ascii?Q?rdcRq6F0RSy7tOwabZo2/sVvPPJQHnMjP5Lc4T5xl4Ig4htso7HHtq/dp6E8?= =?us-ascii?Q?aPbE7FU0j4E/wd3ZIPIq3AAg6QrxF4PPjyzBM9T3fCNpwSG1GeG6eTaN9bzz?= =?us-ascii?Q?qDkUms3G+hN3DCFhKfvz6QxMepGDFyJaxNKc5ybq7Tuva87pkcOUNkTdFkKu?= =?us-ascii?Q?m64Bg6N2yXkx9jHrYEIHlZyydeidGQClrNjAc5JEBUbqHdgIeZpAG+u4X/aF?= =?us-ascii?Q?kr0V/zgSirhbNkQAaI8j2sIrgKq/MWjCsaXjq1lwlAt8wiPBBWd1AYNbPvpM?= =?us-ascii?Q?DakP3OKN4KeKTP7LW5lFm3KSBUCLiXG4zJfW/4YT9bVBC7OoN3TyISO9/naq?= =?us-ascii?Q?Sv+4sXq4lEqGfENrnZLhedpGYUh9I0IFcaNCv2iMss4zXxbtOHr8C1eqDqNT?= =?us-ascii?Q?6x1ZBIWMvNRKpjLGw0UQOYRsqsjNRjzkUtZOEvqz96PtHw45VA/pKZ3dElDg?= =?us-ascii?Q?02+GLvieKtZ7NRudwHzlMvVqmxbQiETZ4UDMzpaFKghoM5T3UajVuoUwH5td?= =?us-ascii?Q?as71WymjrTwMhBtFnc6WAHdQFttByUzu+GYQjDRBSIw5r5Ro43xqWjENua6L?= =?us-ascii?Q?jnsYmnR2N3wnBXbDx3M6JkPiHdIksqnFPIvuKoyj+1EEWXx/oTFUPDRCMd3I?= =?us-ascii?Q?0EHeOFJDVpU9F6JGOIROxxowSHjKGCuZ2JOPSBJX+LH9utfwEV40hZSOHwwN?= =?us-ascii?Q?ryG4RwMvj1YvLlDdc5lfCOGf8yuupNkp0plfOPfJxuxBkPvGslaEaYF4afgL?= =?us-ascii?Q?3j9wtOx9PZtlyU4dLYK8CDDlGesHG0o4L3farWMqGjiFH+iKWrtcP4/aVRRq?= =?us-ascii?Q?EmRLZuTibgqKH0BRJnDfp3uLkq2kMjhzkp+weZXxgNhQZB4OQF+XGjA0RdcQ?= =?us-ascii?Q?+yomIOoYnmZS1xZMQWEgY2hlBVGxNFC3VXb9CcrLJwviptAGByK5sAtBT13j?= =?us-ascii?Q?8Tlo67Q702KfX7RF6/3iGfHV2Fl6LN/xxf2rwnC+kte4xLHO9xNxjSIh+ugP?= =?us-ascii?Q?v4r9Ry2N7l9eoChIdu8px4aGCHLBfYb6NntxY2VXOgXsufZqWjS6emqQiTs3?= =?us-ascii?Q?mjqMa8z3EPJdIy+A+winll/Bq37hZr6UheUv5/zBAJHBejEqPr9eclzAuVeG?= =?us-ascii?Q?Bo4yde2vrWmuxSGdrpKlny77J8lOoaRiUjrhdQIq/QuFIClDqSInlEXgWsHN?= =?us-ascii?Q?lEnHglCd+MbAkcQKfUHBD44O/Px82fAxnm3pKy+MRpC/877kp4X+qDi3DWlQ?= =?us-ascii?Q?7UFC+v0xHHrKjOe1Q/yVaOt4p8czAk7iepnqhwrlyktuXD7rP0B0s00FAb8o?= =?us-ascii?Q?82ADfLjWyP0NN516upecAkRQ17R9QeiA/5EIoEuIgnwCfEOg3Wpqfm4W7fFO?= =?us-ascii?Q?dtfzkpYvRt5BlW8eiSDJJl1ngJXPIWMYQEgQxwMgXBNpvBS8Xu748NyqRpHL?= =?us-ascii?Q?enH7EnWTe+5akiflW+or19LUe3b6slsQ5GJb57yTP/sYQSrOBWeGBQ8IKQBv?= =?us-ascii?Q?1czhNp5327/NcOExn4BMppjfQEpq8PRqbWuLV83RNpM+Y3TVRBG/VEaom/D9?= =?us-ascii?Q?1DfKf+Jc3d0WlrYiTM0XZXWJVehP3ptxLq/eZ8MqNc6IUaayOO0QDCaknJ+r?= =?us-ascii?Q?yUppi+xZcxZxE2IBcCeaSXREXUDtRjA=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: T2Kr2+OrlI0IwZKh+3VL7VrGaHZ32gustSiHiws10kAeYfPTsF7AXvHc9jHoDjZzyDf2eOG3St4Kc+6Fs9KyZ5o3bdPOxg3KosQ3uWzWj9gb4fSd2ThA76ISb9Oa7eBIiSUxN+pwF5Xcrd+yw33SlauaVoVV9eS/kgi+m46ZLwlU5230Jd6Ds2upwSxCd9Z8MT999k2GX7kSaow9BaBwrw8W4dkMFzC6DFRSgNPpCNqcY5DIgKbgutUkiEu8x2yMQk36EGDMTqaRGnW76dCpcniL0Cy+tNeDZWRX8BvVA2qdBHlfwVGYOtg2Yc2fh8O0PXo49TJSDCu9WTdVc+azNkSeTbPtuBfHGk9KVevN6YSG7isk8pZOztdUrnXYfM+l9PdmvrBoLdLVMTRoNJSt4qqgPqk5gs+bM5OUjz+ZWo1OT0Xsc9ZpK737cqKqndJ3rVtkMyf4WnYfuzv/YBqGk2OT6FAYzeYtqGpii7YPBkDoELtmOwMZBmr/y183ZuJ0PuNREDiSRCYqUEM54P2PzFveaH6c+9S089hpOGRubsLdm0qRL7jLfV0pYtEa88LxO5UeeanHw0aOi3Y6ejF3HDjXAw+UnpygFkYeBw++GBA= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 35ef30a5-1d91-4025-a3cf-08de5abbc02e X-MS-Exchange-CrossTenant-AuthSource: BL4PR10MB8229.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Jan 2026 20:12:36.3964 (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: vQMDaXBpisY3hj/Rh4Iy44cSF19DuGl1xA2vznDsFj3yIhFFem1vZ1z23xqV17NDvaU4fldlrX6t9NAdlTSOokzXz7i3CnsHfgEBau/63cc= X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA1PR10MB6877 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-23_03,2026-01-22_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 mlxlogscore=999 suspectscore=0 adultscore=0 phishscore=0 spamscore=0 malwarescore=0 bulkscore=0 mlxscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2601150000 definitions=main-2601230154 X-Authority-Analysis: v=2.4 cv=OJUqHCaB c=1 sm=1 tr=0 ts=6973d63b 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=xzpsKmUTARgMkXTVtp0A:9 cc=ntf awl=host:13644 X-Proofpoint-GUID: CetYCZmght7zbC4P9wLHCAENDNId-kc4 X-Proofpoint-ORIG-GUID: CetYCZmght7zbC4P9wLHCAENDNId-kc4 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMTIzMDE1NSBTYWx0ZWRfX2eU8LY7R3kJ6 c3QNoz0h2P1aLfB6I7+tKeb893QZri3Ykff907y3/HTBvJhkZbr6hZNUbdAqCtuhQhCmTELd7VU xsPJT2U09e6kEsk5ECbPv/QRxZk514p2qWStz97AdOLUVzZIra0CBAtojz6JfwjR6WOOGE04Cv1 l3vi05qMcwiTG2xdn/Fn2s/l3igKL/8BJNN7xithPAz+w/pK9X62Zxl0QvD4kaPfstjT2fPQvdM PupCBEbRsIaYGQK+2na2iMWn57QlCBI5sSQqAbu2H3iQrP6YpMbf2Pwh7252G7qZiU5nd4u1dq9 WyjgmxnRpKxcPQ/BxlOWZgT0r9M8dqrLs5JMBcW5J6mYCbNUDVHC/lRralK+4m2MdD/7w5T+qpM xNcRYyDaFIthm5AUJYEF1gvJwnAwnGImMTJK+i2YIYxoEN/WVc7N8XYTWqSKVqXcFu9liBzxxQT bl8kcjiUMCKLiqWuNv4JsN0Yvj67iZ3Io6ahPLhY= 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. Finally, separate vma_mark_detached() into its fast-path component and make it inline, then place the slow path for excluding readers in mmap_lock.c. No functional change intended. Signed-off-by: Lorenzo Stoakes Reviewed-by: Suren Baghdasaryan Reviewed-by: Vlastimil Babka --- include/linux/mm_types.h | 14 ++-- include/linux/mmap_lock.h | 23 +++++- mm/mmap_lock.c | 152 +++++++++++++++++++++----------------- 3 files changed, 112 insertions(+), 77 deletions(-) diff --git a/include/linux/mm_types.h b/include/linux/mm_types.h index 12281a1128c9..ca47a5d3d71e 100644 --- a/include/linux/mm_types.h +++ b/include/linux/mm_types.h @@ -1011,15 +1011,15 @@ struct vm_area_struct { * 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. + * __vma_exit_exclusive_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 - A thread is either write-locking - * an attached VMA and has yet to invoke __vma_exit_locked(), OR a - * thread is detaching a VMA and is waiting on a single spurious reader - * in order to decrement the reference count. IMPORTANT - as above, no - * further readers can increment the reference count. + * an attached VMA and has yet to invoke __vma_exit_exclusive_locked(), + * OR a thread is detaching a VMA and is waiting on a single spurious + * reader in order to decrement the reference count. IMPORTANT - as + * above, no further readers can increment the reference count. * * > VM_REFCNT_EXCLUDE_READERS_FLAG + 1 - A thread is either * write-locking or detaching a VMA is waiting on readers to diff --git a/include/linux/mmap_lock.h b/include/linux/mmap_lock.h index d6df6aad3e24..678f90080fa6 100644 --- a/include/linux/mmap_lock.h +++ b/include/linux/mmap_lock.h @@ -358,7 +358,28 @@ static inline void vma_mark_attached(struct vm_area_st= ruct *vma) refcount_set_release(&vma->vm_refcnt, 1); } =20 -void vma_mark_detached(struct vm_area_struct *vma); +void __vma_exclude_readers_for_detach(struct vm_area_struct *vma); + +static inline void vma_mark_detached(struct vm_area_struct *vma) +{ + vma_assert_write_locked(vma); + vma_assert_attached(vma); + + /* + * The VMA still being attached (refcnt > 0) - 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 (likely(!__vma_refcount_put_return(vma))) + return; + + __vma_exclude_readers_for_detach(vma); +} =20 struct vm_area_struct *lock_vma_under_rcu(struct mm_struct *mm, unsigned long address); diff --git a/mm/mmap_lock.c b/mm/mmap_lock.c index 72f15f606093..b523a3fe110c 100644 --- a/mm/mmap_lock.c +++ b/mm/mmap_lock.c @@ -46,20 +46,38 @@ EXPORT_SYMBOL(__mmap_lock_do_trace_released); #ifdef CONFIG_MMU #ifdef CONFIG_PER_VMA_LOCK =20 +/* 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; + + /* Output parameters. */ + 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_end_exclude_readers(struct vm_area_struct *= vma) +static void __vma_end_exclude_readers(struct vma_exclude_readers_state *ve= s) { - bool detached; + struct vm_area_struct *vma =3D ves->vma; =20 - detached =3D refcount_sub_and_test(VM_REFCNT_EXCLUDE_READERS_FLAG, - &vma->vm_refcnt); + VM_WARN_ON_ONCE(ves->detached); + + 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; } =20 /* @@ -69,32 +87,29 @@ static bool __must_check __vma_end_exclude_readers(stru= ct 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, or wait = for - * readers and return 1 once they have all exited, leaving the VMA exclusi= vely - * locked. + * The function sets the ves->exclusive parameter to true if readers were + * excluded, 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_end_exclude_readers() once the exclusive state is no longer requi= red. + * If the function indicates an exclusive lock was acquired via ves->exclu= sive + * the caller is required to invoke __vma_end_exclude_readers() once the + * exclusive state is no longer 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_start_exclude_readers(struct vm_area_struct *vma, - bool detaching, int state) +static int __vma_start_exclude_readers(struct vma_exclude_readers_state *v= es) { - 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; =20 mmap_assert_write_locked(vma->vm_mm); =20 - /* Additional refcnt if the vma is attached. */ - if (!detaching) - tgt_refcnt++; - /* * If vma is detached then only vma_mark_attached() can raise the * vm_refcnt. mmap_write_lock prevents racing with vma_mark_attached(). @@ -102,37 +117,39 @@ static int __vma_start_exclude_readers(struct vm_area= _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; + } =20 __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_end_exclude_readers(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_end_exclude_readers(ves); return err; } - __vma_lockdep_stat_mark_acquired(vma); =20 - return 1; + __vma_lockdep_stat_mark_acquired(vma); + ves->exclusive =3D true; + return 0; } =20 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, + }; =20 - locked =3D __vma_start_exclude_readers(vma, false, state); - if (locked < 0) - return locked; + err =3D __vma_start_exclude_readers(&ves); + if (err) { + WARN_ON_ONCE(ves.detached); + return err; + } =20 /* * We should use WRITE_ONCE() here because we can have concurrent reads @@ -142,45 +159,42 @@ int __vma_start_write(struct vm_area_struct *vma, uns= igned int mm_lock_seq, */ WRITE_ONCE(vma->vm_lock_seq, mm_lock_seq); =20 - if (locked) { - bool detached =3D __vma_end_exclude_readers(vma); - - /* The VMA should remain attached. */ - WARN_ON_ONCE(detached); + if (ves.exclusive) { + __vma_end_exclude_readers(&ves); + /* VMA should remain attached. */ + WARN_ON_ONCE(ves.detached); } =20 return 0; } EXPORT_SYMBOL_GPL(__vma_start_write); =20 -void vma_mark_detached(struct vm_area_struct *vma) +void __vma_exclude_readers_for_detach(struct vm_area_struct *vma) { - vma_assert_write_locked(vma); - vma_assert_attached(vma); + struct vma_exclude_readers_state ves =3D { + .vma =3D vma, + .state =3D TASK_UNINTERRUPTIBLE, + .detaching =3D true, + }; + int err; =20 /* - * This condition - that the VMA is still attached (refcnt > 0) - 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. + * 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. */ - if (unlikely(__vma_refcount_put_return(vma))) { - /* Wait until vma is detached with no readers. */ - if (__vma_start_exclude_readers(vma, true, TASK_UNINTERRUPTIBLE)) { - bool detached; - - /* - * Once this is complete, no readers can increment the - * reference count, and the VMA is marked detached. - */ - detached =3D __vma_end_exclude_readers(vma); - WARN_ON_ONCE(!detached); - } + err =3D __vma_start_exclude_readers(&ves); + if (!err && ves.exclusive) { + /* + * Once this is complete, no readers can increment the + * reference count, and the VMA is marked detached. + */ + __vma_end_exclude_readers(&ves); } + /* If an error arose but we were detached anyway, we don't care. */ + WARN_ON_ONCE(!ves.detached); } =20 /* --=20 2.52.0 From nobody Sat Feb 7 09:58:57 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 94028275844 for ; Fri, 23 Jan 2026 20:14:57 +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=1769199298; cv=fail; b=jDPUAlBrFSrqEc52eRuYiUwjp7norpnCMZkq0xdOYsHHIBH3hflVJGP3okPdGWcSL2bEWLI/SxWreMZCXe4NwcUu7E0nHvekFq3YDbB7QnAv7fLq2YIvhg32cLHuE2iOBoGJLI84KyXnbnwJ/F4LB5pib8XoqGvY02KF6O9iH18= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769199298; c=relaxed/simple; bh=zcemQFh3UBaPRGXNNmHo8YJrNt/O8+q8FwK6byGWVHs=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=fAx8zvSYY84sHcoTfWIRrErCqShomjGz9uamWrLz2/eEneaaGVtctTysE3GjMMnQc+vkmqn/XSYBzn7Xi76PzWl/IXFRNnOpzXyq9twqOlw3PtKnLI2S10/zzBp0W6hgWDfp1Pc0WCFfHplvZMmdEtvgX6Urs2RzZLeergQAk+o= 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=WD/+qxLw; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=zQERS4aH; 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="WD/+qxLw"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="zQERS4aH" 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 60NF7UJt2173055; Fri, 23 Jan 2026 20:13:34 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=T3KuqJx32leIB0fpbeGBrLLI5lncU0eEuCoijBy7kkI=; b= WD/+qxLwQ4zB8QOZ65JVNkoXFxduLlLrQyRJJry6lGmcrQA9HdAcIfxB5Aq9+ZoR kaFlDvcBODx8TbuWl/KnBIVm98ovfSC6L7R+PBN3lytExb41Woo1dGqT7s0U5eFX 9hJArDmka371ByaNy/eLmJOXzqC2ukR/OTLJ4ISb93jb5iEmRP0x68kSswoY9xZw TC/fn5rFOXN+euPQGfDjWGGTKnQPw9yMGXQ2hJFRbqLDZ7IBsrMAyuBwnndJdV/w z9cR9b6qgk/dElLR5SwdzQdcdOA2js+qSnksX8LX8T7q7yMEvqBMlwN9MDVd3vez YFaKAMY0mGDAhE9CrMC/xw== Received: from iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta03.appoci.oracle.com [130.35.103.27]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 4btagd7k9u-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 23 Jan 2026 20:13:34 +0000 (GMT) Received: from pps.filterd (iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (8.18.1.2/8.18.1.2) with ESMTP id 60NJQv5W024865; Fri, 23 Jan 2026 20:13:33 GMT Received: from dm1pr04cu001.outbound.protection.outlook.com (mail-centralusazon11010053.outbound.protection.outlook.com [52.101.61.53]) by iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 4bujd1xfjn-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 23 Jan 2026 20:13:33 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=U1GhDPIjDajvvU4lFWp2NUgPcgBgJj6Pti9qwq4YUS94VBFyyi+FTx5odESiDsvBnvc/JXH/QroSK+rsg1hhyXBNVzqquj54qUKhyTr3NYdpcFagWx0iT8PRlt7OyPvr9tGum1l9a/JJMEeE7T8UNwDgy2a1alQzcAQOkNy7HZxkZPrWA9s+xqK1ZH/7nBbLbsQKHlKWd6l1uZtyj4rGHxrYk8W+s0AFCotk96FtVHTia+ee/Kx5H9QFs/97fHdvRxnSsoVK9yy60s3LTbRxrTLTCbFzUCRTDAf6LnfJ8C0K1XZPgsJWcXzZEnDpHpt97dDcxEtZl84HVOAGFN8Nvw== 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=T3KuqJx32leIB0fpbeGBrLLI5lncU0eEuCoijBy7kkI=; b=dpMqZa5Ijjw/F1yCcm9i+ONoUo3QNixH2VZsd3OpTdfql3C1LCcqzTELyedtOKlExaIN3SyWjY1L5dHWPY259cmo1UFRzu6X/MOsRXLHT5v7QtzMPWa+rany6O6YsdiiPtVqeY2JAtKPUd67ly3tFAi0FS5Gb1CbHyhHAnbKspRwMj/UXbSunJnP78lJ6OJNphVcITpRbU6CwsysEd2QC5+c5OK5cxNxxeKKzoslnsNtQzjsWjB5pifADdPJs2BV+4zRjQPOGQYGC7zjChMaD9Ei9t9LMez/ZJQGwVjh2XYDN0VWUlcLVM2IshG/QrPV5NSD0JjqF9FpoFRVdzA2Pw== 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=T3KuqJx32leIB0fpbeGBrLLI5lncU0eEuCoijBy7kkI=; b=zQERS4aHltT3+kbGK0m6rCfgYgfR0zq7OUrQ2ARw4NuCQveSsWMnuyiczFS8wYQSqrgvb2EeVGR1ghxcnNHpx0nehHIRtAlQb/dyhmZT6Xzp3n5Gw0i5ja7/6Bv3aTW0br/vZcNUDxmY/tPHrzZIrAU68Aa7ooVqaBYv9jMI1xw= Received: from BL4PR10MB8229.namprd10.prod.outlook.com (2603:10b6:208:4e6::14) by IA1PR10MB6877.namprd10.prod.outlook.com (2603:10b6:208:423::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9542.11; Fri, 23 Jan 2026 20:12:39 +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; Fri, 23 Jan 2026 20:12:39 +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 v4 08/10] mm/vma: improve and document __is_vma_write_locked() Date: Fri, 23 Jan 2026 20:12:18 +0000 Message-ID: X-Mailer: git-send-email 2.52.0 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: LO3P123CA0007.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:ba::12) 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_|IA1PR10MB6877:EE_ X-MS-Office365-Filtering-Correlation-Id: b39aacf3-2bbf-4b90-39ae-08de5abbc155 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|7416014|376014|1800799024|366016; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?aXhqZq/g/sd2U7iPFcXleJqC3FwQ1emho8P1OdhCIvzagXoBhe7kk3x9Dyjs?= =?us-ascii?Q?kl7iVMLZCx10xl7683uPA5Bxyzi8JKNMwoVmKxpusaxdDiWnZZ1M2tpxIb+s?= =?us-ascii?Q?cHpil7XtrK+yrYA5dR9kBWPyUISyZeLdCNN0UViSUgFl8SXI0iKaIg98QxVw?= =?us-ascii?Q?TltfwhRKQrMU3Fh+dxHW5qxiGKHv0OanUOKaLcTF/SEvyx5yviXUa3HUXVdk?= =?us-ascii?Q?Dhgi/tl25uvmjuW0YXlOcaxIrMa14PDc+ONCdSjabFkHTM6EfCjT7KVZOenR?= =?us-ascii?Q?RACmJejyA7V0tgWwUxxToFMr5fG9+uVkLm1F7KGzYK7hXdTFxZj0H2khTFyo?= =?us-ascii?Q?SapQiyZBF8PAMoqrMnmz+k8gCXlfwTWy8RLrsbQdUl054IT8oSDCjNg7gzWh?= =?us-ascii?Q?F4Wcc7r9pDX6xY/M9H5cZojq8uizYZ5WSvUnpI90tylxj+9G74oCmHECof4t?= =?us-ascii?Q?yuyJds2nHLNNSzTg4aSJpFd0DcpiFP1y7VBMjvmsv4Xg0q3MrjZPb53qxQ4C?= =?us-ascii?Q?2MT9Mkr8/VYpXx6WoGeMEQWxhoh2pFMDUeXZw7g8oE+ivdn4Zq21uBEQG/X2?= =?us-ascii?Q?6bDYYJ+6hyFV+AFyT2Kx5rX4J5/yA/etEBARu/b5JoGw7SC4XJDAaj8s7IM2?= =?us-ascii?Q?pnk3G8j9mVIzQ4FrpSI4vGVRkAq3A1r6P/F8dn07IZ7heFaBlMRd/pxz8r3O?= =?us-ascii?Q?SKA22GTwOXCXQy2WNIISiTdO6GBduoSvRyPrv55jCtBrSiET8ouxg3/vQl2H?= =?us-ascii?Q?oHo9IkrlSw6TlfbxhVGH/AlyjPzWgRiIoNZGKtOI+egA4LMrKhUchcKNs+GQ?= =?us-ascii?Q?Z91VLtaLkVCfDlCfn7a0sAJy/dUd7JITptoTrW1WCrDQqzb37jC/sOXaPvrf?= =?us-ascii?Q?10rOboUCdbFRdNgqixoiRq4Yhuf/f/IKqR9Cjp5mWutDu4bcCVqM3Hr7X7xk?= =?us-ascii?Q?WWkpPLgRDum75Zcoux3PQBDp7YVxGFmtUqEaE+yS/n7qnObvKditnggBE8MR?= =?us-ascii?Q?phkFaMiOndfGasYQjxWjLpfvFJBQTZBRd+5pJ7ekLP2DB+EXpwUPCsSU8MbF?= =?us-ascii?Q?t54no/nbVNk33c0cGeU49hLL1/2mWGTqChemnNdboubsRt4NDx2MrtduS0Zf?= =?us-ascii?Q?gJjihyf9VfUZP0hqXb3ApURK/VMHVRF8mXeU01QdFdCHZg2gpDMI2tnHIFdP?= =?us-ascii?Q?CyGsRHwzBIwM50QzXXRzF9Ai3lkxIF9xmLZkWiNZFAr3vIRyYFsgmL/BQljz?= =?us-ascii?Q?i9oXGLzvR9N4NpffVDCqCrg7OfRk+MZ+TFvPRy21Fh7RtEmGoSo7+60IVr5Q?= =?us-ascii?Q?KTXFFioLfxx1kfpgHbmLjTAaONv2Ocx+KS9AacxH3UjEttovYZH4E3+tYIzI?= =?us-ascii?Q?9q1TF9i9hM7/ro6yOsvnzMMeI8F3dCEW0NS0Y1QlfWMtMiqHHppQPo7/JDqa?= =?us-ascii?Q?OdusSKhtt3NfgNzpFPHJk5oJlgxNxjLoVwRB7Q1dW1M4S1TKlaMzGSI8s1Cj?= =?us-ascii?Q?O4RVYmFHnJAcL5enRSdvCDzo/ZuoSnb5ML0LYMRV1722/fnqhmlen620Udrc?= =?us-ascii?Q?dDtkw6ikx1qWLQ1o+Rk=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)(7416014)(376014)(1800799024)(366016);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?koy5ieHj8fg+pb+h46cX3w4HUFctMhi0oaRDPv3UA7ESshIv+FUjF0KH1Gzx?= =?us-ascii?Q?RCZKOYuQRUnwzd1u06GMfg4Vy2yqMT6++2e7CEMM0CD9JOYXEJgQM/Wgj5M/?= =?us-ascii?Q?BRtJAyRdvc5/HWzX0TGgLyYpROeqEQe6VAMTcGYPAdL6P6mdN/lZqAFSoC6V?= =?us-ascii?Q?tjxQa9Lih9XrthGpM7Hbnie1Tnfn9JcGTaFp/tCUaZdtjj6mF+wucETsxt77?= =?us-ascii?Q?/kqc96xBVPXb9IZiahRW8BsjuwjqhyZcS04Ee5xXWJZksIM9ssPvG3TCJ3dX?= =?us-ascii?Q?Sb1Lxj22WcP9+6maKdF7oEMS2fKwfl6vvnqTTw69YJkEQleyfP4/MZK1d/KC?= =?us-ascii?Q?zNDnQH0OEl/xFqt6YfmqiULrMYxOUtYKO7Spxn+sBdgUgsv+Z/q7w1s1zGFg?= =?us-ascii?Q?iFJhpnWjOGRQW+Qwp1Uk/QJnajq02BqNHFvuoRcWYcD19848ZeAcwI3pOt2I?= =?us-ascii?Q?kosUi57taHiGRhSFEOxxTy51eL7dCA1bemXmCdv3Y6+38K25EL0aiPIh2IFA?= =?us-ascii?Q?0s4HrBy9Kdqn/0h9JCvF/QKjFcxpOstXV3+0xW4pCK/JVJSlLEcmT/Xt5tzI?= =?us-ascii?Q?z7HrvdhlD7LSiEYb2zS/714erWzUjIDvg4weet6sNBkLgbDlWsYIZjfh1ey0?= =?us-ascii?Q?cp8Z9/aG1WjogI4JMSH6iGilUbFr+13Ul2xoZYbxqD9y7p5ydjZEUspU9P4h?= =?us-ascii?Q?cEQP5d9fhe+F3KQ71pEvIXMxKH9W35CBUZNVAg+RAixzPOSGDQ8khH4j8L8k?= =?us-ascii?Q?s5mEZUJrWzj62ERIQx0YYHfkjummZ1zRm4QGs1d94s5grTdj5eNTTk5VTsy5?= =?us-ascii?Q?2DKyPY1Nd0QvjDbBoQMPob5xpGOqbR6yYHsYd6ruMmGFjiFUpbhDpJt7yR9e?= =?us-ascii?Q?CuxaJduYC8ov1YtyhYnZ7Cvv/faKxSLh8BhZiyRRR7oUzrxeiqVYmcu9ZZ9x?= =?us-ascii?Q?qOdPyIuIVHr0gH6zBuyt8nB4kbhOzef2zkU1SCAeQERLDiHzyJIYZV+k5tvO?= =?us-ascii?Q?HHNrQg8kXLJV6AmYC7lODpvZuojpSDUT0F2y5W23Vn22Imjx9CC4Bjwa86dK?= =?us-ascii?Q?5zuD8NRhUA++CC2d8lDlkur7g8La/j+bzWjM3aP9BMldQUjxV6YeDRxB3hmE?= =?us-ascii?Q?F/H0dGFN4lepWbVBQtCV4dCHDUK3+aPEKtne+6qM1lkwIwiVyD1jfoX+ycJ+?= =?us-ascii?Q?d5U9Juiy8hABypVWwrpaE1OvIrJ1aLA9/XtZ9wVAnWhpn9WIKTIxT255xZ+h?= =?us-ascii?Q?U9W2AhNiaHtaZzNv/dOr0dJ51v4rtO7GHVzNyXeMOw64fqX5SKdmayGjqZph?= =?us-ascii?Q?G97J9ngULIN3WL/tl9U1WmeT2NeQ5onrbOOxoUDllRlBecelySWQdVOhKbHj?= =?us-ascii?Q?ZjXj7xg/s0DufJkWm8uUqJXPalnCgA1EhNpxW3DS5VT4cNavOjKlrSvBGJEE?= =?us-ascii?Q?7dI46nTZD2/B8pfDPa0Tnx+uWR2JhusTjLy8g643oCa0DrUt3Mn/3KLK9iLx?= =?us-ascii?Q?FFV9DtijPLHuH8aDB4xhaqsXdHDZs6O8k0kaBVJmkfPuV3Mgz1bqCO2QM7sB?= =?us-ascii?Q?qtm/QBLd0QbZMKLO99c8iySsQ4Ok/WakGUU6ecDFuxVzDtijW9ajaB9Fuh/S?= =?us-ascii?Q?L/oj3NCz2w9ud7luduF/4u5PDVi6h8CxeUP46UfhMYTuS8ct3y41y0e1QfzH?= =?us-ascii?Q?cIzBDs1unWFcTj2rh9so/3/GLJA1WQpCE0irhtZu8SaE9iPOdw4nhM6K+FJM?= =?us-ascii?Q?nXQ/7rNB3EtV7nFn+CcLkppFKIdaQdc=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: F7zShFT9ZtB3JxTzau8BMG7uDZd14NkZmUQNOLfmfsebFaPXZLpmn5Qfi1V1J7TQgzIxsCWR0QcaC/tvrpkQqPd2tjCybGKJm31af+9yQUXqz8dn2uy+FCL43Q6K2sg2H9a1bRiB2s37Xyq09ABAoiwGIXq/kC8s6b7LV+oOueZTVf5N5GJmZxA6jgjfeKTcawuUaow9vFUs6RHpvbO+Nrcgz7m8Ya08myrp+xzspHu0/pFfgMw7VL8gRr6uY+uTToNbcSxLIIe/j8FyS9BFHZYW0Kf/otE3hgbm+kELAwFr1E5LqaAGpeObwOoeZpKXDEHVG606ZJM8EdnZnC8iu3VirRsgmPREv1f9nouyIoLrFEHvmO+VyrFrlsA0BkxfvGugb7vsWasUB/5/jTqnQIxvWCXcp1gJ/iKOhsLHscJUVs2pnDVEWRJhVMlZMzgPosie2Alyk+Nzb41OSOkbqMn/bmyTx9HTbbe+Gwrhi496LVNg6MgZXSOzwTfd/OYiE352r5f//VvGLPJi1PPP2K8z6puCiEKYE2KOnileQUaj1/Fb60inYLgY7JcMyZDla+4Z8Ame2KkV9Uj/xxuiKlm4fkGn833BDDnhQP2ULE0= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: b39aacf3-2bbf-4b90-39ae-08de5abbc155 X-MS-Exchange-CrossTenant-AuthSource: BL4PR10MB8229.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Jan 2026 20:12:38.3504 (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: pV/hH/yZse+cYo/HXW9LWknHiBTxtoMK31j8qZbR7SuL0yWa0EXul1sQrPrES6uVp/P5By6dANRQ0XWwjI6h6v4JqeHPuCP97gjSMz8zCS8= X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA1PR10MB6877 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-23_03,2026-01-22_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 phishscore=0 spamscore=0 suspectscore=0 malwarescore=0 bulkscore=0 mlxscore=0 mlxlogscore=999 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2601150000 definitions=main-2601230155 X-Authority-Analysis: v=2.4 cv=PqqergM3 c=1 sm=1 tr=0 ts=6973d66e b=1 cx=c_pps a=qoll8+KPOyaMroiJ2sR5sw==:117 a=qoll8+KPOyaMroiJ2sR5sw==: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=JWTSAJLagyWKeDSnsJIA:9 cc=ntf awl=host:12104 X-Proofpoint-ORIG-GUID: 9G5AwYFG6RlZIYAWjJ8JPpF90-NqB37t X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMTIzMDE1NSBTYWx0ZWRfX6Lw0m5m7zRoS JxcIz+MQZR5jQ+lv3HLvzyLISrNc0qnWNgZYzjX52urta1i6C246r5bgZvKU0tCkTGvjEwFwP4G 91lX8V8llAOmVuAN56JM4SL7FO9Q+O5gaIjjcmeF6f2G0cqctGz2rd2tGPufPwpODjdkc2gumxU Ymdt1opyAxmaXIiRX3dEcXJf3jz52R1JgOwSVcqGh8GpXg7XtI5DOsy92fi7LPK5o3UexkE2Djh aV+Pz9lKVNqCQNdGg6fA8ElCdTtx7GFUvvKlxYiBKN8FkM3ScHg/4aNJLxSRV+4HdLErMTe1KJo lP9YQrzx+q0lING3CGCwvFk+Z0NtyrAeC3spyQoW2mjaN9QwLz9qlhdtL1LtsmXvHPk5ti0Eav0 N+8nk05d7KjiVLk8bPpUUg8zicnpXJ+tXKG71N6AIAlbfAfYXLNsOYLhDgN3Z0nhuwpAc4mp6va XH4E5ZCQaG77v5Tu0jQ5ANOAm0pByruweTpdDhr4= X-Proofpoint-GUID: 9G5AwYFG6RlZIYAWjJ8JPpF90-NqB37t Content-Type: text/plain; charset="utf-8" We don't actually need to return an output parameter providing mm sequence number, rather we can separate that out into another function - __vma_raw_mm_seqnum() - and have any callers which need to obtain that invoke that instead. The access to the raw sequence number requires that we hold the exclusive mmap lock such that we know we can't race vma_end_write_all(), so move the assert to __vma_raw_mm_seqnum() to make this requirement clear. Also while we're here, convert all of the VM_BUG_ON_VMA()'s to VM_WARN_ON_ONCE_VMA()'s in line with the convention that we do not invoke oopses when we can avoid it. Signed-off-by: Lorenzo Stoakes Reviewed-by: Suren Baghdasaryan Reviewed-by: Vlastimil Babka --- include/linux/mmap_lock.h | 44 ++++++++++++++++++++++----------------- 1 file changed, 25 insertions(+), 19 deletions(-) diff --git a/include/linux/mmap_lock.h b/include/linux/mmap_lock.h index 678f90080fa6..23bde4bd5a85 100644 --- a/include/linux/mmap_lock.h +++ b/include/linux/mmap_lock.h @@ -258,17 +258,30 @@ static inline void vma_end_read(struct vm_area_struct= *vma) vma_refcount_put(vma); } =20 -/* 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) +static inline unsigned int __vma_raw_mm_seqnum(struct vm_area_struct *vma) { + const struct mm_struct *mm =3D vma->vm_mm; + + /* We must hold an exclusive write lock for this access to be valid. */ mmap_assert_write_locked(vma->vm_mm); + return mm->mm_lock_seq.sequence; +} =20 +/* + * 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) +{ /* * 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); + return vma->vm_lock_seq =3D=3D __vma_raw_mm_seqnum(vma); } =20 int __vma_start_write(struct vm_area_struct *vma, unsigned int mm_lock_seq, @@ -281,12 +294,10 @@ int __vma_start_write(struct vm_area_struct *vma, uns= igned int mm_lock_seq, */ static inline void vma_start_write(struct vm_area_struct *vma) { - unsigned int mm_lock_seq; - - if (__is_vma_write_locked(vma, &mm_lock_seq)) + if (__is_vma_write_locked(vma)) return; =20 - __vma_start_write(vma, mm_lock_seq, TASK_UNINTERRUPTIBLE); + __vma_start_write(vma, __vma_raw_mm_seqnum(vma), TASK_UNINTERRUPTIBLE); } =20 /** @@ -305,30 +316,25 @@ static inline void vma_start_write(struct vm_area_str= uct *vma) static inline __must_check int vma_start_write_killable(struct vm_area_struct *vma) { - unsigned int mm_lock_seq; - - if (__is_vma_write_locked(vma, &mm_lock_seq)) + if (__is_vma_write_locked(vma)) return 0; - return __vma_start_write(vma, mm_lock_seq, TASK_KILLABLE); + + return __vma_start_write(vma, __vma_raw_mm_seqnum(vma), TASK_KILLABLE); } =20 static inline void vma_assert_write_locked(struct vm_area_struct *vma) { - unsigned int mm_lock_seq; - - VM_BUG_ON_VMA(!__is_vma_write_locked(vma, &mm_lock_seq), vma); + VM_WARN_ON_ONCE_VMA(!__is_vma_write_locked(vma), vma); } =20 static inline void vma_assert_locked(struct vm_area_struct *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); + VM_WARN_ON_ONCE_VMA(refcount_read(&vma->vm_refcnt) <=3D 1 && + !__is_vma_write_locked(vma), vma); } =20 static inline bool vma_is_attached(struct vm_area_struct *vma) --=20 2.52.0 From nobody Sat Feb 7 09:58:57 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 862992D7DEE for ; Fri, 23 Jan 2026 20:13:11 +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=1769199193; cv=fail; b=b7cmNjOQsHjtY2yuW7LJVIKJhkaPIcTzH07RZrEy4hudh5gKHGGTEAa3tjYpc7L59cJExLTENl0x2O+Mo3JBlVlQIlILYED1TUKwlr7LdPeQqjEVVeTwpq9vaAVVolUuUmL+odGBt+h6JRyBExr8lahBrPfD8dvPkdQHlp3RDe0= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769199193; c=relaxed/simple; bh=XGlhIor/KumD8srlk+w/H171+pccvRFsn0B3pGMdKeA=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=K4JzG6ZlgXvWLulbYrRw5RzHAFsPuKQjbqfCBkCwqUgbePnPwQPUr5I8/SaUUm0lg1CGRCA2FuGEpDkbPYB6b1tFNm+2TtWTr5VbW+CLb8MCeEiqP/ilVWu25RD6ar/Gdp8frPoMzee3Sib/P0QSb56cQQhkidadCaCS10uyqv8= 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=FDSeldMW; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=kWbBOZdR; 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="FDSeldMW"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="kWbBOZdR" Received: from pps.filterd (m0333520.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 60NF7e9H2973460; Fri, 23 Jan 2026 20:12:45 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=47gDud7KbvmsdvrL1+IOi+cZg98jjbixyWYKeeebeak=; b= FDSeldMWE47xWGSzfOb7Fts7Kn9i4zNKx50sMitY3O8P4IEbtgRFAFEuH0BcaRcG jKyAyehVLwpFrWgGQ68wbjruUkqLZp7gF1BkuDsTkO6Nj67kDG5+IagHwhVgXPMm hLaCGeAyOadEwzucfmzGQzh1X4V7+Uot3wqne9PwHv6qaMdsyC96taYDeaentUDk u5RtM5cgs+eTY8FHZSeE/P+Pc/AvJb7rmEaKdXaWmXWhihxzyLgSKoajF5u/pryl KP/GyUskdkE7Ctt+kyJVXMokMuv9yCbtQ2FE3wrQI3gTrkThlbgmnTV7QFmpe7a2 PR4527U4I7fmHXdVp++WYA== Received: from iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta01.appoci.oracle.com [130.35.100.223]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 4btagcynpv-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 23 Jan 2026 20:12:45 +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 60NJ0iOe022514; Fri, 23 Jan 2026 20:12:44 GMT Received: from sj2pr03cu001.outbound.protection.outlook.com (mail-westusazon11012024.outbound.protection.outlook.com [52.101.43.24]) by iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 4br0vjmh1w-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 23 Jan 2026 20:12:44 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=mJyINRMq/YYlObKgtaE9aZKQDT9k17YD+bv7iatIuthwbt90PFZUBpxB6fX5qraajFAVlnuuLKbSokzXi9WAV5asQWX9KTKCHad7urkOkztRN4Iucza/j/oUbVypFFWamwhdIq0N5CO3pbCF4Pg40AbJLbU36FlAd9KSMfjkyJZ/2ndqNiZAY7mqyP4+L2aqLMee2+LgDNyCk5lqRca7kBBsQ36i14bnCToJSxfEE9GI1k+yvTD2Hq8AIi9HpZqzPHKpPeyHeLyIVdYdO/JyLjA5kPfYn5EVgIY3+7hgFI9qkKSQGCzOOiF18Q5KOzgzFrzIcYLzwyV7SwZhY384bA== 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=47gDud7KbvmsdvrL1+IOi+cZg98jjbixyWYKeeebeak=; b=GwNS/+Zz/WiDUeY/HvlVEwBYxSrEkLChKhNEixf9aAcar4o8tFNqCF9zrP7hMJ+XbVALebS0uZROP72Z5h6wxgIHwwFxPjLpNsJdx0eFciI9O7ShROADMHZTRGE9NOoYkxxTwmdeLRylRrTwPXWDwU8o9cjyZ0+m+wYIqEKVqV2VliwS4GkGH3C8p29W+Gl7UjrK7fb6zvvgPWw6M5TBkI1JDU1Bp7MogwRpIdFll0rCRO7lJixBK6UZ/wDfDvbnxhb8rfX4/IobUI7s5lS7EmpsP8hMsUoUsFnJEU+sbE2vDrNpszGPYZ6TzJ09LLg2LaBs20i4x9pS3BBtcWBvnA== 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=47gDud7KbvmsdvrL1+IOi+cZg98jjbixyWYKeeebeak=; b=kWbBOZdRPpJIxb/oXWaHsC6mgpjRcqfkFF8LdM66aO8ULd4XQRaXh2lcUKkLuAZpoFcm23A8BgPaWb2ZdhYfgPTeenQlpiRCHZNdOGP/JmvZCaZyjOM5OL1qg/72JnNnK1eA7Cy/wGmAYYljOw8Uxl2oj2uEwY7UGMM+LPmZ3lU= Received: from BL4PR10MB8229.namprd10.prod.outlook.com (2603:10b6:208:4e6::14) by PH7PR10MB6555.namprd10.prod.outlook.com (2603:10b6:510:206::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9542.12; Fri, 23 Jan 2026 20:12:41 +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; Fri, 23 Jan 2026 20:12:41 +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 v4 09/10] mm/vma: update vma_assert_locked() to use lockdep Date: Fri, 23 Jan 2026 20:12:19 +0000 Message-ID: <538762f079cc4fa76ff8bf30a8a9525a09961451.1769198904.git.lorenzo.stoakes@oracle.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: LO4P123CA0663.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:316::10) 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_|PH7PR10MB6555:EE_ X-MS-Office365-Filtering-Correlation-Id: 8374492d-7788-429f-6e4f-08de5abbc2b5 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|1800799024|7416014|376014; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?VmAJjrQWqvR7lyQhy+OD9nSJXnyAm+0uxIl0DRrDG0fXJXPPADKFCvamSTak?= =?us-ascii?Q?9rHRFSCghV6ngB5W/q8L7x/59KzXbBVqLLpxeSvzNdo5PN8UPGlNS7bZqeTd?= =?us-ascii?Q?egRZkveD4xsoRGJ5oc5W1JkL25bCp1yuOhasMllhplzhOpMp6+zKqK6fcq0s?= =?us-ascii?Q?upZtRdxQW5Wqu8iP430dw6bOLthrf27qzhlyVlCs9+iRO0c+DAQXU/S3IYBX?= =?us-ascii?Q?zmwREKGsw7XiV8K7dND1SuZN3z/kDYd1IlemU0baDR8LI523bMsv2WWiTzmN?= =?us-ascii?Q?7D4JlUqhZij5dfRDEpjPUZiJBCVqC33oc5WsEfHrx1FUNE0UwoJ81ayO9pvs?= =?us-ascii?Q?56CTgYjvWklOwRk+d0y8XUNJ+lVDxL/Na7g0biK72iwtoB0uk+m1XSPHisDx?= =?us-ascii?Q?6RKJHjfkzz7cw88RrV0hBiW/OHSNiUxrMzFg1CmLxvd/2J8Z8TS8R2qYIJRm?= =?us-ascii?Q?1uod/qg43m1fJ76Wey5YxudC68jk6pdQ05YFSXagSQ68lwNYpgkhG52shgNZ?= =?us-ascii?Q?isfZDfZ3h+9yOPqOzQcnioJnLg9QTmmy4irMaDRFrN+k9PnZJ637/1JoHGCb?= =?us-ascii?Q?WoqYZmXVXlIlzP830K68x8uShpbuTtaOyLPWcqu+u9Om5SqoVoOFskVS6HHh?= =?us-ascii?Q?gHKRFnc1s3/kxoOXO4lmCiYQaqYkez3WF/UVaxg0Mqc5xTOjgq11APL3Z3JI?= =?us-ascii?Q?Gis3fAwf9syBLqBYYmGx+g2bHvECvDbFjPEGJuHX8VgOGfvX1cfYWhwFHf2W?= =?us-ascii?Q?cGqV6v0Fqcwmqw+mBzzyp/1+wUKCodhS8DIU+FzhS76Pd3BOtebv5pCdmBoK?= =?us-ascii?Q?WOq9SOrS03lear1DU4fyD1UBjrszM6OnDFVQ2gRIKJbhYwogRZtMGfA0tHot?= =?us-ascii?Q?jCNOURrAJzR+vx8EiaTywNUZbXYfNVVZKemhm2aX9pHtXpBAojmtxEKJvR4f?= =?us-ascii?Q?yIrwfFhvm3vYbb0uBtAkbmFdr5PoEoyXoN21kWQAucWQbamdR5MYddMqd8aP?= =?us-ascii?Q?2pm1Ka3MVrzeTZ3TEtrXGx7XVLqKsDBKyigViILFSzysNCpY6tNzrxqZUm+X?= =?us-ascii?Q?vssRKV2Rw8kWoUxgAGaNSU7DZk1nfxNqGeC3LfGMc/Jxy1xoj17Zh7wa2bQ+?= =?us-ascii?Q?VRLxRTpatsFgYs1kX3NK7ewrafKxX0F4zrWzAAPmW+nKUbPZw+T12/7BsI8U?= =?us-ascii?Q?4lZyr3GTEbN3v8FxuaqUEnZnv6Lk6DJWdH45u1+NubvbhVPnW4+qx0tDEcsk?= =?us-ascii?Q?2o+azKcHSB7I1OymZHECuhPzjG/sqmgFP9oHh1XwUUAtx8fEwJBITpabgXch?= =?us-ascii?Q?dkgBpUze/PeOnAektsk9UYbRvSo9yFJ/d7qu4vQaAfg5G8LhR+ylW5h0/3t6?= =?us-ascii?Q?Fm2ERt/M6Iok1sFtwnybbrI/yfQEq133DghNvuTc/GhQLaO6qGO03f1pZZwo?= =?us-ascii?Q?UIoUzxJh5G2B0sqQIkRAU8hV0UIylQLHHqz7Od1sSedikxaTJIeHtCF1r5aB?= =?us-ascii?Q?KY/qFayIGG4AuZj5E+Ijb/BlCnTMBuoOfcgpVQjNPsxwz4pkNePqPKYX023U?= =?us-ascii?Q?1FQ3x5iDwi45SGrqRUc=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)(7416014)(376014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?GEOgVbFS/fLsxOwImrDFHLQQ6iwB6bjF4x18MI6dSYD81/RavmeG8hihp3u0?= =?us-ascii?Q?wk4Ua9SAfVyqDKlweRE0FEOq6MHaFliiBC8nfJyzRgv3j0QytSVHDkl4yvdM?= =?us-ascii?Q?pzVGGhCMCX3Ety8uhz39oSV3NlW4fY3jNnjgOEUN/p0KxKgFXqVy6xhGEyO6?= =?us-ascii?Q?JMpnoxTsUqpyHq9oEXAjdM+FSXQk/x/Knpu870Z4k98d7njx2/sXbn+EgnGY?= =?us-ascii?Q?UOy1DwKoowciVf+XriuJL6NhIbKMtJ/FIyIWAfu7YCFlRpqWOaD4iiaNV1QJ?= =?us-ascii?Q?+2Y8ec2oNqk3jj/gcSq7FaTse52FfX3q+FjpLjFYXX2QQyzSpLlh4zkxnGpR?= =?us-ascii?Q?LS87+pIkocB0e9peDGD7GuAMzNEN+5Pr1QPpJizzG9/WKGTLqFlIM9jB+IS8?= =?us-ascii?Q?X58kBwSxYo2E7E2X30U+5myW4Cmd/BvRvCPm0m1oPyV0mEzSMtzLbayvgjPY?= =?us-ascii?Q?Ceg6OIn/n9eSGM2pXwUzlDQemYYZNISgrvQGcUsOkuF8LhmSaHiU9KTZRmRY?= =?us-ascii?Q?jqGvz5ShrqejqTfJE2ncE2FSsIbhUYmVM9pTKt2D8yfVcFMPIP6tqsf81PM/?= =?us-ascii?Q?Vtc+IP2FdOByRHubsLTJTxraQ58t6mOsAN67cXVYnw+uceIEx6NUNo4fh1zA?= =?us-ascii?Q?uEboPaTC46+RlTL2JmSBQMLqLqYvfaubci6qu6JX3r1t0pW+B148Z4E0xF6K?= =?us-ascii?Q?HhO4fuCOcamKJ1Ar7k3Ggfm2piLZmzr0sJRvZj8O2hKjtN6rUXUwtGIyasNH?= =?us-ascii?Q?Gv4LzbGOk06CV/9zoFDeweF4Mo41SfaJoId4RpCPUvfL3CkjuUuVCco/Klrr?= =?us-ascii?Q?jKskKVHM1/PYlXng2cECBw1ZJQTnd8hyfzcgjbDpek0x5tzBzEjemUVJlJpY?= =?us-ascii?Q?G4e2H5XEiYuZcEsFiA3+C8y1y2Vb+JTPSzu6X67lPonn+nbryveWAHovT+6b?= =?us-ascii?Q?CfVPHLHo4UGSo6eZ5vXg8W1JjAhWjna5FpFMjMsmNyX9K5EP0G85WcEBzZ6u?= =?us-ascii?Q?5UimDQvRN6Dy6krWSHlKpLVTjQeAa+26BrtPcxBONGhghZHG2R8Ira+UDtdR?= =?us-ascii?Q?DZiIXdSViZJ2YZ8tFb6DhLyUtL+I+N0pPzJh6XIp0/YFWKfxYItatvCUlsyC?= =?us-ascii?Q?e9aM6Swzu3frDql72nzkuz+MtdFJRZSBlZ7KDUqFkX2etyQVDPxmXoaA27xI?= =?us-ascii?Q?BHn9S/Wn+eKdqlgKYv2YELOduX8HUrkelT0HUIFBZ+IWNwjAW2S2pI4LMkaF?= =?us-ascii?Q?KEKukaDbzcUV/CAnyOm84Qg4VggVCKYUwZrdM17M3uJ0T/AINqGzC5nsSIAc?= =?us-ascii?Q?5RhgU+VjST4fMtDWWFpSyXP67paCM4jyUtb5VO7Q/Ntxva/4VF7rYRZ9Fccl?= =?us-ascii?Q?A+CVxXABjZjWrmVPmmtN72ZhZoZI3AFDNY/uzMq46PUuyBPQnCse73p/49kV?= =?us-ascii?Q?f7zvumDJC7Z6uATiSa1/Q5DFOzAwZULFKXve+eKzJsn/b2VU8mqdIeKwfZC7?= =?us-ascii?Q?Jla53+Wyu2DTgZrIgWotw0NWtYaFvedPZMNITZFODdY0FYAMlSzwG9zc9Gsr?= =?us-ascii?Q?79Qzmcjyt5N4/k+ise0gaI/u5evGLNbUYPZ2bC0AHXV2ueWuuIZVIL0iCBcg?= =?us-ascii?Q?uDPnRFj9mdsIAbKhpP4kKZK4sP/k/C+KWX1jzZzeg86qJYlZD6krEHPfwUon?= =?us-ascii?Q?+zl0WD9ULJ7cCs35B8mvkCdnKRKdnMMA6URaT7ZQ3yxVJGOAHH5aYo3S0U7a?= =?us-ascii?Q?hIUnT3AT/8CajJWoaucjze39wIvPG9E=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: GffRX5BNZ9yAHTpyawPhu0SZJOFEwv+c77IXUsgoerGiXRnq3yzT8gLuduPBymGzaXLI/mRs+F2X/pNaWrkrAXoKOfiboGP7I3KhhORVxrSLI2lnnIwRhjKbKbwE1db0IR/k0uO4a+sxzj5LT86RMMx/vJDWi1vNzjFR9sOqeDO8hANLtgTkEghqpzBC1fQ8sgjdNEkhbQ0LgbC+ebakVhF20u+KzYK2w7mmhMMZyhu9OcNAcBBpXaaevbhuaAXN6C7emud8CyFVfBnSki55y1mCBXZqC8444M4DTCzUVjsHhGY5PheLRaO2BsEgeEkiSHGP/WFquy7lk7LXdMa6iwfnGQNwirGQlRPnv/f6UieVGFxbYMwioZBWomGH6BddUXNM18pMfPezHxY2YErKop2mFuza/dEbaJJNOnTI0DVPsBmxjZve8nvKnHP41Ps+fYPCVucbm0PAy05RQWkIYni9GU0G/Gj9RsFiAOQd/kTEErtOxLyaBJ+8uO3TdANf+DNYmtDhK7USxfTLCasklp5xY6uKrN8aKSK1Jc/8IdzgI0nU3KNEDuUS9/luv9nIfpw8eRt5Ai86Y2xW4qcc//Vc6ufeVv5bAIHPKFJaRQU= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 8374492d-7788-429f-6e4f-08de5abbc2b5 X-MS-Exchange-CrossTenant-AuthSource: BL4PR10MB8229.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Jan 2026 20:12:40.6264 (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: 269gVi6p06WFC7jQoEEKcBxZUWcQnI88iSHjhxazQN1F2DVlgaFj8uBFUqbz1NyL3CkoFLAqSa/nkI9UmDLBHtf7fBfTuw/uivw2rR1TS+M= X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR10MB6555 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-23_03,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-2601230154 X-Proofpoint-ORIG-GUID: dEtBI5x8G-CtQArbqA9pUSPMt-KElKo8 X-Authority-Analysis: v=2.4 cv=IsYTsb/g c=1 sm=1 tr=0 ts=6973d63d 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=1XWaLZrsAAAA:8 a=yPCof4ZbAAAA:8 a=t-UrVdh-U0oxC4GB6fEA:9 cc=ntf awl=host:12103 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMTIzMDE1NSBTYWx0ZWRfX5Eewi1HV7BL8 ZlwTIB9bYlKncutMGr48BKrKKl8/uqrRaTYaLgSwQPcDlH4+1LF8XS5eFfBWHWDngHs/S9w7qOi 5TDg2FWE9qJXyJ2eiM5wb1NVrqgYvCFu/4eYCAWy4+wvGdgBugIy5mWzpHWBtm42A1lnLFk+Q70 IlBpLDbjrUUpfRR0BLMXy/5or1/hLfjsAdB8GXd0h1LXjZgoc9NxzwP7HslxqsewPlyMFNaI2LP TrdlrqAWiloGRr30g4mWO/2v18z1BPS9qFVez7+jNAITgLXsctDrQM6gHshNV0TRONvj0w0CHUL pn7Rp3byOybeANMe0Bt/lXix9/yps9lty8t1nL1eO+e1r/It8Xprl3Fl0KlEejwLFZauDXMgHyR hEke988s7B4G0UBokQO4d3m5HQdezgH3zHjO+TcAqTnD3yX2ZPV/26AGF7oYEVZJbEdvZVC+v5e XvXSdy0rIciMJq2dQ4hTbYnswIKJ9DgvPpbHiBO8= X-Proofpoint-GUID: dEtBI5x8G-CtQArbqA9pUSPMt-KElKo8 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. Reviewed-by: Suren Baghdasaryan Signed-off-by: Lorenzo Stoakes Reviewed-by: Vlastimil Babka --- include/linux/mmap_lock.h | 41 +++++++++++++++++++++++++++++++++++++-- 1 file changed, 39 insertions(+), 2 deletions(-) diff --git a/include/linux/mmap_lock.h b/include/linux/mmap_lock.h index 23bde4bd5a85..4a0aafc66c5d 100644 --- a/include/linux/mmap_lock.h +++ b/include/linux/mmap_lock.h @@ -322,19 +322,56 @@ int vma_start_write_killable(struct vm_area_struct *v= ma) return __vma_start_write(vma, __vma_raw_mm_seqnum(vma), TASK_KILLABLE); } =20 +/** + * 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) { VM_WARN_ON_ONCE_VMA(!__is_vma_write_locked(vma), vma); } =20 +/** + * 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 refcnt; + + /* + * 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 + /* * See the comment describing the vm_area_struct->vm_refcnt field for * details of possible refcnt values. */ - VM_WARN_ON_ONCE_VMA(refcount_read(&vma->vm_refcnt) <=3D 1 && - !__is_vma_write_locked(vma), vma); + refcnt =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 (refcnt > 1) + return; + + /* It is a bug for the VMA to be detached here. */ + VM_WARN_ON_ONCE_VMA(!refcnt, 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); } =20 static inline bool vma_is_attached(struct vm_area_struct *vma) --=20 2.52.0 From nobody Sat Feb 7 09:58:57 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 0F64419067C for ; Fri, 23 Jan 2026 20:13:11 +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=1769199193; cv=fail; b=CLyjLqCzrMNME/UOMB054ogg83ScPmRrPr3d3a1JpAK9+cgFeMG+tpKF3rrMc6CRe3ehnt581NsRud8bZBoM+S2fsdoQyM6FZiDp9CMQt69ayy6NiC4nphVX5tINRrgzKFMPaey/chTyVw1N40RlAI7arfNzkT79on/MmDQyxS0= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769199193; c=relaxed/simple; bh=XbFhMes/Iu4OulgWOLxLIFfjXyghiRADtKACMyvrcQ0=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=C8iOG4SqzbdicRikIVJAGma8nmLSvZ1ulWqdhgEhkIId9hhYZFBK4fEbrqALtNXbx13JcLTjwZif+DlIgGi38wi5soDa5BGebmGNpTbnzhdFBel+G4AKrXJugKwbeT+zcFL9trERlSDnbiSSUyBrFvgEbegBhC6jiNRNPCLw9F8= 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=c2IFA8V+; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=SH4QMJll; 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="c2IFA8V+"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="SH4QMJll" 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 60NEQHZ62405273; Fri, 23 Jan 2026 20:12:46 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=3p5SP+1Wriw8mDDMWvOT/aOkh2Wtc/2J3Ux09Vp25mY=; b= c2IFA8V+69pmVt2MOu9cjeIKEdEfDlhXiyJ/0CDT5APzgzv8FwYuRWd5MR4k8b9P mgcc/Ayas2qEoRzPmSrXDFLLp1341sfDDjZNtoFvX/3qCZe527YubnNEww8tNLvL +SctbTLvVlb7bpgmk7+EGOl2T6lSBg8kBQWOZDjPkRSgsCLFhsMp7NRoEUXmCqWs 585Guwu85X0NCUMeyf65IstwJadWe6W6fwfT4enggGrslOj5DVIuA12ZsP8Vg1+9 58IVIW51W8odlfCnlJtzSKrYgnMwf6bUR68Vlfv4zBG593sqdHMaxV4O8mIvuC/R gI94Bqa5xkYczB4wPkdDJg== Received: from iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta01.appoci.oracle.com [130.35.100.223]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 4br21qk7ch-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 23 Jan 2026 20:12:46 +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 60NJ0iOg022514; Fri, 23 Jan 2026 20:12:46 GMT Received: from sj2pr03cu001.outbound.protection.outlook.com (mail-westusazon11012024.outbound.protection.outlook.com [52.101.43.24]) by iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 4br0vjmh1w-2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 23 Jan 2026 20:12:45 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=cMnd0hf63zDm+EZ+4XHB5JVjPQirv9SipA8kTJsoVa7lcawsX0hctiq9mrtcwOPsu7rPwGsAJ6CzMMzADmkRfpuvMPXIUMX/LKcV7vguD4IlPW8PBLWwSsJHdiMfDi0mp+0jO1yBUP4FWzkYPVcdtcWE2QdbijdlyGkFsgaZ6pQkd7DFEf6GdAvVNAU5Kld1wZYyshp4jkiWA1c/9hOAQm1YRyETzU4k5jZcAfTmYCR+9W6hNICkkETtWjOROs85x8ww5hylOeVPSxheY9/2rd8HbXWm9d0BkaoxyDGYYihECGC0EOhu6z/aDkdN9YkApLEK4PUEFtemKRq5++uPQA== 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=3p5SP+1Wriw8mDDMWvOT/aOkh2Wtc/2J3Ux09Vp25mY=; b=EmxmsfLAe4b3DrRamuf0GenrOEs0FFTpCP8FHsg6OR0//D/XWEwZNClyS8QLseSNihnHQXbcc9Q43vCq/DakxyN2g7GSZg5SWqe0NUwVUR22zmbiGZY5FhGIFw41A9cuqdGz8h8MoAF9t7vk+JWurHQ3uOsT87r2k2gaGS4DwRGEfeJOu8zBYBe/2cE6CEgRbKWq9aHeb9s2ZRQE32gVC5R+v6W11vHrwZOUx43vJ+NNhhC/cw8qOk1KhKeuneK/MZFadGmGJboy+FKgtru0JFCowJlB1gIu9MYg3q+XO9DoQ8qaz1oS4i9IAXTTVP7/078Ii/LVhtidisXXijqxUg== 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=3p5SP+1Wriw8mDDMWvOT/aOkh2Wtc/2J3Ux09Vp25mY=; b=SH4QMJllTEvPTyKbOTUrVilxPgyx1/EkSQqRkszzLu36t+RusL482C1N14kYq7/ivpsI/FRdGK1pudJQaXmNzqPkLYE2byigDZ/tnvLfSgk2C1+yzLu1kNt6U0VfoFyjaRN7jdHKDS1rS6X4Je0vWxcBqe33pdicllO3NPVeaHg= Received: from BL4PR10MB8229.namprd10.prod.outlook.com (2603:10b6:208:4e6::14) by PH7PR10MB6555.namprd10.prod.outlook.com (2603:10b6:510:206::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9542.12; Fri, 23 Jan 2026 20:12:42 +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; Fri, 23 Jan 2026 20:12:42 +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 v4 10/10] mm/vma: add and use vma_assert_stabilised() Date: Fri, 23 Jan 2026 20:12:20 +0000 Message-ID: <6c9e64bb2b56ddb6f806fde9237f8a00cb3a776b.1769198904.git.lorenzo.stoakes@oracle.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: LO3P123CA0008.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:ba::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_|PH7PR10MB6555:EE_ X-MS-Office365-Filtering-Correlation-Id: e3cd37a6-1908-4b44-312a-08de5abbc3d1 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|1800799024|7416014|376014; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?WNfSlVLwEhHlwYcRvmCahyoBqIsfFxCV2nDctFXSKTIJhrJE/geT7DhSFuZe?= =?us-ascii?Q?NwxxahnwWlWupxkcYkQRQzMOLsBrj7XXxF59FGW47dqS8DGHSe5f+mh4GsCd?= =?us-ascii?Q?v2Qyfl8Q9zn7JUmXL8UGRsXBr4sboxkt48BdSS9UMS7DV/GlAZFiJH0ZxYLV?= =?us-ascii?Q?rGvWt71TkoF7Yd6MhyeBQl6GJVxY4id7QlnPhm3O+KS/ZXX5nnApMcmxeFOX?= =?us-ascii?Q?BI7YSwA2UCI/oSCR6SrZqkUzGUcpSx5W3gnSSVk60FDn1YlhXKJMzUYUCuBE?= =?us-ascii?Q?iEO5ATGdPSivSi+axHClHAUhigCRpsSQGdeM3HIGJyZf5dXK4Q5NBy6qTyOZ?= =?us-ascii?Q?fW0DqwPWn0G9b9hSEnBL8PGy2FPNXqdwRW60eifdV9+cNv+RCktXjDBxpX8S?= =?us-ascii?Q?5OOIK8ZJVQW+PVrRqYoeObsPFMIZH1NdLU5gUhy5Gi8/Iof4O57rG5tIH1SZ?= =?us-ascii?Q?87W17Ip3DQ0IHkvPQ2a7c/TzLwNV1MbLOzj/O/hWssZN1g2QCoj8mRuATFQE?= =?us-ascii?Q?zko517N+slvhgJXATV3fw6plgDrkCNSwtkqEpXdi3kr/h9LqydHTgxBPvvbW?= =?us-ascii?Q?l732s8EihAmM+cIHwrEVm0gzOKNhsrEU/MGH1bGs7IwJ8OvlbTG4NyC5ggRL?= =?us-ascii?Q?yPlWCDV0GP3k4SaNfpNkzoYH+kh/mx7I7Ui3vLfVFUXUJKtNwvsUAyLeLSMx?= =?us-ascii?Q?PblmVAt4WP3SP4KlT+HcVgHZGjWBH6XS5ZqA80IjGIYO9MKt09SvLHLO3V9Z?= =?us-ascii?Q?AZQjXqJ/CaFHmcBWT173b+NuwNTG7GquIdpQLCxJqvrK2Rb6NdrAD9JxB1ap?= =?us-ascii?Q?UM/QK2PTpaLgBlCOATmACfZtLSTxbCVSVPijXK4aemyX9YJMpJKMBjnHyKSR?= =?us-ascii?Q?lIrYleGiKMw/K3XofAC0vizHwEEIwhSUUi+fqPegxlD4obzBGjk3HbKx8csK?= =?us-ascii?Q?9q8SVd/q4NGE0L01d84O3L2k8sZXnzR+RBQphn6XH8amSZ4hgQX/eOV3dVQq?= =?us-ascii?Q?acSPAIxlhJTtwpWnSsPQVu+KGUfGGMjrVQ1LxXxb4OdfHSBxW1tsFb3BP1cP?= =?us-ascii?Q?4hZTtqr1LljPOIFAgOG84TL4uJu5rc9KFBvrS5WlzBVjWT3d1QPkEsK8HEMM?= =?us-ascii?Q?doqltUCWh3Q/IM0CIYo0Td6F1UhyAMxqHl/601vkHuHaH2qTvTTKrhWK+/p8?= =?us-ascii?Q?EyEUvu5RmA4qkz4T3BpCb+c+9faVpPGx9l81w7N3Nbv9JTf+RZG6QuVIGhOS?= =?us-ascii?Q?kKphNv0oygrGarV+dzcbgfMftKxFNPH9pWEZ5qEMIBOvubPJVqX4WFiUIdcb?= =?us-ascii?Q?ISJTlMaS4Nvjste3nWtORldjYhZce0SNbHv61ey8A6vJzav5kAYvJ//tYf5i?= =?us-ascii?Q?mqO97kiEPTA0zMNfuhwR2wo5DfjbKaHgoF8NlNMD7Itaf+wwTVvN01FSnpGM?= =?us-ascii?Q?fiIXjnRrnGt1mN4mlcEr40jXqwv2Py3do3gLfLsG+r8CRFpxsnJFtmSkJmSB?= =?us-ascii?Q?MuNkro0qoNFN8e/t5C5K6h1ZqNJOoMRe4wwcVwAoij5cYlpYw+94lgppYWXR?= =?us-ascii?Q?9dPk+It5jXh0fa97j5w=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)(7416014)(376014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?BlgRSaAK/PYBTEwZ2VWaOtXjKeABTvnHnOK5TVGRt6PXBtLJ2oDNcvuAi8x7?= =?us-ascii?Q?y+PLgxqFGafJ14dQdtjfFowPiGPDXGsLsCfdZZB2tGtEQ3GtHYl87AB1dIzD?= =?us-ascii?Q?KpzubuP0yOPND9LZdLqWCjH6SZ+/s0gq/9/CT5roY/PKB97oRLxSkrBUDsSR?= =?us-ascii?Q?FpeFsCRNpwl4qnAlbEoAO7IhCrRCj9s6ahNfZfLr5yHFJri1YSKgaWJyuofe?= =?us-ascii?Q?t3j1+aRuWqwzL/YNQPqWJrQgABJ7d+uWadEA7Ov1BXnJDh9UFkfqDJpy6taq?= =?us-ascii?Q?KBju4WX+eSnMhJKdBdhXxdtjXeTEDYhWkILPVYzlNs28ukrBF/w7uzBQ/1Ds?= =?us-ascii?Q?olYmV+kFAXg+OpAW2A9RpRh1auvHZumRqiOQy/SY/1lXoVTUtHtSPntjUUBR?= =?us-ascii?Q?9ciFIRkF/VG1NMXs24ORtC76keFKk2mjIRSK83ln+Z8YjhJgFaSs2owZXweO?= =?us-ascii?Q?eGooHmlwdR5QMB5CzjgnaQ7vEw7qu+IS5dR1mlBUwqEkKXVEz5oK6e+v/0/R?= =?us-ascii?Q?2PALI0utSMGMM6qXoeEn76i6CaJ2Vek2TnJ4xNnVma+3bdOL2x7AYoVyo5Zh?= =?us-ascii?Q?VdhMWPBjPqi/LLgipVrzmTp92QITCG0N7u67X/+Pwpafcb+PUIqPeguKP6q1?= =?us-ascii?Q?YhqSHdRtukIBf5Y5EGx+Zyh4vNifAn+DGc5bch+jEOuUByKeo1WAthK5fUC/?= =?us-ascii?Q?q6FFHjsf0eI6sbLy3IOjBKo55QFoihluk+wRwlhul7bh8nFQ6EjKt8wjLopG?= =?us-ascii?Q?HwAzOn1sHOh9w83tDjlzlVNEZ/G3s/I7RJ2lP3oEBz3XRYaaGl5tC18Yq3ni?= =?us-ascii?Q?mJCAmN1T+sZ5SxKNWsMLMfbSUi9iVMeF5LV0eqwPkxuarNC07DFczRKQbd+S?= =?us-ascii?Q?sxzGubfG+4wGRR7XmQRHREKwn+hvTk5jIHKzpxndPwmSZxriFG+xdZAHfLWB?= =?us-ascii?Q?yyMmm+5k1G7coyD5X/uMTYIygvjdVa9zMsVAkca0bbPZLn0egAR/4TAIq7fM?= =?us-ascii?Q?Uyl+J3/284DUxaKgSNzNPYF/GA/TdScu1KqDM2Jsu9W5WCllIx0BTQrNo+PB?= =?us-ascii?Q?ITDVkRy56TdGwSixw809Ent3LMUNceFPRcz7x49kj7J7ALKdn/9mNaWS0RI2?= =?us-ascii?Q?rAcJnu2eKAaFSSmBLp6Qy9FlSu/+Sa0kprqaskOiBwL8oBCC5ihoQi62iANv?= =?us-ascii?Q?6Pn9AV3Omv39OctHZvTbyvIM4HpPm+f0vFieJBSU6wkE293fBc7YcgciV07U?= =?us-ascii?Q?nC1ZZlJX1MgTr6BnMjUyufMQZhUB+gTx4l3LI1eXM2teEXkqRYeTRZk2u6xF?= =?us-ascii?Q?EPkP3oIoi1tabAqnj1kqz9JD3xnWpY82ij7NGTBg/oWY8T2ZP3Mdbuwcujd8?= =?us-ascii?Q?PBGrXDDy2CJBtsfVSkToPm7IpSY4N2XzzuQFeRlPeU2vzTPTzFgPNWi+pSv+?= =?us-ascii?Q?ukDe4MlX9sHDo7hRHd6WIomubl+QoYqpuQ4jar3XepeYgSINQPsHa5qPwJ0L?= =?us-ascii?Q?aE9Vr7IF+GzCASQ7DAcVcqVR9rSoesLdDoCgPC2GFzFUJLCnI5xDP8FhX7JW?= =?us-ascii?Q?LlSXchiBv62iuPD92GSzV4FLISrH6xUjLofs76IrfHo6NZBSH+D5D/6wDmtA?= =?us-ascii?Q?18gNfcUFSWfuoqrjSIQloRHkmzttpcw0XRsrMQj6ssL4yBlzyodZ17ReZAW7?= =?us-ascii?Q?4WgQAOgPQTOIIhEdAs4bMFypALVoo9nP1T60fwoum+evBaKUPY6+nLBFq73E?= =?us-ascii?Q?woj7X1BAKBszGzQv+HPtTk8EyYOTfA0=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: etIi+sbqrEOLgT8xmc4KkpCxN2EAcSZV1mgFgWvGl+qnrC6rfYfsjWzAd9LGBc/oszibE9rYlQHu0HVifdY7zI+Lgj9YMnjgntMM9ZIbxsMI7FHOqIlyEjdj4yjHuOEXyXXlua/4BD2TZeiHONL3E0gn5ScL8D5ya5tZoXPOzzMqvXTHSJv6waCypXD+/mmPm4HHZ+2jVBejkmwYD3015yYudiiIzgNec0SmGpKmxbj+MTvzIBiAssnAo8JgyrUiVRQc5W+v+KFbmw6lHYwufUQuVgqlPYgZNoHvPgLldVdbJQzTroBt586O0N/rWN9W2K80IdCBTsU0MOwuYnC1U0VSGra6i+I8WVOGw392K3BfBv8yhpUsLDkh/hcg52KXohJWtqz1Lo1pKz+pJqyefB9icOQbfTnUeDKChg2N6zmkqV5HimzzskdoAgzXHF5iq25vCc2Qv8tI1RSNNJyfetMOC/MZjTicCUEcxY9S+cIHvNYNUzOeoLHsT2kzfDIVq5lSixmSf/DS1MSCHa7C46OxgcHc3mA/vbdFa+mB5+BlsNQHr+DWKVmSVxBLoh1SQSa9F4QXIrgs2J1xePuFXjU6bUFm3o9ckaSiFtAeMSY= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: e3cd37a6-1908-4b44-312a-08de5abbc3d1 X-MS-Exchange-CrossTenant-AuthSource: BL4PR10MB8229.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Jan 2026 20:12:42.4675 (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: QcBNdcW3jbtqdGq57PrN703Ugf8V5BGgqwvBYmOhaPcebQSXBszG7LtkHLKp69E/EKwHiNYuFX2EoSatGo86epQrxOErd4w/cVvci/LltHA= X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR10MB6555 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-23_03,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-2601230154 X-Proofpoint-GUID: KtkPmpKtUmQ_axVhYk3x2vY4ak-BYZvh X-Proofpoint-ORIG-GUID: KtkPmpKtUmQ_axVhYk3x2vY4ak-BYZvh X-Authority-Analysis: v=2.4 cv=QdJrf8bv c=1 sm=1 tr=0 ts=6973d63e 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=1XWaLZrsAAAA:8 a=yPCof4ZbAAAA:8 a=myXMqSKX-38MvfvLfZoA:9 cc=ntf awl=host:12103 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMTIzMDE1NSBTYWx0ZWRfX85VF0euR5hdM CwKYdKvM4MBMXr+q4bFR+NrjctLFBRtQrbyslYsDBBcUQpFLcAjFbFl7HqzHWi/RBJ3iirBlGqy Z+kuJjGyhwVeZd9d2iYCVaVkyTmvISSOX3WKORMSgjgE237D5m5cmlTopQl9FjQuAzfESTslLKj jewV/7l6kS8ckxBt3lpg7E9jPIQxDftOoTyYQmJ9ENn4AuqnPNlE+0DVACPV7gthC/74st2fzOA 57HtGRaUOEXm707NQL99uMe7esdSeRPbqLfSAnH4HpF9og/2/kFoW7TfGYjCiCC5w2IFgCv822O DzrsmtfYBmuc+PLMwmFI2wZb0iDCP3X/ap3dw6bEBgIJi2dpQdCyYZx/mIgmpkO60gMTDfuoaqx nm9Wd4vVrJ0BjWs3JXJkXebsiWlCsIH8VylE6/mzk/STNHUf94r+PBNgQsATlIqQAs5bgZqZi7g 8fNUJMC6MG3904i5lF6KBzR4D6b4auJIJW7JFNis= 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_stabilised() - 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. The only functional change here is adding the lockdep check. Reviewed-by: Vlastimil Babka Reviewed-by: Suren Baghdasaryan Signed-off-by: Lorenzo Stoakes --- 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); =20 - /* 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 4a0aafc66c5d..8e31c5dd0adb 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); } =20 +/** + * 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); @@ -476,6 +522,12 @@ static inline void vma_assert_locked(struct vm_area_st= ruct *vma) mmap_assert_locked(vma->vm_mm); } =20 +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 */ =20 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) =20 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; } =20 --=20 2.52.0