From nobody Sun Feb 8 15:58:01 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 49A7432D0F9 for ; Tue, 6 Jan 2026 15:14:47 +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=1767712489; cv=fail; b=LgGpODFl6FXeejV9+5WnZQtxePk24vLODvRDCykgOui+nFb1nmYP6/aPNXPj+aQwL+h6TT6DPuoWM/NVuJvsuVQpgd+EDHIagJ2W70aqRxXd6IidReumYn1C+L60jTlkr3jaK81yZFvNQFH1XDSFm6clIK76WiBSHRuwAE5SiWw= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767712489; c=relaxed/simple; bh=Ni3CXwVx9LaInbvqoho9QpGx7CPxyR0yp9cif4M9kYY=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=By4ZHImlA6+1Z4gnrA5ortZxmhfC3zaAuCbVj1bF7QH3FOCeFktAUttqBxmyZcFSVpejbUUdah4YAKlHwk97df/vNr8tsJO9eSBdACKy1sSYpMeRoCMTrKcL3+aONsUfCDFG576eI5Vgpvv3UNV4Ly7ekrKkl4pKfnKHMV5k7W8= 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=TEBOrC1L; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=fFRLQdfg; 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="TEBOrC1L"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="fFRLQdfg" 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 606FAiN03790980; Tue, 6 Jan 2026 15:13:24 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=cc :content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s= corp-2025-04-25; bh=p1C0zY+O7l12yX6TvykuGk6S+sKiv01BgI9gIYdVgc0=; b= TEBOrC1Lvl1TZu2iw7RSmaNS9r2zCOvF9uqjCbfAwwD5DcWptntXHVq+j4IMBhRH FDbZTKjlr4CWmNlH3pmsSE82O1H9pbD1UkPiVdO6V3hOt4japut/lj+w22dx/5m7 Vx5Aat7Bmjrg2zbD/vWjeGkOFOIkWgnc1AgKBVe7eQT14oPJu6vI1fFQ+oIQTbWy 2/mqgHu4eh8MOGbdb5RqJOvkrWA2H+6+MvEUq3nZemoDJCGUj4kjkN/D+1v0LnqS yalyznzB4oEV6X9uo3lWqqqH+LcHiJFd3zj2nDpCNB5qVjkEpmpkNaF73HP7kXWE QQ9rKxDfx7HJdRo12+x/Qw== Received: from phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta03.appoci.oracle.com [138.1.37.129]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 4bh4t1804c-2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 06 Jan 2026 15:13:24 +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 606EwVlV034111; Tue, 6 Jan 2026 15:04:40 GMT Received: from bn1pr04cu002.outbound.protection.outlook.com (mail-eastus2azon11010002.outbound.protection.outlook.com [52.101.56.2]) by phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 4besj8pha8-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 06 Jan 2026 15:04:40 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=IWQEuDmMUXvEYUiwMt7UlcJi7Z8w5NdY9c8hOd93grqoZ6yYK+V8fASRhviPbZnJldlo5KdUAgpd8i+ActOWH4K+B8GnoiCtCHzXlNxcQuLCSxZsgp37JRcCXucwwUlLYb72/YKKBiSW5OVe8jYffHaEZbf+eHDuWV32zbZqKclpxMoOwX20FzOIS1kbkskunnfmUxc2Hj8I7oxIfonvLfwt0T94WrPPQHa9HfN2jBY2+nerfzMNIuhfbH413NCMdOCwsvYQ+PXLxDvE21IbNzmL9lUVQ6teoLOZZUeTsbQEfpSLw+Q05bgxdIjAdJ+A4KR8YhhbbQnpjhmHrIRoWw== 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=p1C0zY+O7l12yX6TvykuGk6S+sKiv01BgI9gIYdVgc0=; b=ZkLyt8DGl3pTeEHdQuuVGiQ+947Fq0iie9ZlLvg2tBOxBpqxZS7e0PvkxeJYQvFEhLsX2nhuIeCJ2Db9o7j2RVOjFuwIKJYTR/XeV9iEva9ZdZDOCGwx4Znwf81Op6myxOYd2EVXfFq3YS8YFY3iQYutdr3hYlQ4dtbIHmq1ht7x/i3rxdDqbNGw67KTiH/8SHOvzMiZtIV22bk2+ByTI48SjeCrBYIpM6N0z5Mq5KFxi7FiZDth3jgaAzqzkSlFW8WBxLwXWuxz/h9marKg/6//ePyZMbDsCYT+YpWlptBXt4MY3jP/EaNg2lelWPeUXneXBb+2se0zuIFCpdCigQ== 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=p1C0zY+O7l12yX6TvykuGk6S+sKiv01BgI9gIYdVgc0=; b=fFRLQdfg/9Z9fRGSnRT+3xoY/1wcSzqEeHxaZN8Zc3lkUjX1Q6YF9QTe4uxALusLmL0rGUklBmsK/xJSb3Lb77lqRnD8bAE7j8KHq7mTr5/BgpTTd6nYj2H13I7s4JTBreTd46IPVIVvQotieuGodYJyMyrTp8TuF7Fc5WT8u+U= Received: from DM4PR10MB8218.namprd10.prod.outlook.com (2603:10b6:8:1cc::16) by DM4PR10MB6039.namprd10.prod.outlook.com (2603:10b6:8:b7::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9499.1; Tue, 6 Jan 2026 15:04:36 +0000 Received: from DM4PR10MB8218.namprd10.prod.outlook.com ([fe80::f3ea:674e:7f2e:b711]) by DM4PR10MB8218.namprd10.prod.outlook.com ([fe80::f3ea:674e:7f2e:b711%6]) with mapi id 15.20.9478.004; Tue, 6 Jan 2026 15:04:36 +0000 From: Lorenzo Stoakes To: Andrew Morton Cc: Suren Baghdasaryan , "Liam R . Howlett" , Vlastimil Babka , Shakeel Butt , David Hildenbrand , Rik van Riel , Harry Yoo , Jann Horn , Mike Rapoport , Michal Hocko , Pedro Falcato , Chris Li , Barry Song , linux-mm@kvack.org, linux-kernel@vger.kernel.org Subject: [PATCH v2 1/8] mm/rmap: improve anon_vma_clone(), unlink_anon_vmas() comments, add asserts Date: Tue, 6 Jan 2026 15:04:26 +0000 Message-ID: <5f55507a877028add5fdf8f207f5e333c7a3fc85.1767711638.git.lorenzo.stoakes@oracle.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: LO4P123CA0085.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:190::18) To DM4PR10MB8218.namprd10.prod.outlook.com (2603:10b6:8:1cc::16) 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: DM4PR10MB8218:EE_|DM4PR10MB6039:EE_ X-MS-Office365-Filtering-Correlation-Id: 7791ca26-6814-484c-8631-08de4d34e852 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|376014|7416014|1800799024; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?etftp2FNLlvBKPDyLfbU3uN7SDr6OG6u9Ti+nAN5gb/MclPNFikXWWTQ5SrE?= =?us-ascii?Q?ajjdyP+sRfceLc93gPo5i5ZDhgYXGHLbWCa+hm3zVuDBafqx94jqQo1COhtX?= =?us-ascii?Q?Wo4Mlz0sXDQ81OD0FelXnmSOIIsVTFFJt0VGWBVreYfOoIlsagnV/ddQrAXU?= =?us-ascii?Q?RCa6OkYbsKmhwo5UXl7PWVbwvPmFOFVqwAfxS3hy9GOo86wImM3wxtYoB3W5?= =?us-ascii?Q?KYEHeoEeliy7S5Z6xah48hfku4ERhJ2/mlzJx5bIK2lbh5f9Vqdob6pH+maR?= =?us-ascii?Q?bVr2Ne9wMafPY9ZNTm4puFfVjDZP5YfzF3MmwVJrD6oBmmNQAtuuk0U0op8N?= =?us-ascii?Q?520R3XK1VZGtHtXZLbmVh4FBUxl4FX0RI8XXKpSMRXQZn5/yEg3OJEYdpdLK?= =?us-ascii?Q?zAAuYDhHgKJ5n+poq8MLIMqvS6dIwpgOIgbXbsYg7aQyopPcDr4C+8+fKBjG?= =?us-ascii?Q?vNiZF90ucCXMAgZcc+mtZyRj4hNf3hDI+pIYNH+g9R/y7fIUeymkFLF29Jnn?= =?us-ascii?Q?xpsdN9ADjFqcQnKbpZqdhOSHsJwbfl5a6NFNWG9l8rH4Oxe4H31prcMtXfRu?= =?us-ascii?Q?9YSaiukg1Cb1a2qB12y57g66ukwhqAZ9g2Ctq9jbGmJg6MvJlrOr3HwwIESk?= =?us-ascii?Q?1mD3RWUpipRTzzTQp9sXLbnsVDP8gL4EEl5Ckyt9DPV3alTbHiMOSbAQzs3G?= =?us-ascii?Q?In8QuS4f9PIgrgnjgdExNXLruy9CWrHTV5YUtbGqOdI2VB/5vCdiIX+7dUd/?= =?us-ascii?Q?ntoVZpmmnVZVCTtMYqQIxM9mMR7F7yNiAK8tuOe3nNCTJZEJIl1bccUpWf8C?= =?us-ascii?Q?Ocdr4t3pf5ogivPIr2bCqRtSo2m2wyhg5mlmg89ymcxcklMFGAMzO5p75JDk?= =?us-ascii?Q?Zw/U7KYT8mPNe390PZq3/KmEog5fx7nCOpppiC4C22vJAOykp4qfHVhO6Khm?= =?us-ascii?Q?2y2YgNlzZsqsPhTBpvtpOTUaAuYAr0VDEAZje9s74OsWwiQg6IW12MZ/op5s?= =?us-ascii?Q?M+07fd0qJgnztWDBGEADp96h+jn90NVHRRbrVNq9cLv4hhFS0U9E5gDb93N4?= =?us-ascii?Q?gbSnm9Nl11OT2K3cfdPLjyQ6IK/8Y0wfMnmFzzx0L9/XWmPfHLhD1rC7fA9D?= =?us-ascii?Q?BZsZQ7moyfjxMWIL+BZQ1PEimz8i0OSOcrwjivDEwYNJEZX+M+2UykacLhYe?= =?us-ascii?Q?luYwWAddkH1HYhrJ8dF78P1IS3WaR6ZNEhNb33+oZNHq7y4MAlBTBFZJwf3j?= =?us-ascii?Q?tzk9FhRpwWaq/OHVEFzPCVviy3/lH6A092+gouDKHE5ZBo0Nmk44qW1g6sDx?= =?us-ascii?Q?glGL9802ZVo0PGTepp1dQIsg3P6Em1mmCvIpqj60+lD/SnDhjGz/7uIGA+uj?= =?us-ascii?Q?gw5KOB3JQEUe3PzY+HzRk9daW+woMGU8/9sUdEVojLgYaOZPqfxpqdj7j05j?= =?us-ascii?Q?6S1OodXhkz8DX9ygBr2xzJU4LFj4nusA?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DM4PR10MB8218.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(376014)(7416014)(1800799024);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?37PfKA5HPFZDkPGx8DpAFKgLax/LpXwBNRIqPPwgiIbTwVy1fGwX6w2a9KtT?= =?us-ascii?Q?7vDp/szJuUEaJKxEBbIW5ayG3m+Y07E+b7mPEQjK2B/Ok/zCD9NGSKaNgRIm?= =?us-ascii?Q?Azk1c4TeExTuzQekQ/TOaCzwDT57t/19KA7oKYkOHzG8cXlb0T8fJwJMFZZH?= =?us-ascii?Q?nOCPuWkqspX8EuSJCcWg4iSayzbxvePIr6TNSCVOl3PyBDdibgtMCruZ/SyN?= =?us-ascii?Q?CTeLg1QlzTeYUnPA6RfGxzhYelNPcZ7Dn38PCBwyAr8YtwgQ6KA8/dOWmQof?= =?us-ascii?Q?qw+zwW40zgap5xaEVB8eaKq2oLv0+RqqMqlKfzKyyxZd3eTb3pmKS/3zP5a0?= =?us-ascii?Q?RvHjvIW/loTR1QLo0LM97axfFRucDeyj5wq8HujFlNG+mBcCBEBfAV7YFE9m?= =?us-ascii?Q?O+81KFwnMF1wMUpE5Sy4AiIhkuVt/TwY9ICI/e1KweF4wHWvtIAw7+WaJ+4w?= =?us-ascii?Q?BabUurCNYo8Jux1jpNsadgkVozaLtweCU/t8Qha+XkO2Qn3YE2djGeog6kxz?= =?us-ascii?Q?1SSDQF5AbRkZNS+Gk9VjYoQAhu7b9KRzcS4X/mEGoWNbbGSBJBqGHNWPAwy3?= =?us-ascii?Q?hO2Y9DQsxNvLrt1loaviNopfgVaOBzy3h2ZNeEHg30FUMG8UafxoIqoJ/Mkj?= =?us-ascii?Q?zkjn+SUHx/C1D809pfv5ovfRAXbvGiOgzc4n8usFj747EDF07KskfTsOTVSu?= =?us-ascii?Q?2givH2qpU2yQIUj158lL+qZJC7dddFQizGUOwUa7jVYr72qikmSJufORjuhD?= =?us-ascii?Q?fVFaStWB+il/efD+FhNJsSCyTVKWtqA3phZhnNWa+UY0kEjkgADV3bra3DF/?= =?us-ascii?Q?YI/fj1oD2DpSB26GN9nfV7eEPJO55GlohPaN5BCq4WRpPB63r+iE68oS3Dvb?= =?us-ascii?Q?P51uwCyMfoK5KpIMLoGzj9i6ju6uouTPXFTi9zvVPm+OO0O4r4SRJ7bVLtAb?= =?us-ascii?Q?w+Kmc3YNwVx9Ny+EOPVNMy2CAFP3iaNKOB4UVZVv31uvgDnjd9pM1mvRkGtd?= =?us-ascii?Q?b3iTanjtpKeT9O/Jld/f0o+OMCG9shUDxKNqByIh8hFsldQ9OdQQ25Oc/6yz?= =?us-ascii?Q?doIcTVhtir1iQWmkhd/Ufi7Ikr9Pv7IFteZkIBnEHGlOD50JczdIvmtMAbCq?= =?us-ascii?Q?UX5sI5ess2z19WXWOCkyQG4Hq9PJpfS6FiDnUveL91PZDfJloEBg+BMLnqa6?= =?us-ascii?Q?sPm0szdd2pn820Nr/9uK5UL5zpAsfppRENuZuitPYjMKZHArYWHOfXUNw9TY?= =?us-ascii?Q?XDMYQsDooVHELXRwCA+A/cWxOnFE3wjhvch8JgoiMTgcWORpQTyBY0ZDVeZK?= =?us-ascii?Q?7Tsbpv+GqLoxzE5Z988YBipe9J/Zsqhv2xuE3v5x4adWbp24oe/xi6TNIX0S?= =?us-ascii?Q?h8L6Zl45ZWjU2408jLR5LxRO6/tKgwuxkTUIiLchp1P/o83BhnM8PLXVq1xD?= =?us-ascii?Q?uAJ1r+v8Tvx+C5QiXB31MY6nl5gSUcQnpp5qlVywbe3kMrg02/UACaFW3tDS?= =?us-ascii?Q?617npzMWOXw8wv+vaunZ2MISye9Qt1zD4epgl5R2ZDqI03Dua9WaBiyZcC24?= =?us-ascii?Q?gibR48W8XEUW+6W2TimDbBKcBsy4R1rxfWwJoe3WSwag5aVdTBF4K0J3/MAl?= =?us-ascii?Q?W1fHtDOMJZmUIQ1XyAld0iR6hrT3js4F8h+HCTvrhzVRl0KaSGI2MvQzCiWj?= =?us-ascii?Q?XAMldW84ezDCuTNbIhgSdSQA0wg1KLcEstPbGj+NdTUjeyGlGHyOsuMunhSC?= =?us-ascii?Q?SXWpchpPPRcCpAQ3sZJZaITFhjCPDJs=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: SOnhmUqm+5AiErWnVOtY4ea7C5oICI5b/fV1X+cfloiqH21zIijDnv6GF6vL8tuD1R1r14bBLHOn3zV2bbpyUCHKGRnqN6qtKf67vRbodtZjCa6kZJxHWVBdK9mM5mq8gCORY2XLHfVrzvc1/9RbNYR9MiYiKPRcX/DEIguic6YKFBbb3Fqcyu3ZCEi3oi4wXtHxazmXqHwTIaiUkCRKgasG93Y8vC2r+gRuDsBsGOHqNf3o5bckThK6r7mhuaM4vlu5Zkf9h84Ml1VlVc0+rAqYL7KPbu0gr3J3/6FMsXy0XGX9tdqUkJQGqbRTuPoAbG9DCFkoTjYAzaFW/aFoZHpEZf9go8b0uJOucR6yXTzwpHpiryoWKvOTXQISZV1wy3dbxDFx9vTG/7eVd81jlldx1vQPWO1js6VvvvGO4X9z1NI0lJLcOj6+9qdM8jVWBK/kb/WS83lY95OwQ8OzmXfLozL+f5Zwki/TnD7LrJnCkFci7LYOIIy68HEgfyfbrakNH+UGOIIleTKPa6HDDEWnyC77IdEfYumygeLYSlubLnupWkbBCY3Zt1k9UWtSTQHF0VVLl2YT9IjS+fApL6PGAXJkJ1zehUb+BPXoj0Y= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 7791ca26-6814-484c-8631-08de4d34e852 X-MS-Exchange-CrossTenant-AuthSource: DM4PR10MB8218.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 06 Jan 2026 15:04:36.5978 (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: vHdBD8VjPs00N49H1JH62nL5PtQkoM8rcL/rqD+AdcufodltMrS1/0HUdM0AddmvQqLqwVfU9r760SCITFLv8ciQVidldNyJdbCQJ8muzYk= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM4PR10MB6039 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.9,FMLib:17.12.100.49 definitions=2026-01-06_01,2026-01-06_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 adultscore=0 suspectscore=0 mlxlogscore=999 phishscore=0 malwarescore=0 spamscore=0 bulkscore=0 mlxscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2512120000 definitions=main-2601060131 X-Authority-Analysis: v=2.4 cv=P+U3RyAu c=1 sm=1 tr=0 ts=695d2694 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=TS5ZMjQafXG62o6CVrQA:9 X-Proofpoint-ORIG-GUID: C5V9NsXltHyDYUvpdzlhOrqdCsre7zQr X-Proofpoint-GUID: C5V9NsXltHyDYUvpdzlhOrqdCsre7zQr X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMTA2MDEzMSBTYWx0ZWRfX54KwtrSXQN3x BM4dHgdfbp+S8D4UuHHa/DG5U7UMhttkuP2tgOzFKsS3mQ7LIBZUXaHA+bLmQyBe9k59/a5/Eat KlsCxFRMAhAbkje1R/q70uSj7DwPx7JEOMyiwqgLOUZenlNhphn1MKJFkHqTjsGxzqMWJE1DcYL Zb8+vdz6qQeiKzxpWv4BZL4pg5eW8ndLcIhpmPnge496EwyIkEYRYH4w6hgmh2SyUsQUEC3KtJ3 HJBf9kZUV1PRqg/3EI9plfFyY3UxNFlHSC6keuiKZkgB8/DQMmYCs+Lr4sHhbyTPtfeewV3K9vV cLc79nvU5sJbnDpmL9X06HJnqeFbSYWtPOoa9DtWbpS/QsDT9xNSSFUbCr8FLLkJcWXOMbfyKOC 6cUkCTlNNG4sP3G6NOUPyxBV2cNKYdBWRz3pkiFh5eZAdNwbmbu4qMUM7N3wNh0auhj7O7OFx2w Q9fNrMG28MBwKMTFU3A== Content-Type: text/plain; charset="utf-8" Add kdoc comments and describe exactly what these functions are used for in detail, pointing out importantly that the anon_vma_clone() !dst->anon_vma && src->anon_vma dance is ONLY for fork. Both are confusing functions that will be refactored in a subsequent patch but the first stage is establishing documentation and some invariants. Add some basic CONFIG_DEBUG_VM asserts that help document expected state, specifically: anon_vma_clone() - mmap write lock held. - We do nothing if src VMA is not faulted. - The destination VMA has no anon_vma_chain yet. - We are always operating on the same active VMA (i.e. vma->anon_vma). - If not forking, must operate on the same mm_struct. unlink_anon_vmas() - mmap lock held (write lock except when freeing page tables). - That unfaulted VMAs are no-ops. We are presented with a special case when anon_vma_clone() fails to allocate memory, where we have a VMA with partially set up anon_vma state. Since we hold the exclusive mmap write lock, and since we are cloning from a source VMA which consequently can't also have its anon_vma state modified, we know no anon_vma referenced can be empty. This allows us to significantly simplify this case and just remove anon_vma_chain objects associated with the VMA, so we add a specific partial cleanup path for this scenario. This also allows us to drop the hack of setting vma->anon_vma to NULL before unlinking anon_vma state in this scenario. Signed-off-by: Lorenzo Stoakes Reviewed-by: Liam R. Howlett --- mm/rmap.c | 130 +++++++++++++++++++++++++++++++++++++++++++----------- 1 file changed, 104 insertions(+), 26 deletions(-) diff --git a/mm/rmap.c b/mm/rmap.c index c86f1135222b..54ccf884d90a 100644 --- a/mm/rmap.c +++ b/mm/rmap.c @@ -258,30 +258,62 @@ static inline void unlock_anon_vma_root(struct anon_v= ma *root) up_write(&root->rwsem); } =20 -/* - * Attach the anon_vmas from src to dst. - * Returns 0 on success, -ENOMEM on failure. - * - * anon_vma_clone() is called by vma_expand(), vma_merge(), __split_vma(), - * copy_vma() and anon_vma_fork(). The first four want an exact copy of sr= c, - * while the last one, anon_vma_fork(), may try to reuse an existing anon_= vma to - * prevent endless growth of anon_vma. Since dst->anon_vma is set to NULL = before - * call, we can identify this case by checking (!dst->anon_vma && - * src->anon_vma). - * - * If (!dst->anon_vma && src->anon_vma) is true, this function tries to fi= nd - * and reuse existing anon_vma which has no vmas and only one child anon_v= ma. - * This prevents degradation of anon_vma hierarchy to endless linear chain= in - * case of constantly forking task. On the other hand, an anon_vma with mo= re - * than one child isn't reused even if there was no alive vma, thus rmap - * walker has a good chance of avoiding scanning the whole hierarchy when = it - * searches where page is mapped. +static void check_anon_vma_clone(struct vm_area_struct *dst, + struct vm_area_struct *src) +{ + /* The write lock must be held. */ + mmap_assert_write_locked(src->vm_mm); + /* If not a fork (implied by dst->anon_vma) then must be on same mm. */ + VM_WARN_ON_ONCE(dst->anon_vma && dst->vm_mm !=3D src->vm_mm); + + /* If we have anything to do src->anon_vma must be provided. */ + VM_WARN_ON_ONCE(!src->anon_vma && !list_empty(&src->anon_vma_chain)); + VM_WARN_ON_ONCE(!src->anon_vma && dst->anon_vma); + /* We are establishing a new anon_vma_chain. */ + VM_WARN_ON_ONCE(!list_empty(&dst->anon_vma_chain)); + /* + * On fork, dst->anon_vma is set NULL (temporarily). Otherwise, anon_vma + * must be the same across dst and src. + */ + VM_WARN_ON_ONCE(dst->anon_vma && dst->anon_vma !=3D src->anon_vma); +} + +static void cleanup_partial_anon_vmas(struct vm_area_struct *vma); + +/** + * anon_vma_clone - Establishes new anon_vma_chain objects in @dst linking= to + * all of the anon_vma objects contained within @src anon_vma_chain's. + * @dst: The destination VMA with an empty anon_vma_chain. + * @src: The source VMA we wish to duplicate. + * + * This is the heart of the VMA side of the anon_vma implementation - we i= nvoke + * this function whenever we need to set up a new VMA's anon_vma state. + * + * This is invoked for: + * + * - VMA Merge, but only when @dst is unfaulted and @src is faulted - mean= ing we + * clone @src into @dst. + * - VMA split. + * - VMA (m)remap. + * - Fork of faulted VMA. + * + * In all cases other than fork this is simply a duplication. Fork additio= nally + * adds a new active anon_vma. + * + * ONLY in the case of fork do we try to 'reuse' existing anon_vma's in an + * anon_vma hierarchy, reusing anon_vma's which have no VMA associated wit= h them + * but do have a single child. This is to avoid waste of memory when repea= tedly + * forking. + * + * Returns: 0 on success, -ENOMEM on failure. */ int anon_vma_clone(struct vm_area_struct *dst, struct vm_area_struct *src) { struct anon_vma_chain *avc, *pavc; struct anon_vma *root =3D NULL; =20 + check_anon_vma_clone(dst, src); + list_for_each_entry_reverse(pavc, &src->anon_vma_chain, same_vma) { struct anon_vma *anon_vma; =20 @@ -315,14 +347,7 @@ int anon_vma_clone(struct vm_area_struct *dst, struct = vm_area_struct *src) return 0; =20 enomem_failure: - /* - * dst->anon_vma is dropped here otherwise its num_active_vmas can - * be incorrectly decremented in unlink_anon_vmas(). - * We can safely do this because callers of anon_vma_clone() don't care - * about dst->anon_vma if anon_vma_clone() failed. - */ - dst->anon_vma =3D NULL; - unlink_anon_vmas(dst); + cleanup_partial_anon_vmas(dst); return -ENOMEM; } =20 @@ -393,11 +418,64 @@ int anon_vma_fork(struct vm_area_struct *vma, struct = vm_area_struct *pvma) return -ENOMEM; } =20 +/* + * In the unfortunate case of anon_vma_clone() failing to allocate memory = we + * have to clean things up. + * + * On clone we hold the exclusive mmap write lock, so we can't race + * unlink_anon_vmas(). Since we're cloning, we know we can't have empty + * anon_vma's, since existing anon_vma's are what we're cloning from. + * + * So this function needs only traverse the anon_vma_chain and free each + * allocated anon_vma_chain. + */ +static void cleanup_partial_anon_vmas(struct vm_area_struct *vma) +{ + struct anon_vma_chain *avc, *next; + bool locked =3D false; + + /* + * We exclude everybody else from being able to modify anon_vma's + * underneath us. + */ + mmap_assert_locked(vma->vm_mm); + + list_for_each_entry_safe(avc, next, &vma->anon_vma_chain, same_vma) { + struct anon_vma *anon_vma =3D avc->anon_vma; + + /* All anon_vma's share the same root. */ + if (!locked) { + anon_vma_lock_write(anon_vma); + locked =3D true; + } + + anon_vma_interval_tree_remove(avc, &anon_vma->rb_root); + list_del(&avc->same_vma); + anon_vma_chain_free(avc); + } +} + +/** + * unlink_anon_vmas() - remove all links between a VMA and anon_vma's, fre= eing + * anon_vma_chain objects. + * @vma: The VMA whose links to anon_vma objects is to be severed. + * + * As part of the process anon_vma_chain's are freed, + * anon_vma->num_children,num_active_vmas is updated as required and, if t= he + * relevant anon_vma references no further VMAs, its reference count is + * decremented. + */ void unlink_anon_vmas(struct vm_area_struct *vma) { struct anon_vma_chain *avc, *next; struct anon_vma *root =3D NULL; =20 + /* Always hold mmap lock, read-lock on unmap possibly. */ + mmap_assert_locked(vma->vm_mm); + + /* Unfaulted is a no-op. */ + VM_WARN_ON_ONCE(!vma->anon_vma && !list_empty(&vma->anon_vma_chain)); + /* * Unlink each anon_vma chained to the VMA. This list is ordered * from newest to oldest, ensuring the root anon_vma gets freed last. --=20 2.52.0 From nobody Sun Feb 8 15:58:01 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 3F12033890E for ; Tue, 6 Jan 2026 15:13:48 +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=1767712432; cv=fail; b=nepxRagQLAiiWwh9ylspHiBJiWrvTx18W8ETodTXGrBSnCAb+pDPp8uQkvvoVzrkSCW+0f00pCWE5NfvLVQzsO+/gN+S8PtG279WEu58jopP8SCKLCr+P3dyADBrfayTZBF40jhwnbZKgCvJ/umQkgkJtZGxpWvAL222ldwsIJk= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767712432; c=relaxed/simple; bh=LWMUgh6NpJiuu3hyBMUHqUn0Vlfgo1nn9KKWWUjAmQY=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=acuseJr5SBNjkAgVZH0PnwciTkV+ZmiLLSmCD8IS0b/iarS8ll35+97JLgy1atqV1LP3EmbPHS/JXTK6N+br3jouocDFoEAb83Qt6N0QgFg1ENT6uJd/DoVenSxz1BlVmQfIcmREQB/8bD5boJlSFYhGNZXGRRR2BsEHD12yg4Q= 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=LYltE+Dn; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=Q/K9eUrn; 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="LYltE+Dn"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="Q/K9eUrn" 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 606DEfjx166594; Tue, 6 Jan 2026 15:12:56 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=2Xu/pXGp2SR4l1EeLkd5VlOXkM13b4TsURHMf2J82Ss=; b= LYltE+DnK29Tv77uqei/5WVmR/naQR6SJxgD9MSjx03WNJKOb6uaBGLtUciVkFff TACE5xzRVq74b/Ogl/vTPZhVJnN0H8ugAoIrxtZMy5ImAgT6O65YnCPwqmhN1p9c hF66O06joB3xwzLYCHGaeSlwVUyTgEomaDZwdZ678XQ9+8+VGkbcGX0Nwe3mr+go CdurvloJ4KXl7dnSaC86c/N+mNKh5KENyNq2blYSa17JQcfliZqygcG4CIAJ8n5b 38kmSuzRsHVijsEVg7u5BzO9Y3DiNLoyJGIx74YRiF1wGNRbLk9WqRLLkG+8PZWx i5VBTN7NdAuM1GNRuGDXvg== Received: from phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta01.appoci.oracle.com [138.1.114.2]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 4bh33x065p-9 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 06 Jan 2026 15:12:56 +0000 (GMT) Received: from pps.filterd (phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com [127.0.0.1]) by phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com (8.18.1.2/8.18.1.2) with ESMTP id 606DOK1v013560; Tue, 6 Jan 2026 15:04:43 GMT Received: from mw6pr02cu001.outbound.protection.outlook.com (mail-westus2azon11012052.outbound.protection.outlook.com [52.101.48.52]) by phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 4besj8ekw9-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 06 Jan 2026 15:04:43 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=M/yH7+HtnP9hryn8sYzp1ZNF+1PYmRGR/BTKRGT+jYqxfdvjkdakgoXdfR5TJvNRODuvBRKStifnGWzoKMrDq3PX2k77CL/DYA5X+v/1wxWe8ZA4h+G+zF6+XhUzMiUPS2WIHlGuhklgm548Ww/PxNWZxly+dDuNguOCznx08f/XsTqAS4jRG+NZd/8Mg/vZerbBBqaB815qKLGt9KJgwrysFdlG41V4wLp8p7phxJfJQ1ZUgVPZwAndvLqvhYbTm7bKtKI15jdtidkRmNtdgFHHZy70zhSXJyIby6j+d5B5uIrozF2gASwFtvonj4+R2SKlZALKe0ksOspVtw1O8w== 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=2Xu/pXGp2SR4l1EeLkd5VlOXkM13b4TsURHMf2J82Ss=; b=iy/j0k9gXjIdoVD7o8r46koaLyIK9tQMQyKD2SEjzREz/0c4rZ7+ezPq2+AXl1V7K6n0eOoyKyKVVZanLy1reiJvGqjL/JgUANy991tGPkoT1qrLhWH2gt8W3K8zs+iUC8VDVn//VsQNSx4Pjcv498RGqetfSCRPql89GGvuEElkX0T6+Urbn+NeKCEr+SZjRXgy9ZSwJixQgcOFO/77UNPgKQs4KY+H7eBb7At7Ig0Hd7kdadHGTM46TWV3yc073oVtU0YhfwnOmwJvc/UkhWYeEjhj9mr2v27d/i3AmegfdtsNZwqs6JZeTc82vKq6OFg5vXk6i5fB/qcDQKLDow== 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=2Xu/pXGp2SR4l1EeLkd5VlOXkM13b4TsURHMf2J82Ss=; b=Q/K9eUrnoW9yfCbHenioVR0sETO5Hxi2d1SzMFmk0Mqyumu8h1DJp4KcXtyrOhGFjLRLw82a+QE5NSLJLE5+5RdDQu//CbrFOHxVOj8kMSBCvgvlakw2mu7SO6YUZkBoCljNryefVhv+9skBTWtRby5wRHfJXti78jPkcxL46Ug= Received: from DM4PR10MB8218.namprd10.prod.outlook.com (2603:10b6:8:1cc::16) by PH0PR10MB7097.namprd10.prod.outlook.com (2603:10b6:510:28f::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9499.2; Tue, 6 Jan 2026 15:04:40 +0000 Received: from DM4PR10MB8218.namprd10.prod.outlook.com ([fe80::f3ea:674e:7f2e:b711]) by DM4PR10MB8218.namprd10.prod.outlook.com ([fe80::f3ea:674e:7f2e:b711%6]) with mapi id 15.20.9478.004; Tue, 6 Jan 2026 15:04:40 +0000 From: Lorenzo Stoakes To: Andrew Morton Cc: Suren Baghdasaryan , "Liam R . Howlett" , Vlastimil Babka , Shakeel Butt , David Hildenbrand , Rik van Riel , Harry Yoo , Jann Horn , Mike Rapoport , Michal Hocko , Pedro Falcato , Chris Li , Barry Song , linux-mm@kvack.org, linux-kernel@vger.kernel.org Subject: [PATCH v2 2/8] mm/rmap: skip unfaulted VMAs on anon_vma clone, unlink Date: Tue, 6 Jan 2026 15:04:27 +0000 Message-ID: X-Mailer: git-send-email 2.52.0 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: LO6P123CA0031.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:2fe::11) To DM4PR10MB8218.namprd10.prod.outlook.com (2603:10b6:8:1cc::16) 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: DM4PR10MB8218:EE_|PH0PR10MB7097:EE_ X-MS-Office365-Filtering-Correlation-Id: bc707ccf-37ec-4896-d901-08de4d34ea79 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|1800799024|376014|7416014; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?ElTKTTZs8G9YoXqpWoTbKK4gSQ6Bp4X36pahLCltQRYiGnHvSS+7r7S0R/iV?= =?us-ascii?Q?KsRoxsX/o9C/7n1vsgDsdioOs3+xUIMzlmpzQN3nal/qpeBoCJ3cAYAmHaf9?= =?us-ascii?Q?M/e4VoyF6EWeVliXUpujppVgX2hg1q8EN8enyM9kF/GKp6MNarSQspI6twQ6?= =?us-ascii?Q?JGrDaEODrs9Z8aKMdHdV5ucDvT/WawikYZ4Gn0yVDFO13EkmpKAhtHzb+4B5?= =?us-ascii?Q?KYk++40Q3OWK/VQiH3rzlz3/AckDC5ZhhZQin3319bAeoiTRWdDOyNdQe0Rm?= =?us-ascii?Q?dvn6NzcZnWPuFoycZqsR1uSrbRm5AK+FlB5mE8cZGgVDUlmvqT9LQQVqVSHb?= =?us-ascii?Q?zttub4tkxSEhVhC+7QxE6JnjP+AH7QttfEWeosOVXLwIY/PNtYw4uGsuXilF?= =?us-ascii?Q?ru4WB7GygIqTv1Rx2dhW7tS6y78HJCPuUdYKKIJMVnOU4YKbhpXzE92bVnuX?= =?us-ascii?Q?CGnr7DKexvhn6bC25fgRDDNn28zCjZk7od0MO7QmJT4DgjDeQhOqPje+kYk8?= =?us-ascii?Q?Q0Ip7QvMKPjlX5QpSf9u+WJ0sGwueLVBLFXtCku3wj49icm7GtAlUe06PkIp?= =?us-ascii?Q?UGp5dbSWX6c5E/FcuK8tL5DLfRx153R2JY8+FaFMk0ZJoeQz7bm/ppiL+H6i?= =?us-ascii?Q?s/ghJ8LJ37mKoc544JNl4hb7KvrOnvKF0RDJaOdtiNBHsH6vBP9CzPC1V3CL?= =?us-ascii?Q?1Lid/TXRsbfX+gHyRRUE2ppjqZT/pPg6KQnFb/OnnUjVMS5ixOJLsPQ18ZAp?= =?us-ascii?Q?59Nt4L1YLbdjli1MACnu8gJHYQl1JJIyRfWSJWDUQpTXms01gsoQConjWBvK?= =?us-ascii?Q?9pcreVWQxT5mFn9d0O8pTNhYUuLbvptfxqHKyruUIWA4XmOi6nz2cZI5FTY1?= =?us-ascii?Q?rchMSmCpIhXC6kfi5qdOjD98KSxF0EiMoy981jKZSZfCFXz85k3ne6TB7wzV?= =?us-ascii?Q?8sOOtubQhrncll6VrZLg35qrpgnESfnrDIHE8G93HuOk4u09cW+jnOlz2Xxo?= =?us-ascii?Q?cMQIDzz36Go3KLscR3vLKt4A4NiNRL6NZUgbZrz9S5lTgImcQ7oW2ccEzXJv?= =?us-ascii?Q?pWiRJWnCTdd8Wiztpnxo4d5qNi9b2kHkFi/ktgr53kfuq++8SgzM/skmCgnu?= =?us-ascii?Q?R50U/yk/gErNLBk+hu1xJi8YiTQ8GK8Lt46c5tmZBqcqyiBHfKfVXz3cxfI2?= =?us-ascii?Q?q3UQaJhiVcmoxp4+RWHWWpCUa27Byp7G2PGDNcSoXjopNYwA534Y/9r9VCTO?= =?us-ascii?Q?pM0iG5SrVFzKFHTogE4zL6i8bzxiE6CwS/Wtb5kj5qF4scDrsXURwf72XUZW?= =?us-ascii?Q?at9iBpkH6+flpGxhHtpvBhfDVT6c7GhdAV+UBHE25xUl5bpBlmV5Q0mK0Z+B?= =?us-ascii?Q?McOb1HG1PHy6kkhTdXv25muBUbUtN03vilHPdjfQGBeZ+oP+pIgISK3Z669L?= =?us-ascii?Q?NOiuVIsKPHfK/85SRBkMFl/EFnV4iX9X?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DM4PR10MB8218.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(1800799024)(376014)(7416014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?BVJG4PsU8AVaEAbXCtGyEcJ87eWoQR+oNzVZSNkb5QgMTYV3Wzic4JrYPwlC?= =?us-ascii?Q?STAqUT8h0G19DCUVrVfCsQGy8Olw1Kyk0mK7uDDm8gDUz//WQJE3KWvpwQ4W?= =?us-ascii?Q?4wX6VVTyJkIelaohfiwFdmL8/N7ebV1kCwlpXsv+NoSJYDlL+LMbjVI10wxo?= =?us-ascii?Q?CjRi4nFXkBHG89WFiLducDRhk57S+U1hQpEih4waf4uvoJU29ttZzKg2xKkc?= =?us-ascii?Q?PpR/8QzbldK3B/razT5FGh8/qXDVy90TkL5BMfGTiR9/aH06cJqSky5uveSF?= =?us-ascii?Q?PZdr5Z535uqKIHbJnBGea4tPHNq/Z6WIfl6e5kQUudYgr4+9iA6HTr2jlKMY?= =?us-ascii?Q?44Q8KyHxBWJ8DGRJ6aiFaoMVj5g1OdNMnD9+kHnF45hajne/BGxbXtIwSLJU?= =?us-ascii?Q?9jF7BExbGmhADCzOyo2A6uyiIoutb33RdtfG8ovQU3ipWWynhFud2AATwzrA?= =?us-ascii?Q?rL8E/zt/hkCCcCbDPwdPLGQEY/RkEV6ZXRx+Ii8erg3vn6SPGEVbI+Mzsjmf?= =?us-ascii?Q?acuQhj3d8Ae76j4bU3rXY0L+ZLYmpBPu12Hh4ejvkchXNzQAFKulgVtW7Hbq?= =?us-ascii?Q?Q+htUBm0lbdGvYnodFzbVgki92Po93y2ycv2KbjfzT18ixsJXS/QujneRV+8?= =?us-ascii?Q?tQpG1g1lpfpk0Mr53CyZK6RxvruwatQM9o2A7th4FV914RPQ7eVpITKy6iJj?= =?us-ascii?Q?8BKRCjH8zFE3jP6uVVdK9fj16PGjahAOnAon3rOYk9P+gteLlbICZYV/F8y7?= =?us-ascii?Q?+/NZxF49nQmD6NUpEO5BZKuDFzvmqQ05NNpeFws+SdGrDqFzqqTcA3wp+pLe?= =?us-ascii?Q?gBe00MPTpJclnDgGVVUN8mTlFk5elwMYEBKMe8FPcRBveSkVqGHGDNlUZx9y?= =?us-ascii?Q?ewIoZ13PvPH/7vUVxwkDZAjWaiRTlum3SDeLHGErDUJtYkFPRpPxD0OjyH2i?= =?us-ascii?Q?pHxWqUGpnG8lOaOlWkuRwIFZqItXF/qiy20KF7sT+2a8jZsU3I+J2Ekr4Qvq?= =?us-ascii?Q?lAKPvn9Rf9AR4IjXyIIurn2s7/sPcrWcCaXeJ2Zw97xJegj9TYQDJU25TI0A?= =?us-ascii?Q?Ygb7gmJLWOCxqih8DPzHxxghdHXJUOmM84MZjUb3krc/Llby+XGSuiKHWZSw?= =?us-ascii?Q?Qxh5VbQ0ljgG/tkXUuvnI4sz7ZrF48+ny29YfA49WS6Q8aCrVBTN/Aem86aS?= =?us-ascii?Q?XpQpP7wX1RiSVITb9eBawCMZou0MhjTRA+4PPKfrql0HGAuHfUL/0Or8B/BI?= =?us-ascii?Q?poeukhRE8KPsWqf14nmW6F+t1TlOloXxrYqZ/yEbgvBniKsPI4bOfXRnz7PO?= =?us-ascii?Q?SsyuJqYHoGtWLu/no3FKgyZzFWetGJW2ChuWHnKc5zozt0fOsiMGo7BkR1R2?= =?us-ascii?Q?+No1Y2M+Nm+sf0w+qFGjM8/qas4R6WeFmuTMYZl6iNojW8k4V/xzscfcA8yz?= =?us-ascii?Q?hbARuOt3H+TQLJLuOJmE169xpGcmjts8cak5Qsd+p5Cd1OpitatWfmLSzoSl?= =?us-ascii?Q?RpwHr1rYqhM0Qn3Q5hVNVaBt77WAwwj7OXmxfrc0uMfiMRXjMdFukiTWS87b?= =?us-ascii?Q?aG4ZbYIDjS1A1E1fPflmadxYNw0s9SwmYLdQmVwScuNM8Aw012dGTyzWUMSI?= =?us-ascii?Q?040da5sMsAF1xuzFe2qYVaDVfzxNsU+jsniBQNVaoYTeOSI03YGG0vqRd64v?= =?us-ascii?Q?ApWsFkrAe/k7VA7TQCwOq+fn6535k+qWAUyyQXBIoSUlqOkgWhtVVmXs9Pij?= =?us-ascii?Q?qSmLggQzh5fr1y2sJV8xMmPQ73jgi2M=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: HWHs3z0iUoPHO6hU/B5hND0+hnm+fQdXgWChPYGJdtm8wKQ3JrCXMVjSsiU7XskKCYADYNas20cnXdspBSead5M/8j7vjlZ44Es7/jLio5WkRMsjjhWancFhkFdGRIcksXQknsXoXH9qItli92W9jpe9zOHGRUBtZevSjtd1VvfkaKOrVJE9yYR2SKvDzAJl9r5OzjKyCj0O6rcGHK0m1VAO2Vv3URsyAVd4TM43PCbUUZc7v1OviFHpUu7O1v6AyUxKCrd+m36aDXFT/xoVFxowpWlMHNKw9cKV77I17useyZ/9JLf2hDmI3fPATcNvXa0c7OOELX9Rt0dUqxIGPlpT7wkjnReBWKlWDluGk4VoyuVugU0k707VWfTq/hrG6Z9NavvAnN0VnKaJd4kuv7rfTTy+kgj2ErPo/bc8rqDQ/4elAcjGfON65ZnpBmTuhzSVWmyQNIURUWhrFFV24qw1GE8X4vLTBB+HPcuKF59LwtGKQNJsI/9NLtDfEIZO2rVX238bzBK585zXm5ukYaPO9RIn3pmbTB0MemLtN+yd/zcMWEWxFmj1rEdc7WtHgM8SidlMC9CkuMxNxIYdbEgxkAdhryKHRpZocmHy6qg= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: bc707ccf-37ec-4896-d901-08de4d34ea79 X-MS-Exchange-CrossTenant-AuthSource: DM4PR10MB8218.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 06 Jan 2026 15:04:40.1773 (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: GJAOEn31uVvrQ79LNtSQbszQA+nsGqviBPDd6GetlC7bsf3TkJUwCSaEWRwVOOhjiehoIYWP3M+F3qDNAk9OcCXI8lYok/sjv6k6+wthVqA= X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR10MB7097 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.9,FMLib:17.12.100.49 definitions=2026-01-06_01,2026-01-06_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 bulkscore=0 suspectscore=0 spamscore=0 mlxlogscore=936 phishscore=0 malwarescore=0 adultscore=0 mlxscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2512120000 definitions=main-2601060131 X-Proofpoint-GUID: jz3GHYn9O1fTKVxgCtNODMuJmIuPQy0O X-Authority-Analysis: v=2.4 cv=Y4L1cxeN c=1 sm=1 tr=0 ts=695d2678 cx=c_pps a=XiAAW1AwiKB2Y8Wsi+sD2Q==:117 a=XiAAW1AwiKB2Y8Wsi+sD2Q==:17 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=z/mQ4Ysz8XfWz/Q5cLBRGdckG28=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=xqWC_Br6kY4A:10 a=vUbySO9Y5rIA:10 a=GoEa3M9JfhUA:10 a=VkNPw1HP01LnGYTKEx00:22 a=yPCof4ZbAAAA:8 a=EoYbDyGkc-fg8F-L9o4A:9 X-Proofpoint-ORIG-GUID: jz3GHYn9O1fTKVxgCtNODMuJmIuPQy0O X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMTA2MDEzMiBTYWx0ZWRfX6LzDI7KgIM4z Lkyy5J5GN5FdeZKmBQ1lRw51vKezKcwwWOfjH0mm22d6jI2WyIbY4CQX3iLQUto25OaTxj+zixH mDa7CvN6thtkVOcyB1qgzUU7Z6090bVOT1xp6sbUpWNj0WFkNEYTzEhaFvvBAHPqW5WT6wRR9Ah 07DTOyhiHjjjNh824HZaykIQ9fR78ZkFbwCIueI59pNKJ8bdjNIvnbpqm+umE++yh08uAh3j2uU rNEBYuCb4EyDprUHML/VKoT1H/4XLLe77DQWsWPwV52oLdvcsHt3nVvC8Q2z4bEivIcleafJbQP xEEWQykeMdVe/5rXP0LW4lqZMTHu7+WpQNjRb9+b8gB3JQSzShfu5r9xtLMVUssRBRhYpfs+Fvd w5ayeISDir5JY4urOSkkf2VkXwCl3OLFdOVpsdEzpA5s3XCyQNSHgqZSUU0opvP76q6NzMANUHJ ZLGHj6gSeT7a3nKheww== Content-Type: text/plain; charset="utf-8" For both anon_vma_clone() and unlink_anon_vmas(), if the source VMA or the VMA to be linked are unfaulted (e.g. !vma->anon_vma), then the functions do nothing. Simply exit early in these cases. In the unlink_anon_vmas() case we can also remove a conditional that checks whether vma->anon_vma is set. Signed-off-by: Lorenzo Stoakes Reviewed-by: Liam R. Howlett Reviewed-by: Suren Baghdasaryan --- mm/rmap.c | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/mm/rmap.c b/mm/rmap.c index 54ccf884d90a..de2cbe860566 100644 --- a/mm/rmap.c +++ b/mm/rmap.c @@ -314,6 +314,9 @@ int anon_vma_clone(struct vm_area_struct *dst, struct v= m_area_struct *src) =20 check_anon_vma_clone(dst, src); =20 + if (!src->anon_vma) + return 0; + list_for_each_entry_reverse(pavc, &src->anon_vma_chain, same_vma) { struct anon_vma *anon_vma; =20 @@ -474,7 +477,10 @@ void unlink_anon_vmas(struct vm_area_struct *vma) mmap_assert_locked(vma->vm_mm); =20 /* Unfaulted is a no-op. */ - VM_WARN_ON_ONCE(!vma->anon_vma && !list_empty(&vma->anon_vma_chain)); + if (!vma->anon_vma) { + VM_WARN_ON_ONCE(!list_empty(&vma->anon_vma_chain)); + return; + } =20 /* * Unlink each anon_vma chained to the VMA. This list is ordered @@ -498,15 +504,13 @@ void unlink_anon_vmas(struct vm_area_struct *vma) list_del(&avc->same_vma); anon_vma_chain_free(avc); } - if (vma->anon_vma) { - vma->anon_vma->num_active_vmas--; =20 - /* - * vma would still be needed after unlink, and anon_vma will be prepared - * when handle fault. - */ - vma->anon_vma =3D NULL; - } + vma->anon_vma->num_active_vmas--; + /* + * vma would still be needed after unlink, and anon_vma will be prepared + * when handle fault. + */ + vma->anon_vma =3D NULL; unlock_anon_vma_root(root); =20 /* --=20 2.52.0 From nobody Sun Feb 8 15:58:01 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 7266B33AD9D for ; Tue, 6 Jan 2026 15:06:19 +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=1767711981; cv=fail; b=qfXYP2Q/+N5xm1uXCFWfZp/h48DTHXX/GqB8ROpUrNMya93VfItpcM8gsyU9wtQ6AZ2IA3uFzTWc/OXUra9QBkKu9KKrEpIW5Wqji2mfmVliA0W+TLWqMX4+uXqAEWLUIXwVGMa4kLgxqJdU7Q40738RnfqPNYbRkzBZpRtRTr8= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767711981; c=relaxed/simple; bh=OrWsKRi8WwvsNWsFkvdAwlb54aE/2enfpCd1FkMsHlI=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=jwHdyr7YXcSRftQXO5ddEWiAqKiALbF0YdRjImsDxhvnONU+Tn3OsreNJm2ODp85YHGaImLBEydwjM8GT/IS/82PDM+n1j5c7+aSJ/3qDIHwJxK1F+6WsZGN8S39sd6yHKNZqgzp8cv0BBMbkL5Kc4z/Oeh5NqrR4iuEktXNB9M= 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=WUDXwo9C; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=G+7xuz3u; 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="WUDXwo9C"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="G+7xuz3u" 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 606DhwTc3645869; Tue, 6 Jan 2026 15:04:50 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=o0UDm9SkkOpni6U8C5QNCM1vV1YWtwNBUbIS6jHkU+c=; b= WUDXwo9CUvHOX1i+7vB9BrXlBfX1phs53bdCvQ+8E/agcGO4FLK2ulfyKjjnLKwd NZSrEEtvBY0vDVE0NSnY8Y+DmMaE2Io8JFEDXLQMlIwmw1xWhJe2XLxYEDI9QVpS PgvbZYiY5eV9hcxlUkWK4FoQr4WbB3hDAUz5+QqhUq+lT0PV4JjLKCxR/8bavLxq wWPGeoQm8zKM3Xr01tHSzVOHL+FMMQSlTRIoRahqGHs0bWLEhDwdmtjV61C1sGkb zeqvr7qlnuRanVyqGvukaLacXMK4dmnaNuMH3SwouC/MVrUqsnXpBUYUI0zpcyr8 doEx4Wh0T3yXafWKx8GtGQ== Received: from iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta03.appoci.oracle.com [130.35.103.27]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 4bh3hq83u9-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 06 Jan 2026 15:04:50 +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 606EZHIR026252; Tue, 6 Jan 2026 15:04:49 GMT Received: from mw6pr02cu001.outbound.protection.outlook.com (mail-westus2azon11012030.outbound.protection.outlook.com [52.101.48.30]) by iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 4besjjy3fd-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 06 Jan 2026 15:04:49 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=n6FYYwOCz9hFYZodYksi0G6MjnDuANvfISnI+lazo1ckedg+o3LeTLDED77xGmSYIyX6N4b/875VRJXOKVVLdM4I+djlK0b3f40H/lqcKu+jbBeClSh73FqzFBzorwR2sVfhfuWAxdJLO4K5VHrh4/v/SRWXwMAe273oFkBwF1+SRrKQwCxY55Q6RBTVcDySpbcPwOql+03CWBd6HaE8Jfp7NQk/VhjxGWaaSK8HbfhJs5CFgSFf1G4G3JRSqBAIlBFsRAl9GlW4JI8GKOLqvnxodp+iCDC2PYCODDCQD/pKygTYIN8sI8eKq7QJhyBgjJQBLJ0s+3krltasPvN5fQ== 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=o0UDm9SkkOpni6U8C5QNCM1vV1YWtwNBUbIS6jHkU+c=; b=DwzCg8r7gqd34YPkyoOKCv0c8RpTXgoz3cjtr3rhHsYroaOZaXB2o0F1B+XDVcsnDUVSEfhQYqHmzNxPHa0cQcGmlcU9lLzhPpHa8DVBv0qJ3UWPwu1nBa2Yo12VNFn2J1rVhjBa3dqc9pzFDr4vxO9ZpjFa7uH3YBE/GiHgAZ3Gtym6PYu9FvPZiO66RMPMRdhy/GztPGd6CENddNwtFAuFCM1oaEpXMTJJvE9FRK0T5pkb0G3HgRlZTTuW/HA/RkaYr2hpoxUpXJadar9Qs46pJ9EM2TNCCuZXKZGbl/gXvKfGWvKjJmp7qb9bnI4wTKa1yWkJWTQU3/hOxTqWkQ== 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=o0UDm9SkkOpni6U8C5QNCM1vV1YWtwNBUbIS6jHkU+c=; b=G+7xuz3u8mQtR0eKxJRXvEWhZenoiRjH/HdHCCrX9x7b3GUWDurHDD8rP7lX0NO1qjNfSqWytcywPxuVLeW4D4FEddMPF435lU48A1u/Yx0UuHQH3OKov0TeOkza15TtGKl2ZYh9KWGE372GPP8/grmEvEZW6brurKaMLgSqSlk= Received: from DM4PR10MB8218.namprd10.prod.outlook.com (2603:10b6:8:1cc::16) by DM4PR10MB6039.namprd10.prod.outlook.com (2603:10b6:8:b7::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9499.1; Tue, 6 Jan 2026 15:04:44 +0000 Received: from DM4PR10MB8218.namprd10.prod.outlook.com ([fe80::f3ea:674e:7f2e:b711]) by DM4PR10MB8218.namprd10.prod.outlook.com ([fe80::f3ea:674e:7f2e:b711%6]) with mapi id 15.20.9478.004; Tue, 6 Jan 2026 15:04:43 +0000 From: Lorenzo Stoakes To: Andrew Morton Cc: Suren Baghdasaryan , "Liam R . Howlett" , Vlastimil Babka , Shakeel Butt , David Hildenbrand , Rik van Riel , Harry Yoo , Jann Horn , Mike Rapoport , Michal Hocko , Pedro Falcato , Chris Li , Barry Song , linux-mm@kvack.org, linux-kernel@vger.kernel.org Subject: [PATCH v2 3/8] mm/rmap: remove unnecessary root lock dance in anon_vma clone, unmap Date: Tue, 6 Jan 2026 15:04:28 +0000 Message-ID: <9b5a438237e4ea3b19a986a4f8fddb8848cba54a.1767711638.git.lorenzo.stoakes@oracle.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: LO4P123CA0230.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:1a6::19) To DM4PR10MB8218.namprd10.prod.outlook.com (2603:10b6:8:1cc::16) 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: DM4PR10MB8218:EE_|DM4PR10MB6039:EE_ X-MS-Office365-Filtering-Correlation-Id: e5ee5ebe-bf47-423a-8112-08de4d34ec48 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|376014|7416014|1800799024; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?G64JiF5DArQqqiSUutFTgJ0q3GNDIaUtVuI5HJD3SY52CWr6Gd0pHg1epo+R?= =?us-ascii?Q?HeV9xF3W734aSsHVTQuEYMRyFLr8x326L8iZk3YNEvCmllFVTHhI2L8jH0F4?= =?us-ascii?Q?R+wX6BqK9Ms2uWa7AixtAXDK4ui5rzst24ZmZ22iYLvCUoqLJCMoiQSimKG9?= =?us-ascii?Q?CB2e+ZwHSCHQYo0XwMEA4EZQ6RFCDY3NYRMVPUJURfok/XG1Q3Fr/zPZsW8F?= =?us-ascii?Q?Pck9X72e0EEUY9eAbJNHbOAEM1TKAMsqN3NKyXmVEW42o4/JnQMTTqt5ifI3?= =?us-ascii?Q?W2dzVBgu/bFGqG9VEcUYF6i8aiMjnGBP0rqBEhieJ25NhoTutFjr436n+qvs?= =?us-ascii?Q?36bEz3Aflmf3CZ2mfvfSzECQ+xKPfPnSAQHhH86YDzn/g+9QBubnZ89DIK/G?= =?us-ascii?Q?exP6u6krPPcy0dgVYqN8v6zbs26d03pQ+PGJa+qxJxviNS7yBp8nx3K5lbSM?= =?us-ascii?Q?nHShVVPMgHuqoW+95VlCGGsJq+lLMGUmFIf9D+dYM6WtHoNradV3cyiJA3ih?= =?us-ascii?Q?4taFk9cvFtFZl8CGtxR3JyGrlFRfcGnQsIjiyn9cDHYQYGKvDnSNn3H27PjO?= =?us-ascii?Q?6op1lRFmdQPWtcDXWrEQAiB/UZdKurhT9X1fke3ltsmOFpZTUg5nli+fZklF?= =?us-ascii?Q?qqNzlo8EVwYsDECcU3YQ+xvar1Ua8p4LRJ+vr0hTv+strRYAqoLMZIWY4dc7?= =?us-ascii?Q?nevMOalj3jsR34GAxfv9+bR7Z1qe9SHWjrbT3NedNKAy+ZWgOUI044zfJRjd?= =?us-ascii?Q?2DsahYO9cqfTsqJHAORBqnNAxnMJc3Ft5dVbVxwW1lLtfymkaxnydmMGVzAE?= =?us-ascii?Q?KG2dYrZFvvJkx29ilepqX0in0/dTagatjnGFINp03/dkva0atpBZp6hFPnoj?= =?us-ascii?Q?RRpbCbXeEM0Ji6P5wJ/hklgHJ+8ht61ndJ/SA8YavL2AXnWAndH2WRbtykRM?= =?us-ascii?Q?xfg84fBild61z+/IgWAuJJglFg9aNrknYTxS7L2SpKI8ZhGi/2sM8zPSVa/H?= =?us-ascii?Q?H1fpckfvr6g0IQLfZRc4TPbdkTU1OEpMmXNJm5HPdxJrznxDESCdHWhNcrRp?= =?us-ascii?Q?C26Qhdkljz5yAmhwysnAKjxqJtgEcA0lBIoz8e99wjN8MFLBok0x3a+YiRkx?= =?us-ascii?Q?VNSPZTS5NyJMxq9RGrD2gqXQKuFU9/MhtOHdKCeIXU4R3ESPAaVpkMBTTaPp?= =?us-ascii?Q?M9TYPZA10F8Qj5utl8pxGgR1glqPQfXG4iB5jJfWeSLZV7XNZqKyiCpVWK+a?= =?us-ascii?Q?0I4o+UnfSKZX+51vlcoqoqpsMfFuyl/OS5s2bHkzwWSAtruu4gYbssAH18vm?= =?us-ascii?Q?MBaOQza6nIGichVfNku0Gas6ntzxsDN/Mt7NJGRetKyU/XYGY84Ysed+cvFR?= =?us-ascii?Q?zhdf56ivEQWKHkVfXvbL2Dd9d0ahbyBZFGEgs3i4B8axI0osR2RCayfcH/op?= =?us-ascii?Q?SHBgdjh7hl5tq7r+jFkDvZBH1Qxykthf?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DM4PR10MB8218.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(376014)(7416014)(1800799024);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?N1Y/ClA8GBc2AcHM5ZAgLXSZiKB5R/i9+NqHbfdRQxlS3TMCcHCDKe5pTlt/?= =?us-ascii?Q?WegD0xfX5sajGpODUrLJa6h7jPx6JMCTFcPI6Z78HVkSPDUHREzI0kLiGS8T?= =?us-ascii?Q?+ssmNlOg6f6G/KS4LGP/3xNqA1da75+AkcpPDyqQJx3F7iSAvGsm6Jt3EU58?= =?us-ascii?Q?/cKW5vwNQHWxKPVGHyTsT5blVZyvRpmdlgGprur+D+z05EzhlvdH2XroJjTc?= =?us-ascii?Q?xb5Eb2bzvUeRtmpCdo1Cr968Eenw8bvPD7CXgBROBBB+s7tdUpdtrhMT+oPe?= =?us-ascii?Q?GXJ6/r8hM4JpDjN9Aerydybi8w7U2+sKA69jlzbZsXYyAIxl54gMKXCEslMY?= =?us-ascii?Q?IamYZeNowmHwmuBIVjeKaM0UAnxol+t3V5HRXxgiHg3DyZ5NDe3G5t4mIzjP?= =?us-ascii?Q?ujCh4pf3UykswWvM2Okbwwnv34Z+pwdMysf1Fr//1qbq9ZD8NNs+FeM+jo3U?= =?us-ascii?Q?UhfGqnlziWAApyAo/PpWkC0Hk7aGJ8Qm/pNnV0cCiRgM/3L4hxZfAm8BdSwa?= =?us-ascii?Q?WyToX5HAhc0Eim0/X4++ilSRMxg0zGAfGN4J3QnUtljVnjk9vcQbDWS3L3IG?= =?us-ascii?Q?160XHXzX98dFBuuuogCg6mVeD71TipGPqawiSpqigqi5yCey+UNVXuNQy/VC?= =?us-ascii?Q?Q9brHtfOKNZBa0i8ERlP+Ou8U0PFcvOdr0fEmMXFvifYYhd/fukNyr561Hb4?= =?us-ascii?Q?fOeEbiaIZ4tveYbj0fSnQ1F/YtY3cmdDoN6HLQ4WvII5EjM69yozMQHRyM8H?= =?us-ascii?Q?Z3/kepBTlEdHh89TdL/x+Ldf8XroY1X9g/E30lH1CyK76E7Mkk52KebgYxlT?= =?us-ascii?Q?rBMI1ac/NXOU8lPd/PeROdNQcdM1Qs01H1lKSNrIen/svZuETMFifuLGv9JT?= =?us-ascii?Q?gdtaE1Meiyu6iHVQcf0ecEUh4+kE/FSxorgxvbB2w8c4RBlyFMpaYEUJvD/j?= =?us-ascii?Q?9qKyEgYniiMdC8zUnAlWNWTpyCTvyYZ10qvsjQWQ55hA6S8lBDf+lBpX4H6a?= =?us-ascii?Q?9ZPtDzZQr1OuOHth9MVVOBULyvaPKLKkuTJdJJ0Hx/fwJmBcd9NU11/OZOHf?= =?us-ascii?Q?zxmVxd9WW8/Gt589u0fKTVD6/39qxnIL/1Oe5io75mt+WoTvkZ41E3RgTB6s?= =?us-ascii?Q?TCA7EOfLo8Q/nO4GR3ckiMeL016UFhLW0Hc+BJeqIpeFYOnbU55Kof2Z9b93?= =?us-ascii?Q?FkOSmm/ukK8I5OdP3p8riBUIxcLKU3WTsBEeIAI9+CQJTg2qbgPlHKHEelJc?= =?us-ascii?Q?bzp3/QzU7vNWpabhnCt+JOgZNM/OdvBvw0IlSRkoKzUZLZ6osmZ35wlFcaTu?= =?us-ascii?Q?XQxsztwaQzCHMBhzbbKlmbfFyh2GFrLXjMK/RN03T7Bd+HJBQdpHA1Ycmsx8?= =?us-ascii?Q?/ZM/P1KXHbozeHnuP//6dGlELgUUAu3UXbbhO4mjBJnkeVvrM9J6dmUsE1Bh?= =?us-ascii?Q?PNF5QeAxo3llGDeAirGHfEB8zcjuGtdPEbL8SDMhhrm/pfGdHf70Z1pL5PbT?= =?us-ascii?Q?zUFvW0HFyeZeOPJI+IaKljdjSND82BgLvMNj0E76b4EJm0ytca4ulZD1UgC4?= =?us-ascii?Q?7UJJF7V9zTHnQ2uoL2vFfyzzXPKy8HF2fPOJ6fURlB3REwPnRFbstfZxIq+O?= =?us-ascii?Q?s3BDTsMoiFcshXuMJ3r3hnrdBnPEF8Seh8lZLWbnafgrRWp/IyQyp+tFMouB?= =?us-ascii?Q?kcCtVnp8/2wgJDFVt4Ah7af6ZaWRovyE2vtMpI1eQNu2sj5m18hev3trx+vA?= =?us-ascii?Q?3VS3Fi6mzXDPLmu2iZZCtt/jzYVSzxw=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: i6kIR2uDL+8gyuD9xibnWeiDQN7QCuJe+puAAH0NSj41zt7LlApD2ZPuALC8F0a6J2eknB/6EBD9mzLeYAmJQXTbukIsIQl3cLNtsFb8CdeMeiD8HVAleanMcKWXTZr0VdJAKxewtjbfcGscTA6tlNdoEw+ZK88cT/sOwHTe1NtSEAwu9lz2yXEnSZ8vHFZZ2y1CP62oy6PXxUsAHkfVZ5nu0BdqXwgJpQ58IImpD8v2K8UIP9WA6iWhnmaaGx4M5HRrav8GSlLJwQgswPg9WrIG/RvqBSVgFqyd0t/zM4CbwFWkiVdb4+1UAjabZjh59fMGGjmstOLCh8svragm2WjCrRUJ6odhr7SMBD503nGuFv6J/W9Yg2/5PwWtnTz4rs7xLcnQclhzstqG3GBff2vWccojEBsvb2svlJLtsJA+6qk7q2GWcZIq255aY8DvoNlCDq25aI7w99avz9K+tGHLnlI9Jy+PKLZ96/ULVJt/1Qq9Nsq5wbIW1s7yW1FUjJE/MoopIU+NkeIZalT2AlN5VTzaQQ2tU6iXh0+B0a3uvAeMVr5vhzx1a8QcM8gGrm2EA7wQF6xFSZCORF83MZ9s1nBljpewCJ2a0HBxI0Y= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: e5ee5ebe-bf47-423a-8112-08de4d34ec48 X-MS-Exchange-CrossTenant-AuthSource: DM4PR10MB8218.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 06 Jan 2026 15:04:43.2994 (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: 69fDE7zMMfwqsng3LvJ4QpfXUCl4XzlUfeHb9pRBVWJtXbQA+Tdi0EZOctT948XkPYCwDzMHXHye7d0O/eDbqT8S+bCc9dLqfd/h8vSSo60= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM4PR10MB6039 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.9,FMLib:17.12.100.49 definitions=2026-01-06_01,2026-01-06_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 adultscore=0 bulkscore=0 malwarescore=0 spamscore=0 suspectscore=0 mlxscore=0 mlxlogscore=999 phishscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2512120000 definitions=main-2601060131 X-Authority-Analysis: v=2.4 cv=Zvzg6t7G c=1 sm=1 tr=0 ts=695d2492 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=QDGw0KozxnkV29ZdokgA:9 cc=ntf awl=host:12110 X-Proofpoint-GUID: m2hsklSfZ0yUbzuhcQbsMDmOaA7OoSee X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMTA2MDEzMSBTYWx0ZWRfX8jxedTDdE0B/ lDhbdOHf62ZRL58PZSKTAVNEXd07fSlupidmXolwQMZ61wzWYNIxo3DMz92P1DAORRgHOfG+fw1 hb4yyKHZW7ypHsFqVYyjV5OkKN1IZJ1F5tssfedGfuBVXpPHjTEQyF/S2hQUiVPzrEjJyycd3yo A5ESBlTYB2NpRk2kD8oyTMQiMO8N1/frW7yNqMWr/BckVSScOq3z1jqrH3UPE6ZKmgQCVMImGtO ZDf4OkF6g6hBM18f67LFFebpDmZ3zfb+1MEX6pSew8SUt2kWzTeIGFL6nqCEdCXvMad56XCDEp8 XQtiEeJ29rqRt/JAQudSeRWLicbhfAOr1h4Ninv7JnQdWOVkBylEvksbNG00G65DeNbylU6nC2N uSltMd0TaqQEO+faFt/Bn0aEgzsnNb0ZbDpYNQHtQkfxt62ExWggqbJrUtJG6OE2opeVEYv/UKj gMV7S5Ara1ECVxfFoBBhXrjqKHQe5gn20Q1Wqwr8= X-Proofpoint-ORIG-GUID: m2hsklSfZ0yUbzuhcQbsMDmOaA7OoSee Content-Type: text/plain; charset="utf-8" The root anon_vma of all anon_vma's linked to a VMA must by definition be the same - a VMA and all of its descendants/ancestors must exist in the same CoW chain. Commit bb4aa39676f7 ("mm: avoid repeated anon_vma lock/unlock sequences in anon_vma_clone()") introduced paranoid checking of the root anon_vma remaining the same throughout all AVC's in 2011. I think 15 years later we can safely assume that this is always the case. Additionally, since unfaulted VMAs being cloned from or unlinked are no-op's, we can simply lock the anon_vma's associated with this rather than doing any specific dance around this. This removes unnecessary checks and makes it clear that the root anon_vma is shared between all anon_vma's in a given VMA's anon_vma_chain. Signed-off-by: Lorenzo Stoakes Reviewed-by: Liam R. Howlett --- mm/rmap.c | 51 +++++++++++++++------------------------------------ 1 file changed, 15 insertions(+), 36 deletions(-) diff --git a/mm/rmap.c b/mm/rmap.c index de2cbe860566..6ac42671bedd 100644 --- a/mm/rmap.c +++ b/mm/rmap.c @@ -232,32 +232,6 @@ int __anon_vma_prepare(struct vm_area_struct *vma) return -ENOMEM; } =20 -/* - * This is a useful helper function for locking the anon_vma root as - * we traverse the vma->anon_vma_chain, looping over anon_vma's that - * have the same vma. - * - * Such anon_vma's should have the same root, so you'd expect to see - * just a single mutex_lock for the whole traversal. - */ -static inline struct anon_vma *lock_anon_vma_root(struct anon_vma *root, s= truct anon_vma *anon_vma) -{ - struct anon_vma *new_root =3D anon_vma->root; - if (new_root !=3D root) { - if (WARN_ON_ONCE(root)) - up_write(&root->rwsem); - root =3D new_root; - down_write(&root->rwsem); - } - return root; -} - -static inline void unlock_anon_vma_root(struct anon_vma *root) -{ - if (root) - up_write(&root->rwsem); -} - static void check_anon_vma_clone(struct vm_area_struct *dst, struct vm_area_struct *src) { @@ -310,26 +284,28 @@ static void cleanup_partial_anon_vmas(struct vm_area_= struct *vma); int anon_vma_clone(struct vm_area_struct *dst, struct vm_area_struct *src) { struct anon_vma_chain *avc, *pavc; - struct anon_vma *root =3D NULL; =20 check_anon_vma_clone(dst, src); =20 if (!src->anon_vma) return 0; =20 + check_anon_vma_clone(dst, src); + + /* All anon_vma's share the same root. */ + anon_vma_lock_write(src->anon_vma); list_for_each_entry_reverse(pavc, &src->anon_vma_chain, same_vma) { struct anon_vma *anon_vma; =20 avc =3D anon_vma_chain_alloc(GFP_NOWAIT); if (unlikely(!avc)) { - unlock_anon_vma_root(root); - root =3D NULL; + anon_vma_unlock_write(src->anon_vma); avc =3D anon_vma_chain_alloc(GFP_KERNEL); if (!avc) goto enomem_failure; + anon_vma_lock_write(src->anon_vma); } anon_vma =3D pavc->anon_vma; - root =3D lock_anon_vma_root(root, anon_vma); anon_vma_chain_link(dst, avc, anon_vma); =20 /* @@ -346,7 +322,8 @@ int anon_vma_clone(struct vm_area_struct *dst, struct v= m_area_struct *src) } if (dst->anon_vma) dst->anon_vma->num_active_vmas++; - unlock_anon_vma_root(root); + + anon_vma_unlock_write(src->anon_vma); return 0; =20 enomem_failure: @@ -471,17 +448,19 @@ static void cleanup_partial_anon_vmas(struct vm_area_= struct *vma) void unlink_anon_vmas(struct vm_area_struct *vma) { struct anon_vma_chain *avc, *next; - struct anon_vma *root =3D NULL; + struct anon_vma *active_anon_vma =3D vma->anon_vma; =20 /* Always hold mmap lock, read-lock on unmap possibly. */ mmap_assert_locked(vma->vm_mm); =20 /* Unfaulted is a no-op. */ - if (!vma->anon_vma) { + if (!active_anon_vma) { VM_WARN_ON_ONCE(!list_empty(&vma->anon_vma_chain)); return; } =20 + anon_vma_lock_write(active_anon_vma); + /* * Unlink each anon_vma chained to the VMA. This list is ordered * from newest to oldest, ensuring the root anon_vma gets freed last. @@ -489,7 +468,6 @@ void unlink_anon_vmas(struct vm_area_struct *vma) list_for_each_entry_safe(avc, next, &vma->anon_vma_chain, same_vma) { struct anon_vma *anon_vma =3D avc->anon_vma; =20 - root =3D lock_anon_vma_root(root, anon_vma); anon_vma_interval_tree_remove(avc, &anon_vma->rb_root); =20 /* @@ -505,13 +483,14 @@ void unlink_anon_vmas(struct vm_area_struct *vma) anon_vma_chain_free(avc); } =20 - vma->anon_vma->num_active_vmas--; + active_anon_vma->num_active_vmas--; /* * vma would still be needed after unlink, and anon_vma will be prepared * when handle fault. */ vma->anon_vma =3D NULL; - unlock_anon_vma_root(root); + anon_vma_unlock_write(active_anon_vma); + =20 /* * Iterate the list once more, it now only contains empty and unlinked --=20 2.52.0 From nobody Sun Feb 8 15:58:01 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 5E4D4345741 for ; Tue, 6 Jan 2026 15:25:36 +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=1767713138; cv=fail; b=pbLTvFZF5LJr1aEVAeRbby5sqaDETbuv2TR06vE44HGK+0PEO88/fCO+KV6van0TdUw+i/D45QBx3N0ZCQ8yu5LBsmRTpyH8PYqk5l4CXfAHevZgHxwsrwr76cmwYW5BxAI1yO3QD+tB6arJExazfprr/QRNcLviTlKLF4lxqRc= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767713138; c=relaxed/simple; bh=Ta2tieS1BXPcP+gpXt/8VmclVZmYWVFpenqkPMaiIaM=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=YNHDjBWzWHU/bNhKwmN/MxXk8E/nbpO5zZDhrZUr1J9R3Hhvbs0Y59GDdQLv2bdB5Oez73Q/M5L51iYYHJS70Ouw19dyLMsY0bUuLwjG08lQN9nMieYcaEX/qAMWX5kyeeaRlzCjGjjMy5byuqLClG6UNY9Qrbkjmr0FAMBHy5c= 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=CwD1n0Co; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=Z40K04Zc; 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="CwD1n0Co"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="Z40K04Zc" 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 606EpWm14005578; Tue, 6 Jan 2026 15:25:12 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=GzQHNw9E415st74yAbQmtScUd6pNiNxYH8IMJYdEMPg=; b= CwD1n0Co1MCSd3wtA+Kcal/9iWwDtVGvS0cPXhRZqIOpnKz3nu/0aEcPBI2rdbhK t1CU7xPLwLuQuZdU0SH7jqtc3knZA/6oGt+lNTwRHzUkgk5OPhhnScmRVUIe/78y I/LKvF/LZWR8p0c2R5olhu9nW5w7w+Qw9QpJ7LbjhCDLAvsMgC24pKxhBrMxDBtW 4NVCHRwMiwivNrwETRkqcB+sUTTD006MBckimrxaGw7GKoJKasjZJCgIAOmOqEMd F738qDRDUZy5Oz/k+9HpoKjpGs0uqW5fopVTKXALvLdBvP7YzQH0uA4Kkhb1QXBG NVBZUp2a99la4l2fifLv0Q== Received: from phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta03.appoci.oracle.com [138.1.37.129]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 4bh4hag1qj-5 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 06 Jan 2026 15:25:12 +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 606D4pgo033898; Tue, 6 Jan 2026 15:04:50 GMT Received: from mw6pr02cu001.outbound.protection.outlook.com (mail-westus2azon11012001.outbound.protection.outlook.com [52.101.48.1]) by phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 4besj8phg4-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 06 Jan 2026 15:04:50 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=wAn4u+4rFPMQYGbDfMQbB5CmFK6oq36BTaJRxfhUl2uoPW6H+xRCi7VaKo9ddmRXU09C32vCOKQVMEWx9xoxqRQUlsyUKZFgCydCq69y/XiGj4VIA/0U6+bVdPn0rU6PjoDczeRJFrHgZjv22KcXUfFa2LbOZ8FiEjqsFWj/Jv1qy5P5c91kkoBbxV/d+N46xpQPVhPDt9kA0hZVw81QeosD2qje9xO7XiQYujLGnLk9o88OEMBl+3vJWRo/57E69QkmS9zTrupQeVJTdES2lL+VyGJLblp2rbv10MRrm8pjmVtX/7i7yX3G3d9hy3VDc/jx9CDholH09XOJuPLBxA== 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=GzQHNw9E415st74yAbQmtScUd6pNiNxYH8IMJYdEMPg=; b=ucvIuQohS1GADimn21KpvmfXt9bZA9wImu4+uiTt+f4J02gsytGHwJ5GoDGQHue+kBxWtkw2wZuwvlhUc6vQ7RJLGz261ojg2z9JXEAWwW7doa5m1kG23em33xJdyQeBmxefeR5Tq4JSwuKhb038unZp0dqcjfCH6rzqr/g8ls1BEa4m3i+fDxO/EIeUDUUe3OM19+AchuKO/KNolY6FM6Sz31TRGhFQ1fk3YBTCD0wJmj80X7ij7nkESpezGLv+BmAKNxjzd1NedLkS1xIyK4S+X+BYcyT1OyrHgLYi05poM771D0C2ANygaUY1mGAonVrvlzymQ6eXYTAYrJ8y/Q== 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=GzQHNw9E415st74yAbQmtScUd6pNiNxYH8IMJYdEMPg=; b=Z40K04ZcaeuYrN4crEJOjouqFtFQtDlrsBHhoErC7sZjIj8AhZ3DmakbjH85fv0rBR+iVCj1+6IAGhsDMch71uk/CcdNz3dQXjEkol6QKOuP3s8LXAPYMGTpWN85wmsFZAj2yMzpEiQ7z/inwjgNRuRGI5y720mIIZHZkmewbiU= Received: from DM4PR10MB8218.namprd10.prod.outlook.com (2603:10b6:8:1cc::16) by DM4PR10MB6039.namprd10.prod.outlook.com (2603:10b6:8:b7::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9499.1; Tue, 6 Jan 2026 15:04:46 +0000 Received: from DM4PR10MB8218.namprd10.prod.outlook.com ([fe80::f3ea:674e:7f2e:b711]) by DM4PR10MB8218.namprd10.prod.outlook.com ([fe80::f3ea:674e:7f2e:b711%6]) with mapi id 15.20.9478.004; Tue, 6 Jan 2026 15:04:46 +0000 From: Lorenzo Stoakes To: Andrew Morton Cc: Suren Baghdasaryan , "Liam R . Howlett" , Vlastimil Babka , Shakeel Butt , David Hildenbrand , Rik van Riel , Harry Yoo , Jann Horn , Mike Rapoport , Michal Hocko , Pedro Falcato , Chris Li , Barry Song , linux-mm@kvack.org, linux-kernel@vger.kernel.org Subject: [PATCH v2 4/8] mm/rmap: remove anon_vma_merge() function Date: Tue, 6 Jan 2026 15:04:29 +0000 Message-ID: <1f5d605c2b35462194782fd17212a4d6c060e278.1767711638.git.lorenzo.stoakes@oracle.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: LO6P123CA0004.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:338::11) To DM4PR10MB8218.namprd10.prod.outlook.com (2603:10b6:8:1cc::16) 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: DM4PR10MB8218:EE_|DM4PR10MB6039:EE_ X-MS-Office365-Filtering-Correlation-Id: 9e22e03e-9fc3-4a3a-eddc-08de4d34ee2a X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|376014|7416014|1800799024; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?f0+lMOJVrw0jKsopvvz0BUgWBaLKgXFXH+3xblJEgitw/1d4cvOIsirTyCsv?= =?us-ascii?Q?5S8JLlyIUW28u/l4wpmlZo6NKNWZ98YqS16k5mg6WstSP4Th/4ZtObKdctja?= =?us-ascii?Q?Xl06ZXwBZLx1js0Vmn0YWsl41XqBf3Be7adbm5fzFBn1Hp47xWy3Lbhj6NgN?= =?us-ascii?Q?nnfX5purELdHQIasbqImFalAihk41PAXtCveEG0eSD4U/1OKHbziPMUHjxQ4?= =?us-ascii?Q?Nk/9K7IM3KtQeYHXGxnfHvOjwame5NCN0EY0mr5TJVZbEPvMn+sUPTYj1tg+?= =?us-ascii?Q?yDHsaUY3oldj5CERxQWDYofSHCgpKcYioViDjP4Ol7vK2JEV+c9nFvR/HPV6?= =?us-ascii?Q?3ukbR6JB/OW3ARgxAF7+SGEDh0o65ogPOPFQr0NBfMivHkvo9op5PY3FXkjj?= =?us-ascii?Q?ajPFKIW0HUBxrbElh9AzQL19h9R+V5W5j7NHgqeb0tZic7+Swl3u3Q2hwhgc?= =?us-ascii?Q?tXBqrPOY1d6lGlIiN0s3JI02tuCUm+zFyiwd0A8dgura3gRZTxpN3OaJBY9W?= =?us-ascii?Q?e9AT1oUBQucEhBXfy8upC6XPjMVl9fGYtlP/Ukan/y6pQUGgGzDs5yikCnop?= =?us-ascii?Q?ZlN94VR7OIGoA+vWaF9jB0B8N3z7+nv8FrSRtPO7boxiYBE+WyxdiN+TFQxZ?= =?us-ascii?Q?SYJIyiGkD1whiv2cqKPROkVgb5BAF8JKbNEzTKm5r99VKRq65duBiKdQkO6a?= =?us-ascii?Q?u7QPhNuSCdqyLrKmZTo2trJm2AWdowxn218Fi3J7mnPU3v2eaa32JcnhpYCm?= =?us-ascii?Q?RHBIAcNiqVFx4bzxFbgIpqova/dBoyyfG1A3rTuyry12K1PGY/59QbrQ/N8K?= =?us-ascii?Q?JaTRBapmtkYEQYfwNfZY9cHn8vn0SooLsoWm5jdON3wl9F8lJ/SPeQczPhM2?= =?us-ascii?Q?ZQmVM75zUVKV5dk5p5wE5ddZF6BYuf5vftoBwl4OrE23qLfVhFpwgwIzNF3/?= =?us-ascii?Q?j+DP1jtbmTUIpeRdtRGGjhL5ziasO54TcTgpT3W+9AD1JRsAINzuWBssZ1g0?= =?us-ascii?Q?B+7m4O/wc+P2l4F5/02X3S9CqX+aE3vJZBUsh+tKb7NntiKPO47oo1ruiSka?= =?us-ascii?Q?HB3ACQAvs4ZHfrsjOZgO8eD5uOTVWVaFkgkjIubbFGV4YgBzOV1/2Idx2TH1?= =?us-ascii?Q?EP3Y1M6nNrgcJjX9EmkVXd03i2dCWsGtl7L/D4DQsa96VWOFkyZ5Z4FuP9n3?= =?us-ascii?Q?fsfEj+jhl2cvWJPGVpUTOVTNU9aAeazdK7hhA4utZPTHLib/ZSzV1gsLSx6E?= =?us-ascii?Q?c6cF24OV6n5Sb/fOoiOeJJIDqXFA+GLGssuGxhObNxJ18vYMyvYvtGVeJeMB?= =?us-ascii?Q?XDDnQN++A19X3/rbwnKrVuGV0/K2OjxfBX0h6sTGQw2+LJCur/TMRb8oLPMY?= =?us-ascii?Q?L4wWUrrjSEwPTVGU+ctvr+8cnzFmZ+MDq3V1hQAi+TdfnKNgFnYoCK5E0ujW?= =?us-ascii?Q?GEEwMdId+K8Zkx2Rc5eeBbC/jm9tdaBF?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DM4PR10MB8218.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(376014)(7416014)(1800799024);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?T4PTRrmH3N42It/qjRej7dFtxNlGawyBLYfwgPnR5dJ3FXLr7j9DnSTtfBxk?= =?us-ascii?Q?X5fjz5VLqQ95wjPrlzq0efd3Kuj2S6Wp0aPaf2r699PNwZUX8H028SAh5mZk?= =?us-ascii?Q?xpD2Tkza6czgB1pCxiWcrIhQ7qoAxGbnZ37Ey2MFg2z40VkWLBSuFk8jXlqn?= =?us-ascii?Q?5sCLXAY6m4/ccYKUQehCMJwu5Q0MYz8U17yWkRuCKWrmUxmXiJ1BA1ySUCAW?= =?us-ascii?Q?PkSnlS+dULi/k4T6ksjFyoi1ZTt7KzNLsJIh5U0AqVStBCglsHeQJG2SN4B9?= =?us-ascii?Q?YAiAB9H+Wn4H3XbT+gZk7bkgR2TSLkOztK9le5rZsN9b3G8F2xH1NJX1a1nu?= =?us-ascii?Q?nuI5giAQIJ4ZEjB3//8ZvVpJCZYO/ZIw8FI4luISgUCJwQf17S+lBt/Em6cK?= =?us-ascii?Q?6cZhsFTvq66pZAUrav5xOrGfHyt6g1GjKfsoplR8aw8DIQidJihA9yDrtPf5?= =?us-ascii?Q?u+0ZzaebTWwMcLj0lZ+e8QgdoGN5SjH3R0ND6A1ANInyle79KG8PUDAwDr0G?= =?us-ascii?Q?8Tw04lQ+DLlBMO/WvzApI4yxCYZ9KxLXo2dgi9Y406ZXixBL2wQLSrko0qTW?= =?us-ascii?Q?+uzGUML1Vme5OAKenL70tC9aIqgf9ZZ7F2kzlBYIv6cwCJpM6aJLCyYr43KK?= =?us-ascii?Q?a94DV0rxV+JNJiGaSX2TB1B3T5Wib3OXqhvQZDELGZNI4GkGcOvp09Lxvh+7?= =?us-ascii?Q?41YTZuI6gSIX2aKSJjG6/1qh2d7qdwqhVTKQxMnPUNTXvXSQSk08BPuaC4mK?= =?us-ascii?Q?cHWy/JOlpybpag2414PGWOzcPaeUnKqGQB2Kwzv+onZMX2S6SvuszSRCspPV?= =?us-ascii?Q?re4+tKmr3TPnSFjCGXCP5qAJGGsVMBFIJGQrvdm7Ibue0/z2d2Vb10HupQvo?= =?us-ascii?Q?5QJZ1jDnXFGaoZunsfHoQPIgd//PdVq+3N7XeI45lMwnjdmM3K2oKlu/19v6?= =?us-ascii?Q?9x9jPUroRIE73NokEQ4ioAKBCvbAkNbsfkQpSraKLXadB8f9lVaYqUA7b0LF?= =?us-ascii?Q?4Ow4CFvLWX21XOtpaln0c5jIhcaFH+tBneZRjJC+u+WoLRfnWx7RWuSuJ8FR?= =?us-ascii?Q?I9lbYFGHGz+KGjP0o+sytfZKBIRZDHUxc0UTC1To7KRAu0bj3XOvW4q3eGQl?= =?us-ascii?Q?+oYa5hC4wHCETSl0izZFmIrnINTt/gue0xE3Rm8YtwZ+/QKKV4wkZXptXgim?= =?us-ascii?Q?aE1ruNwLX/JpAu/+tdMvfH7mnt+I6NCVsV75GlOdHbeFxuqCbUlSQTriRnWz?= =?us-ascii?Q?CiB9OkbMdiQ2tKPuZOBDKY36hODQRg9FxDnw562CB9bOmYqT2wK9RaOEexaB?= =?us-ascii?Q?j3ZVdwTqCHv/QqY25RyKM3HB+c5gV7z9nBUEayhQ++AdoY4Yl0y196CyHqe3?= =?us-ascii?Q?261g2MPzTpoD5VTZlMKmQD7vRbbl2qsfJ/TJM6KrFBVA0AKFWJQbkBng9vjN?= =?us-ascii?Q?lmGVV6nZBinayY45SHGeCzOYrVKN/2Yxr12Dzlp9Gutw1O+pQkCZLVgXGGai?= =?us-ascii?Q?VDv+sLb+nFR12FzteJwWaP1P1MwxjYGTXmkG2Q9/UaOU8YQ2LAwT3kutokO+?= =?us-ascii?Q?8EmuQxFPAyPP/ugX9H4dRwAe1USrjy5STMZkkQF5wnckH5nFk2GbaGlpQ22V?= =?us-ascii?Q?/nZbwWNPh1TdIRXJb5hPnplWU16L7b2wqomYq0+mXNvYlOSp4mLJCMuNI29w?= =?us-ascii?Q?0nNFw4/NVZ42h6mUG2cOLETUUxOOZnuWfBwPiWnsIB1+toBMmp5pMo3WISl5?= =?us-ascii?Q?xFobr6g6buTqXf5kHoHNhwyKrTUnJhM=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: 7XBdRssw5/DbQwu8KEyLOxs5MqUKk+HhrE9EZsBN4WpWoHNHobG0bKMpkF1aZP+L93GAtv9BWEJmWsh4UkDym4gh4i74RjQEQAgha/3wr0nG37tI9SceOJJV301uZMnh4d6tl82FoQKWNqCOlPU5xHDWunDXb3o/+7W5JRrtyyrEXlXlL2pcnuCIINw075VuN8pkDv4aimuLEBlq39a6qznL3kvzL23YSoSwDtQInxIhnvJqb4WNrc2AGjQEpK4Oxj+mevhTiEaufPG1AVDAG6WkSVC53Y9C4kXvFKoKTfLvTJBiU7YFNUN/XELOy5vhz6gPROkqw5xeshG8yOyF2yUFLi40WhYk8bXDpknhzTHUjE0SSIakR6rpts6S7e2BeZYiPUPF2zom6ukx+PGF9cJfx1qA8mhQWVJE6YRcI+JYd1srNXadfe7HiGoLzWbh04krS52LcK95wE8eLE3C7BK4XU1n37LL8R3IJRtbJ5aldtDypkDGkyxRc9QmbSyeIqYeGK3PKhJ/E9a0zM9ukGWNdUIl0fRLlgLHBR/sBUOXcT4LEeZtkcEwdfX7XLfzvtn8+h6rCZavN4HWtCV3wvMm8uu4i5tCOW6Bp8H44Cw= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 9e22e03e-9fc3-4a3a-eddc-08de4d34ee2a X-MS-Exchange-CrossTenant-AuthSource: DM4PR10MB8218.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 06 Jan 2026 15:04:46.3693 (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: 1PZjohiFp2HyhBUFbvy9r0D6Stg5pSUZKph3mMDtd8w9hS5fXrJyi2ZYJdE7GiZnu145Jx9y2tav1rXJ1WCc5Dl1I1jUDwju7Z7ZRvH03MU= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM4PR10MB6039 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.9,FMLib:17.12.100.49 definitions=2026-01-06_01,2026-01-06_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 adultscore=0 suspectscore=0 mlxlogscore=999 phishscore=0 malwarescore=0 spamscore=0 bulkscore=0 mlxscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2512120000 definitions=main-2601060131 X-Proofpoint-GUID: P26-YnZutkBAC6Jp2wOT6USVFhFNRD5r X-Authority-Analysis: v=2.4 cv=M7JA6iws c=1 sm=1 tr=0 ts=695d2958 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=1XWaLZrsAAAA:8 a=yDX0O4jjIrK4UegQ5t0A:9 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMTA2MDEzMyBTYWx0ZWRfX5GKqfepQeZ4f OlFcWYrfz1idslUfYzIUonkdMuuryQVY/kh4m8M/Iz5+aGy08MHsrTzI25NHl+XWA0ukqg9sFM2 wbS77bw7yB9YXlBFL2P7fMx7cxm+Mw5z5xpiP95LbKoTpoqp3S/DTPW9aRc3n/iYw9yTOUMcGE5 6kTmAYnaO5scq5X/Kyf1L6/pkBX9jX0as2mklHEgKQQSuvyH4ZCASRno4eq+1VgeHkNbL9HXgT8 ZnfiJSH3xFcuQO8Frs5XaBwDwoWN42jxzxrVIsDg+2YrjsX/hY0YtO3Oy2sDy4qbJezmkwr1kkh 2ohfud3NPcC0TtaQSowjbcDPGYk2L9XCyAnp4hDLbZJGrLlbjSUwD/b4k2aaEmyTInjQmPaPC5s 3ZZ+z4a2o9egmqLins7vzxhN5mKJ8kxfuGuc7h5syRdkXNfOagv+4lDbD/8MQbequan1teI8p4O Zff56i/t/b9RBXj+hFw== X-Proofpoint-ORIG-GUID: P26-YnZutkBAC6Jp2wOT6USVFhFNRD5r Content-Type: text/plain; charset="utf-8" This function is confusing, we already have the concept of anon_vma merge to adjacent VMA's anon_vma's to increase probability of anon_vma compatibility and therefore VMA merge (see is_mergeable_anon_vma() etc.), as well as anon_vma reuse, along side the usual VMA merge logic. We can remove the anon_vma check as it is redundant - a merge would not have been permitted with removal if the anon_vma's were not the same (and in the case of an unfaulted/faulted merge, we would have already set the unfaulted VMA's anon_vma to vp->remove->anon_vma in dup_anon_vma()). Avoid overloading this term when we're very simply unlinking anon_vma state from a removed VMA upon merge. Signed-off-by: Lorenzo Stoakes Reviewed-by: Suren Baghdasaryan Reviewed-by: Liam R. Howlett --- include/linux/rmap.h | 7 ------- mm/vma.c | 2 +- tools/testing/vma/vma_internal.h | 5 ----- 3 files changed, 1 insertion(+), 13 deletions(-) diff --git a/include/linux/rmap.h b/include/linux/rmap.h index daa92a58585d..832bfc0ccfc6 100644 --- a/include/linux/rmap.h +++ b/include/linux/rmap.h @@ -165,13 +165,6 @@ static inline int anon_vma_prepare(struct vm_area_stru= ct *vma) return __anon_vma_prepare(vma); } =20 -static inline void anon_vma_merge(struct vm_area_struct *vma, - struct vm_area_struct *next) -{ - VM_BUG_ON_VMA(vma->anon_vma !=3D next->anon_vma, vma); - unlink_anon_vmas(next); -} - struct anon_vma *folio_get_anon_vma(const struct folio *folio); =20 #ifdef CONFIG_MM_ID diff --git a/mm/vma.c b/mm/vma.c index fb45a6be7417..4294ecdc23a5 100644 --- a/mm/vma.c +++ b/mm/vma.c @@ -379,7 +379,7 @@ static void vma_complete(struct vma_prepare *vp, struct= vma_iterator *vmi, fput(vp->file); } if (vp->remove->anon_vma) - anon_vma_merge(vp->vma, vp->remove); + unlink_anon_vmas(vp->remove); mm->map_count--; mpol_put(vma_policy(vp->remove)); if (!vp->remove2) diff --git a/tools/testing/vma/vma_internal.h b/tools/testing/vma/vma_inter= nal.h index 9f0a9f5ed0fe..93e5792306d9 100644 --- a/tools/testing/vma/vma_internal.h +++ b/tools/testing/vma/vma_internal.h @@ -1265,11 +1265,6 @@ static inline void i_mmap_unlock_write(struct addres= s_space *mapping) { } =20 -static inline void anon_vma_merge(struct vm_area_struct *vma, - struct vm_area_struct *next) -{ -} - static inline int userfaultfd_unmap_prep(struct vm_area_struct *vma, unsigned long start, unsigned long end, --=20 2.52.0 From nobody Sun Feb 8 15:58:01 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 E6D713446D4 for ; Tue, 6 Jan 2026 15:22:02 +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=1767712924; cv=fail; b=XXZzAd/3Ikd0B2ZFNHzJPcp1ikByXL87a7RNAj0pQf3jFtz34r+iw0S31ynpjcSgiqQH7yNTtF7pGKW+PJf1rNWdk2JCHU8yvjGzZwu6C9fePS6lU2JsytpBCkQgx6taJ6Hynajg5uSWAAZZyfmw4aipxmdhd32umhIezwoU05c= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767712924; c=relaxed/simple; bh=y581QBUDxw/enaHlnMTUWUhrboou6F+DGZqbk+5wLzQ=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=Tq0xP7+pcqjSF+52Ue7m8tMEqv7GZIIxWOzQO4iiwl9FQRmw6d4upbMfPZMgMsgs8+qpIwSffETlJzQWm0GOGNj3gUmXwjqvIDRZtmM8DmspZpxfyM9kcee37r0XPqDtNuK3tZAQ8YPgadGUUqgTYFQXkekjXT7DvvnshoDXTs0= 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=dRdXbojq; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=MA0RcQPy; 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="dRdXbojq"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="MA0RcQPy" 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 606F52Ev3789609; Tue, 6 Jan 2026 15:21: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=K3tf7+ouUcpFlNOH4iPndQBJzGSyfKIGvRgbU/JFf5M=; b= dRdXbojqEolJnukEQ82EudpM35RQ166cFCzwNNDPRWtd0ntHB2irqhlZ1TmMgvJL z2JcnAr4XVyTYgNtOnrubM0WIJkUWzhu0NxRoSaWDzrNzVS5qAPwijP0QnOha9J/ fQ2dchaUQQ/32+1Hcgt1WDJes5w9mcCGRXQggXNOfd++PmYVqX/vFk1Bli0BOBVf LHfeA+Cn8/ez59+OgP5SClmhpKrwrZ6aitRub2ziknQN7g4YXyGoEUETW2y5jQNl 4PQLFcYwfJACsVAQ13s7FTfHMBcKCD9pUxYoS5BLvCgpkjg4982dJYzpxOaYHB+j ihWLbPXiTZYNSEckNmhCwg== Received: from phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta01.appoci.oracle.com [138.1.114.2]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 4bh4qm80uw-2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 06 Jan 2026 15:21:40 +0000 (GMT) Received: from pps.filterd (phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com [127.0.0.1]) by phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com (8.18.1.2/8.18.1.2) with ESMTP id 606DO507016243; Tue, 6 Jan 2026 15:04:52 GMT Received: from bn1pr04cu002.outbound.protection.outlook.com (mail-eastus2azon11010060.outbound.protection.outlook.com [52.101.56.60]) by phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 4besj8em27-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 06 Jan 2026 15:04:52 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=WcSWN5p1zRpT8+C3yMu77X2QuwnYqGrM+KMtQcCq2JCG7juLn4m4bOTGoj+d9F0MpVhMQVA/jI0RTmh8W3Hy0crDyqs9ZDj7zCI3Lojn1d3Nk2SAn8ELNWSYPLWAfCx3pRmOk7ZSxN8VqmM5nk6qg4PXflPvQsVosAZUa9c+xyKpxVZa8AvQ/LHKRmkpBalXB4yj3AwRk4hRy40aInr+fc691Fpf3b2Bdb/QYqD4MYSdHThKiA0GOOnL3/tmgjszFPPv6NWGsIGhSpXvfvOeOepgpi3B8HMLujjirORSHG5METQyCtJegjsSUkaK6dpE/r0mvpkrM7D/nxW9EbmIHQ== 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=K3tf7+ouUcpFlNOH4iPndQBJzGSyfKIGvRgbU/JFf5M=; b=IQ0MMHNm3DZm+/tDSL1M5SHywk4n2ACk46ZdKud+4Yst9nyAdL6blGNWwcbMSDqTUTM9gK68cs8S6tgcIdRAjusDQ2dFE6VfzxVJAeq9rXHN0hPKKiyZfcN8TqSx/AkOyLMk2MRNNNoAioc6sX2RlSdTmsYmgBH0pAaSnBp8jlCIZyeTxbjDRF2gF56xeCn6C+3ywh2vW5CoQlvB6rbWzwGrdXhizJQc5x5H0Ve7+Igvr1X4hsrHZhy27SmCKVUHRgGsHA+HiPXe4lUQeI2rqXJ2uvxPYxmayuOWc8K8S65ZjinbojnDSAJehEmhTjKgm41z2NS6oB0qxzcKNqlmjw== 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=K3tf7+ouUcpFlNOH4iPndQBJzGSyfKIGvRgbU/JFf5M=; b=MA0RcQPyS2SrQHeH5U2poajiBBAPDC666+vZYhINUjd/EJBn2IU4xbY8D98KXf5gpWwl5gTiQHvizjbjbFBb2CLc9iZIreJ4G4GGmcNGqdnrpuZrqQV/Uyctul/hzSc8ZAKFiJWxOEiAUOARQBzwbcGHvqzeG4lpzuaSqL+Fu8k= Received: from DM4PR10MB8218.namprd10.prod.outlook.com (2603:10b6:8:1cc::16) by LV3PR10MB8083.namprd10.prod.outlook.com (2603:10b6:408:283::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9499.2; Tue, 6 Jan 2026 15:04:49 +0000 Received: from DM4PR10MB8218.namprd10.prod.outlook.com ([fe80::f3ea:674e:7f2e:b711]) by DM4PR10MB8218.namprd10.prod.outlook.com ([fe80::f3ea:674e:7f2e:b711%6]) with mapi id 15.20.9478.004; Tue, 6 Jan 2026 15:04:49 +0000 From: Lorenzo Stoakes To: Andrew Morton Cc: Suren Baghdasaryan , "Liam R . Howlett" , Vlastimil Babka , Shakeel Butt , David Hildenbrand , Rik van Riel , Harry Yoo , Jann Horn , Mike Rapoport , Michal Hocko , Pedro Falcato , Chris Li , Barry Song , linux-mm@kvack.org, linux-kernel@vger.kernel.org Subject: [PATCH v2 5/8] mm/rmap: make anon_vma functions internal Date: Tue, 6 Jan 2026 15:04:30 +0000 Message-ID: <01fb330542cc1b9437c1a9d1f54432b0547a1582.1767711638.git.lorenzo.stoakes@oracle.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: LO2P265CA0003.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:62::15) To DM4PR10MB8218.namprd10.prod.outlook.com (2603:10b6:8:1cc::16) 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: DM4PR10MB8218:EE_|LV3PR10MB8083:EE_ X-MS-Office365-Filtering-Correlation-Id: 7801e24e-b9f9-4eaf-bb6f-08de4d34eff0 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|366016|7416014|376014; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?dezpH8Tw7dLuSAg89zIsMlvE/qnIhlFTFMPVG2aVwXplH87nPrZ36jb8l+te?= =?us-ascii?Q?Qryyl9Ys+Au5puJRXQUqXPGgdoEmJuFI301yoot+C74MuQhQkLSKosmNE/a3?= =?us-ascii?Q?lljDZFgl1TEWW1etcDheO0LV2RjqJacG8Y7ktbjMmhiXhf2nMN2av37ZD3NE?= =?us-ascii?Q?UpMn57F4rLk8EBPSoXwb9RPPmmM/Mrci2aDKP/p0jNN0BvgjV8QshKxBoKiG?= =?us-ascii?Q?1o7lwioMoxHdeF+08iS5xujiNNlFWxhb930IFR5qvilaccitI5o61mxDSjED?= =?us-ascii?Q?AR434j+K9IdFR0gCQYEKnw2R3rypAueOzEkZGqhHZlxJnOuNeD13FYq2xgfu?= =?us-ascii?Q?+i30UBt8irQh7cLqHHo5H8p/qG2W7odvBOTcesCspUckU19JOwKICCIO0/9Z?= =?us-ascii?Q?BMJl21A74i8Ln+LURKcWN9bS0IKsMWWB3waRxTvWAVGIqTAQ3n6jDMUhTmi1?= =?us-ascii?Q?VlmomO3/t39Fj3g+RGOJVRmVH0ztzTMcxUdBfbjjvr8j4l8PK4UsP6eq+NGr?= =?us-ascii?Q?n+i/3J2e/rsqtRzvDbDLRToDJKJJh7y7bX9zb1O6KRUSWChUaiGGo5vc37KM?= =?us-ascii?Q?TLYxPX7B+9shCF0vuGGp8hSn9SphmXi7jR4rYKQQWaPD+bWO2kfPpiVcpfu1?= =?us-ascii?Q?6MwutPnSRvBgKBH0ifNNaa3H+iGL9+n18Iktxb3xOGAlvZ2/xZN3L5Fa8XV0?= =?us-ascii?Q?vpON1TQwPvTqUsJ3TUFDe2V1uULt0GihbdSERXBzv0hZ39hvTV5o/BVMwUoY?= =?us-ascii?Q?PyaVodRHgXflzYvcUTQO45NeEwNNs9dqv4rxKzaR6LGACHKBCLdWOowrWjui?= =?us-ascii?Q?gjEhkat6a6HnXJbzr6C5ClPDu1Xq1vEHh6s5ToE6QKPuw3SQJfKOaNk93o/q?= =?us-ascii?Q?V+oXBc3CgUhm41pEJkWnsJoWiz0uLoagu4wiBTKs+3BqbOBGN8qxUjFM+/kz?= =?us-ascii?Q?I4w0/G6vVW5UmWhyBKVKSRgKOzpHGiW/3aUpXlOl7aZ+R7SB0bTPPYaOs95J?= =?us-ascii?Q?+T5SVI1bPoW+uWVbXjRQgzV7b9cQ8sxPKRjKETDSyGPdP+voPUOIKEQ1Cr6I?= =?us-ascii?Q?MC4w5Oh/2FKA7BwjM5YpMlxJS/pE9GNdQh8LmaZs80u599kXe0KbjIY3XAXV?= =?us-ascii?Q?ETcWmtr+Ajm0Z3tm5BzRleHczheOMOSDYO6K1CIZ0f0yxlXMzWoHYie6vjJl?= =?us-ascii?Q?TVse7L/We5clabdz6R9LK5ibI1TGNBxf9eLzZMLsxfD78eJHrGroz6lqUDvB?= =?us-ascii?Q?cBMAM/Jf4waxQowsW2HbSk7qGcLGNxyZEs+2UR6ozvULajib8zSSDvZqgRC/?= =?us-ascii?Q?YohcToo/vB6eyyYpumPjD7TJqr6A1unUujbSwj5lmTAb1JvoY0+kRiqkZsml?= =?us-ascii?Q?gOYMLmBjCE8gSjEHEwx04Vq/97+gJ8Js8ZcnvdDviekWIA765h/19H2dmbd5?= =?us-ascii?Q?6WLtgTwNvAxpafOJ21TcBjsQlLVION+b?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DM4PR10MB8218.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(366016)(7416014)(376014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?SVPEKS13APb5hHqufEkeJyiToCPbV3ojUlDioFenFOdrjsyltIWpqEhAXa/j?= =?us-ascii?Q?jmrVb5HOk+TKkYKkWawEYJL5fHgitQq90qb60i/N8+t2hg8MLJja9i705OD5?= =?us-ascii?Q?9sRsbvjSCUJhoCNRqetTWfs4QZusV+uLoF1Ge5e7G69He0UfIdpUzJOyg4PP?= =?us-ascii?Q?ce8BBe5PWN8qzqjfcV8wtauKsKAtuJUZDmdD9nPp4iaxDK+7WqKe04gT8ym6?= =?us-ascii?Q?WkdIDnf1xGv6xcASRQgVaV5rYqTK4Pa0CSonKYY/7rNSO85bIsWGnMZ026+l?= =?us-ascii?Q?e4TYCrkf3AzuJnhI70cdZxTXTmP9kJRgXAbkUB1UzJ0oX0Eo41HObNzEBSTw?= =?us-ascii?Q?zHIsXw/lFjWmROmYO2D10/2JLBo/0dYQv8T43TjdnMBpSzKVzfYL8XWcxDhW?= =?us-ascii?Q?n+hVdD+TwB/TKD4qJut6siMQEOI+7qjtTSQhwPqeBnK7YX3+W4uaDD4UVYZB?= =?us-ascii?Q?pXwSrAqmSub2ARKmfrotrRyqoVilkeVy1JdPVLkXAACurbOzvn8UmOrtwzaH?= =?us-ascii?Q?RMm9OkEaKvecdYNeF1HSManPymVyP0NVQd5OEhEABd2Mi6vdT36wh52IB7j5?= =?us-ascii?Q?NuPj8NEG/oBCbQ/tPzqD6/zkL8UdAjT0+MWiB2ISayPVIdj+vUtX/bvSyX9t?= =?us-ascii?Q?7QU4yGxdZAaQS8Wbggk/i6MkK88+wLKO47kJI2yokX1K7wxqEt33KBkwjxT8?= =?us-ascii?Q?gQnSWK6tFbt8r0z5BD4Xx1qMTsdq2/kuKOEuCgTaIYtK4VusKY+HUaeIgT1z?= =?us-ascii?Q?qbmQE7mCFCUUzMuBIO+pKaw/K+XeEOsnld7aopyhn2r2SDzKDlBREkM0GPQ6?= =?us-ascii?Q?yln9L0cE1DVjIJ1htCUHP0DifAaeRwFi3J8u0hsSNknx08ymBzP2z1BY66Yo?= =?us-ascii?Q?CArwPPcw//iHi728B+hnJkWhS/kPYlw0dMHTWoyzup4PzOzUProHnaW9Xvtr?= =?us-ascii?Q?WC8doY+uPs+FFFeggOQzW4UC2bskH2EE+O2YOVWWtgZ58dQTm12hduSqx19+?= =?us-ascii?Q?j3mqa9JzNQw+ZegbEWirb5LbNlgKe3W55Hza9B10EQCb6vqlKVVAPmupDiCM?= =?us-ascii?Q?wTk9rZS8SK02kiPNZeZFHYA6KGtj+0/kaTdbFzCzc47HChUzW3ux5vQYVbs3?= =?us-ascii?Q?2lFVGrPWIIAHzvv3IP+oKf0j5Sj4u+b1IxOdhULUc8ZTeGQXMb9DRebszUPX?= =?us-ascii?Q?6XR0FSJS0MsIyITPKzUOObMP2T4DVK8q7mtdmarZuPz1OmOvo/+e9gKPQ56b?= =?us-ascii?Q?mniZRbThJSpiSzxN2EkB5Kv44Gbh6bkVNKN5grvQXfaxA8yWvbJLaPdrp9r3?= =?us-ascii?Q?uej6Ik0fwJFslAJupVS6bsjk2NaX6QCW6dI+NJ26khgGEKjoda3v5eql1F9P?= =?us-ascii?Q?H5LPKoECLFhOQvvbYjZBi3e9FLHCfNhPlFfRUCvnsQjPI+EKeYiCsPJxnzUy?= =?us-ascii?Q?5h/dCeJZje996PArvWff8zDadeVdUOBa5LGuJJsdOBubbhel7md4vsqQI7LK?= =?us-ascii?Q?VOVgCjFEyL1rxASRFzFOT98ccg6DmYdmxvdfYMBqCCtXO0VtsPt7l9VzUM7M?= =?us-ascii?Q?4tizZTIDrmRZAQZQgnl5S4ozkM+6y4Jl+g9+zGzGuJQKava8fsI1RFhOaqyp?= =?us-ascii?Q?ybUExV7kI2gPYUFcPM4m/O2igW5E0YL3MBfNSsdrlOl6gD4olrvXQIQOTEXm?= =?us-ascii?Q?HvxB3EBmEK2hXshGTVqfsPit2ztl2k4ojqG28Wxm9PPJX8VsbYkiAb6VCddc?= =?us-ascii?Q?+9KFEPz6aNIlgAQQSAf00ZZMaw1TPog=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: SRbGkhuPgvY25M2vzCTEYsNvCRvwXtWhJH2oC/2LXaIX7NTO7cXI6MZsnCRh88RbPnFs0waKLs7s9Yo1sFRWDtUTjP1/0MX7ffGHDZc6Jgqx65zCxuwE3JQEZYsWWWjKyd/gp1Y/jNp4dSC3H4Q75Q/xwNpyU54uwOHwObEpQoG9Hqe5qmwz999bj4VclUnbShIusmM24oo/m88xnPAQHK3Tkvor2qY2BEkYFoGgAH3tSueiWxDWEPMtL5NI0UHcU92L/I86lX+V3z6hqItLSwZatjKNGiM7XO1CH72DCwGUecEXPqpNW+cvNgSfsqvLS4fWekE8Scg5yq7Q6BggcbPz/VzHfPM8DEAd/9oJGxgwJRxWcViR2BDvN8E0RQ1S/wVR8hnIgjP9fVNPOo6gYObwMKv5qA3ccGRMEYbOZh28zgZFTh44z1j1+0lA2Z5gnAdUsei1Ad8JQe1RWG+KK9XQ9VNELvln4ZoNAQpV2kV6SnmOvxFoa5uoodcC5CEgEDHmGlZ6XsBVNFhXOB4QWnwNoMITC2bWfRTsgx6XrMcWjw0mAoxWr9klRi0YdxQUzYXFbH1V1pSXbNJscKtnliHz7WiBX6iyJmACht3YitM= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 7801e24e-b9f9-4eaf-bb6f-08de4d34eff0 X-MS-Exchange-CrossTenant-AuthSource: DM4PR10MB8218.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 06 Jan 2026 15:04:49.3698 (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: +8abE7L8kISjNME7ZvDIiHszqxM2QWAtr/70rjYr/+6i6IFMZhc4fWIfQ3C74re9Aq3ujfkZspKJPzSHufanM2OoW5dy0Tuha+c/4YvsjNI= X-MS-Exchange-Transport-CrossTenantHeadersStamped: LV3PR10MB8083 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.9,FMLib:17.12.100.49 definitions=2026-01-06_01,2026-01-06_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 bulkscore=0 suspectscore=0 spamscore=0 mlxlogscore=999 phishscore=0 malwarescore=0 adultscore=0 mlxscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2512120000 definitions=main-2601060131 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMTA2MDEzMyBTYWx0ZWRfX3uSR2CQMAyRw ZLZKuGQQf7pcIoALueT7MEUO+y+guOeKBOz2Lk8IrqW4hVDBXx4lZQ8MtFQbTsJM999lAPhX6II r3gQSe1DcaL5HE8D4AD3dDkakpqNzZ4bfJ5fjMIGS7ePFLa8SeeOmluSpkxFTseO7+h4Rex9w1k pj9Zyc369FSej04YkZW7B2qLEebHqVlplhEGOk9IHceZ31tnjY/bHywXODhMpnJBHXv1nVWD5/j gtWFEHt18ZhymPdzL0o7pT1/NwpweslPSzoRkwAPCT1pwq+OyBCyiRlzgf5w7TGuY4d36eNLZC+ /uTUX2IpW15VbFS+zONYN1wLgHHySNemimtIWn7883YoLNeEzZNM3kuBy6Xoq3/vNMHAurhmcge GAogUB/63cJEgsVUH8GF7kbSHw96GPD/M5TWrzboEX4JCt9GV4BCpM2oz+7vcIEWR8ZBUwUalF4 W/ZXozffAN9rYMysy7A== X-Proofpoint-GUID: 5ND_We3ghzJJzQNrWb5YhvmH58Ed9SZV X-Proofpoint-ORIG-GUID: 5ND_We3ghzJJzQNrWb5YhvmH58Ed9SZV X-Authority-Analysis: v=2.4 cv=NI7YOk6g c=1 sm=1 tr=0 ts=695d2884 cx=c_pps a=XiAAW1AwiKB2Y8Wsi+sD2Q==:117 a=XiAAW1AwiKB2Y8Wsi+sD2Q==:17 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=z/mQ4Ysz8XfWz/Q5cLBRGdckG28=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=xqWC_Br6kY4A:10 a=vUbySO9Y5rIA:10 a=GoEa3M9JfhUA:10 a=VkNPw1HP01LnGYTKEx00:22 a=yPCof4ZbAAAA:8 a=1XWaLZrsAAAA:8 a=1PI_McdixYITsgu-vP8A:9 Content-Type: text/plain; charset="utf-8" The bulk of the anon_vma operations are only used by mm, so formalise this by putting the function prototypes and inlines in mm/internal.h. This allows us to make changes without having to worry about the rest of the kernel. Signed-off-by: Lorenzo Stoakes Reviewed-by: Suren Baghdasaryan Reviewed-by: Liam R. Howlett --- include/linux/rmap.h | 60 -------------------------------------------- mm/internal.h | 58 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 58 insertions(+), 60 deletions(-) diff --git a/include/linux/rmap.h b/include/linux/rmap.h index 832bfc0ccfc6..dd764951b03d 100644 --- a/include/linux/rmap.h +++ b/include/linux/rmap.h @@ -104,68 +104,8 @@ enum ttu_flags { }; =20 #ifdef CONFIG_MMU -static inline void get_anon_vma(struct anon_vma *anon_vma) -{ - atomic_inc(&anon_vma->refcount); -} - -void __put_anon_vma(struct anon_vma *anon_vma); - -static inline void put_anon_vma(struct anon_vma *anon_vma) -{ - if (atomic_dec_and_test(&anon_vma->refcount)) - __put_anon_vma(anon_vma); -} - -static inline void anon_vma_lock_write(struct anon_vma *anon_vma) -{ - down_write(&anon_vma->root->rwsem); -} =20 -static inline int anon_vma_trylock_write(struct anon_vma *anon_vma) -{ - return down_write_trylock(&anon_vma->root->rwsem); -} - -static inline void anon_vma_unlock_write(struct anon_vma *anon_vma) -{ - up_write(&anon_vma->root->rwsem); -} - -static inline void anon_vma_lock_read(struct anon_vma *anon_vma) -{ - down_read(&anon_vma->root->rwsem); -} - -static inline int anon_vma_trylock_read(struct anon_vma *anon_vma) -{ - return down_read_trylock(&anon_vma->root->rwsem); -} - -static inline void anon_vma_unlock_read(struct anon_vma *anon_vma) -{ - up_read(&anon_vma->root->rwsem); -} - - -/* - * anon_vma helper functions. - */ void anon_vma_init(void); /* create anon_vma_cachep */ -int __anon_vma_prepare(struct vm_area_struct *); -void unlink_anon_vmas(struct vm_area_struct *); -int anon_vma_clone(struct vm_area_struct *, struct vm_area_struct *); -int anon_vma_fork(struct vm_area_struct *, struct vm_area_struct *); - -static inline int anon_vma_prepare(struct vm_area_struct *vma) -{ - if (likely(vma->anon_vma)) - return 0; - - return __anon_vma_prepare(vma); -} - -struct anon_vma *folio_get_anon_vma(const struct folio *folio); =20 #ifdef CONFIG_MM_ID static __always_inline void folio_lock_large_mapcount(struct folio *folio) diff --git a/mm/internal.h b/mm/internal.h index 8319a91e363b..4ba784023a9f 100644 --- a/mm/internal.h +++ b/mm/internal.h @@ -199,6 +199,64 @@ static inline void vma_close(struct vm_area_struct *vm= a) =20 #ifdef CONFIG_MMU =20 +static inline void get_anon_vma(struct anon_vma *anon_vma) +{ + atomic_inc(&anon_vma->refcount); +} + +void __put_anon_vma(struct anon_vma *anon_vma); + +static inline void put_anon_vma(struct anon_vma *anon_vma) +{ + if (atomic_dec_and_test(&anon_vma->refcount)) + __put_anon_vma(anon_vma); +} + +static inline void anon_vma_lock_write(struct anon_vma *anon_vma) +{ + down_write(&anon_vma->root->rwsem); +} + +static inline int anon_vma_trylock_write(struct anon_vma *anon_vma) +{ + return down_write_trylock(&anon_vma->root->rwsem); +} + +static inline void anon_vma_unlock_write(struct anon_vma *anon_vma) +{ + up_write(&anon_vma->root->rwsem); +} + +static inline void anon_vma_lock_read(struct anon_vma *anon_vma) +{ + down_read(&anon_vma->root->rwsem); +} + +static inline int anon_vma_trylock_read(struct anon_vma *anon_vma) +{ + return down_read_trylock(&anon_vma->root->rwsem); +} + +static inline void anon_vma_unlock_read(struct anon_vma *anon_vma) +{ + up_read(&anon_vma->root->rwsem); +} + +struct anon_vma *folio_get_anon_vma(const struct folio *folio); + +int anon_vma_clone(struct vm_area_struct *dst, struct vm_area_struct *src); +int anon_vma_fork(struct vm_area_struct *vma, struct vm_area_struct *pvma); +int __anon_vma_prepare(struct vm_area_struct *vma); +void unlink_anon_vmas(struct vm_area_struct *vma); + +static inline int anon_vma_prepare(struct vm_area_struct *vma) +{ + if (likely(vma->anon_vma)) + return 0; + + return __anon_vma_prepare(vma); +} + /* Flags for folio_pte_batch(). */ typedef int __bitwise fpb_t; =20 --=20 2.52.0 From nobody Sun Feb 8 15:58:01 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 4D86333B6E8 for ; Tue, 6 Jan 2026 15:06:23 +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=1767711987; cv=fail; b=BQS9OVJXifdAY3P61YIqopy1CFACODnfa4PGDBdXM/Aukl9DGANDGc/P06a+1aauowG5bFSsJ13pLU5t/3n5zo2RbXJXIq53OWiE/B09Jeyhx+BKA67mfB1iLhLz1N2DLpnOpY/jzMlnN/Dyxdsi9bmk9vD3JbboHt5Zo75Tvy8= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767711987; c=relaxed/simple; bh=6UgRTc3HtflvsJ49xpUAt1gbXEHdspbZIHGL7b8JyOc=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=Fgs8GWs5ekvUUlH6NdzDRdTlgQUE5E2vHsV/aGsobK0wwNCSzHQZVHDA3CfGv5LQDVB3yU12jyIVT4U4N3KAKLF3vG17bmjXr0Q5c6pgy564X3qkmJYiPaWyOItUm+ogPqTwvuwzalJMSi61JVVhNytk9dof5zGykiMCt/mZomg= 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=TuvNkF8L; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=t0VeuBkb; 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="TuvNkF8L"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="t0VeuBkb" 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 606DiVcW3646593; Tue, 6 Jan 2026 15:05:04 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=T0sg5P6w0GH5VxwOnRDrAYwE9uAlQP5Tzgzwm/ndR08=; b= TuvNkF8L0KL9JcqSAZFZND9n1Tgoj8Zn/GXGZknw+Logg5tEAQjmzcj4nHNHJLZs jGveC1glcKevJibDrJ4zz9rI7jBd9OMgwVFYdRRznZOoh59M762chZEQRWnV3ZT4 KUAY0rOf65eAW9qis1xqjfZMINDu8QDpv5ZTRIpIFvvBVPn8BB3ObwVjI5UlG7Be 7icx/nr8Lv5NrROrG9eQDc8wdCYB9j6h8YtJzoMeyB0IxIVscT2sAkfuq7VEYU/1 LV7pmxURnh6Kr6JMxrNcYoBzzkW4mvkx3CuWjRej0gUfDuQ5cskgqbs6rYsZNKQQ zfR61Tq3dzXyghpIoCiE1g== Received: from iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta01.appoci.oracle.com [130.35.100.223]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 4bh3hq83uc-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 06 Jan 2026 15:04:59 +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 606Eipfi020440; Tue, 6 Jan 2026 15:04:58 GMT Received: from mw6pr02cu001.outbound.protection.outlook.com (mail-westus2azon11012031.outbound.protection.outlook.com [52.101.48.31]) by iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 4besjjpx72-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 06 Jan 2026 15:04:58 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=JrWZ5Ts8yprx/VwutTB6vOC73dojRFkHAgSAGm6vdbKYaCrTTSgx5/JT430IJlTwaB8rPHhvZf04TDO0fDtBZfHQZ4Pq2mzwuY1oqHNO3JylkacslwIZcwUsaUcYCqKXBRPqXWKJ63GehEpYmSYkr354MjoWIPi6fwOHDD7C5oQB8MACWVCEZ/6WPqUEu4+QFvhrH7ALKl0P6qHcYV7aIITh4qd5FKz+EjaTWg7wm2M1nQo1cn85kMdUXpiKq4OaZD5kF87EbPEeayPdxlkgguNl8DWhlSm//awbaHy92o8o68GLq0yLG7HF8CkWl1DGuuwkLyyqQR7ZqWOzo7kKhA== 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=T0sg5P6w0GH5VxwOnRDrAYwE9uAlQP5Tzgzwm/ndR08=; b=G9Tmkir9Rd6H1kaUQefV8xzTW2KwtBLInYLERPkNeE3KOZ2hc0FunZ+bBEaXKX/0yWVaef7li67XZNxHESZtAFY5pDgQYUY2iJx7YlrqAR3g6XmniwMArJnRyCecjy/qJMUnr+bBrLLaetC5s8gCDsmUYLay/FzJsbIA6xoJ5KqdzkqOusZ1WcIIDQPQC/+ZNXEnv64JK82dnRqWNc9geqLpxRRPR1Nj4n5fBr+WTSMzyDyodv5GIbm2sy3p3nH+YarAvb97U7sZkKr46yIAZcW3d7W+jgwTKjctFIZAsZH3S+8z4FJ2QVMzJpVxKQwvUk4ICf5gV3rZqkKSrZUMpQ== 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=T0sg5P6w0GH5VxwOnRDrAYwE9uAlQP5Tzgzwm/ndR08=; b=t0VeuBkblkwAIjeIXu1iJH/eURLRJcrfcvv6sdiD97ihNBNbTRPesJS+z1ySO5kxInDeyPK/5h7uyTx0Q4wucIPSPUF7w4nF9PgnYUNok82i9ekDLqa6dFesRzd7ji3v08DZosBVIN3newURqpfLkWac3Qt1pMEwsMuxDO7ujBg= Received: from DM4PR10MB8218.namprd10.prod.outlook.com (2603:10b6:8:1cc::16) by DM4PR10MB6039.namprd10.prod.outlook.com (2603:10b6:8:b7::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9499.1; Tue, 6 Jan 2026 15:04:53 +0000 Received: from DM4PR10MB8218.namprd10.prod.outlook.com ([fe80::f3ea:674e:7f2e:b711]) by DM4PR10MB8218.namprd10.prod.outlook.com ([fe80::f3ea:674e:7f2e:b711%6]) with mapi id 15.20.9478.004; Tue, 6 Jan 2026 15:04:53 +0000 From: Lorenzo Stoakes To: Andrew Morton Cc: Suren Baghdasaryan , "Liam R . Howlett" , Vlastimil Babka , Shakeel Butt , David Hildenbrand , Rik van Riel , Harry Yoo , Jann Horn , Mike Rapoport , Michal Hocko , Pedro Falcato , Chris Li , Barry Song , linux-mm@kvack.org, linux-kernel@vger.kernel.org Subject: [PATCH v2 6/8] mm/mmap_lock: add vma_is_attached() helper Date: Tue, 6 Jan 2026 15:04:31 +0000 Message-ID: <38f916c87fb873ba8866707d51f5da8ba10c5de9.1767711638.git.lorenzo.stoakes@oracle.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: LO4P123CA0525.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:2c5::8) To DM4PR10MB8218.namprd10.prod.outlook.com (2603:10b6:8:1cc::16) 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: DM4PR10MB8218:EE_|DM4PR10MB6039:EE_ X-MS-Office365-Filtering-Correlation-Id: 10ad7827-b9c8-493f-3d50-08de4d34f25b X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|376014|7416014|1800799024; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?D8rH3nFrKi51cTjxrHEeT/vclZjZnkWzP6zy/qFoj0S/ZEfiJfpJHh4xoAok?= =?us-ascii?Q?UCl/5g0Kn6RaPKSeZisrBlZ/P3tsIO859dgTKE8LQ5PMcZjqGRDBqS8wbdYI?= =?us-ascii?Q?iK/oT4GY3KIn0tQSL509IE1ecd/ODr2kQDPrQsC89SNogiM0xf1gacRtXv9d?= =?us-ascii?Q?FG4bgWLKUuvK3dqWzPvnC69GyIdVO+RiHof7615L60bugQP0xa6WRFdATlbi?= =?us-ascii?Q?52SLRdkN6IL1KLRLUogYRnX8bC0/ruaNlKJy2eI4H473YvDAgpCvhm+3Mo/c?= =?us-ascii?Q?YrVqxJQZGJsbkPjiwyC2vOSfJsGMI5nsM4bL4lKx+xkMt14Cv7BXQgU30aWL?= =?us-ascii?Q?+EAwdUejr2w1klOFvXvCB7pCLoP9ZRuG4LTSwK59xVmMdrZCZ+jpjh4pXe2d?= =?us-ascii?Q?aepk/QTCBADw6sEsCUuSFgMUXxOF7hklOyIG6xSvtFdAeh8Fqwtpz1E2oRPA?= =?us-ascii?Q?LzehuBnx4qYbfAqG4z1MmqBrBgJmjei0BrByffARBh1qJ30q/klfJTou3GCN?= =?us-ascii?Q?qUp9YdmMtVkEJzcYbV6XQ5iDDdThBmiiYeRdyfcE3MHE+IBGI6+DF1wUQrAW?= =?us-ascii?Q?mqEf4jN2uWLsyT4O184Psast1jHH/xzTPXl2TzF3Eo3duDGk1i0RIcRlzCMt?= =?us-ascii?Q?k/Bys5TLR0QMD1pxPCzCXaSBZ23fkR26YlfUyDXxzhdo+5v94VpQgawL2tDV?= =?us-ascii?Q?wAJvsnBRIKpFKTzGaQ/kSQDcjJF0E2fabWWUA8Blxdx8jo1e9VpOeFwcibn1?= =?us-ascii?Q?3O9xFmAgZbbMZdW3kW/5Se5kYVEPkGIpX1VecwVzDHI25wU5rTaUaCY94nwq?= =?us-ascii?Q?VpI4U/YPYoruXT2OSjEGkKCdUiTHCdGLf0cnMeBNcLW5uh99P7L4gnVKhMws?= =?us-ascii?Q?KGt2epps6wmQuF0utuTWDEnXkdkYlm6veLNREZi7UWNokUXGdRfTkIN9/+fn?= =?us-ascii?Q?eZsyhTr1fJ9e1PaCD27ro/pKi3XotoBI5Bhdlkd53ylEsmd6A5tqJ5jJwVNk?= =?us-ascii?Q?dGN7k+A3s9GBK+VCx9g48wUzTjg60U3uqft/Bs6DzW57rlLijISkiM2foFlo?= =?us-ascii?Q?4JFKMed1RYKZTTv1JEPLXxn8AX/cza/GDTQQghouH+NINiSt4MLfHLkJOWWz?= =?us-ascii?Q?UrTq2HdOdVp+e9wm2ZsqBoOr+ok0glIOW03soXMBXAWaw4RdOE9x/ngqWINe?= =?us-ascii?Q?dfWtRMqO6KF2uNvhk0oAWfdhYn/dVQBkvvCXjk7geMtQ8fDt9XsCsFVFad6I?= =?us-ascii?Q?yTpTcw0ZH5tZESW+9RWRMbIdfyuCznUTnuhH9Iwh9mtMgbUQpFrJfXgrcKfx?= =?us-ascii?Q?jvu7TfAldCE4r7Gg5tBzTC6UuDFqkkuB/LNb36WJlNbwqS8zd+/sm/1H23HP?= =?us-ascii?Q?A/5yVaELYnwnmffteQMvx+uu/OGWWdNxlwrqu4OCUD6ivNpDG1cCB2n6uTVm?= =?us-ascii?Q?eywF+4+cekpMD4ayr1985xgKipDN8/bn?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DM4PR10MB8218.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(376014)(7416014)(1800799024);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?mLD5HnVDAsGNAhyblW/+yESn/+5lvxUmXOtwz90v2Ryqxb5pk5/f//vrJRUv?= =?us-ascii?Q?HJA9IkEefqO1M/JxAEbXWqXJ5sxCbK85MtViQLZ+BAmIK6AFq8Cmf3LHx1V5?= =?us-ascii?Q?4S7pyPjz3vLhth9W9pps++lweG2fAb56U51G6XRa6nF91aK1eHN6iy5x9cAa?= =?us-ascii?Q?mKxWbcMiaisFuGRpv+yP14iU/RZZFbVyBfCv8iUENZrSKkb/4b2BcE3sum7m?= =?us-ascii?Q?2r5nUqXFegJbu6FQ3SxLYeCZB+ZFuSh1TkULP0g/fuhB1ujbOJZyajseLVgD?= =?us-ascii?Q?pgBFwcJTwZfroUId5O4yM+ScVz3uPkxQjw/meoxA9VTSDpw9r7eJsJg+m1Zs?= =?us-ascii?Q?TVCu2ncel6LQ88LGlP0k15ulJxr7miLWOZxpDKTONlr7gyZd77kbcnbBmTUk?= =?us-ascii?Q?Dzq2KUNxcdFDv2RLr1XykUqe3F1YUI42ivaudPKA1yEA8wzVrjjnxZmipsF7?= =?us-ascii?Q?gElTIVaJFTmprqkGrbzmoCZfUZ3hw6dVrcCmXSG4w0+HlkMNM9eGULfSJ6lK?= =?us-ascii?Q?BM2e1JslqdUWRKSs0L0ADr7o5rNH3p+eCmf2UgJpuxvra5VHxF4w4DUzy9kx?= =?us-ascii?Q?8feHarWJ2dW5v/wr4jtgdY1UhAW0cFLJ9ZN1vtbNGTLWNbbSK6eDG82HPk8t?= =?us-ascii?Q?8gb4jFfjGBLxP8yQsvIMrQS3OAiA05J7psh2Cgb9e1M21aKdMpnUcGPaB4hG?= =?us-ascii?Q?TQcrT3591GlKYuXRxufu4hMCBqXtbqLhZjEJtucRbFjkYK0eOFHLEgXLVFWg?= =?us-ascii?Q?oEAFkXYc6ItOGFhzyTHEKi2QvY63EemO0aqMioU+m6uorVIbD3myIPkkqOCd?= =?us-ascii?Q?WTfeW38L459CLGCEYg9LacrZRFOzJHIRbVmsDkoCtR38NvHS9qqDGdCBOwlf?= =?us-ascii?Q?1cLK1HKdNnwjrytGpYdtZeRSwARQxmFgLFBOxniKXIquTXP5FpeFPejq7RHv?= =?us-ascii?Q?A554/aw+SyUBoobsvNCzxPs43gdfo60y/tKKvx8zQ4A4pOVU1kvFI3IIgmiH?= =?us-ascii?Q?t2nRhhh4+aF5PSTDEVjPE4/0F8LK2OD8iU4VAoR/HIHUpdxsIapZ2xgavV3V?= =?us-ascii?Q?D3Q7td+XFaXvkW2U4ellIVkEuPR0EuO+cYXVHPmKa0jzvZVZneeiLpFQsLwt?= =?us-ascii?Q?yCDtuWoJbizIov/d30vSaHJykgV+QDYavYbwSxcXl8hLL4TvW9FHsPdzabWs?= =?us-ascii?Q?PMGZpL3FR+2I7gF6kBEGRR4tyOAmJ/sQw2XeBA6am8MzUWi7OcPJWXujPAr+?= =?us-ascii?Q?c+X/GkUy9aJFmVCGrPj0xYLN4zO6cqMAfDBasl+s7qn5NTDL+eyI8akE7gAN?= =?us-ascii?Q?nzn7Y3pmcJM2te44r4aqDqpegV62/l6emeWYq9/3euUtNjKPBOhiiUy5+6xk?= =?us-ascii?Q?jo2QuX1GVh9Fvcgkbu8gZfUp6FPjpwx0bGtqH8i5fufyn+sVqzb3bpWaIzml?= =?us-ascii?Q?7axwURtsKyzrsyzHkyp5C6ZMx4KEDvcgLb1EW+nwyzVBYsApC67fmgOCxibd?= =?us-ascii?Q?Ylzs5fmOvS35l0dEFkbsfVVGaCzMgZEY93swUNkUxzdRHScsfhi8EoW5NRXf?= =?us-ascii?Q?JFBBynRvy7rCuE07LTX7280wVakRibRhg35Qr9p1Kt+mDKbN+QicSKwO8YFn?= =?us-ascii?Q?Gtbb/icAvXUWDFyIf626A8qq7gV9qOUEKCtnOnt1xh7smesGWGiKbhP5HBoU?= =?us-ascii?Q?xBqKTSJTBYL44kb2JoQicm0cM3m22sYloVkW0OqRo3m/sbwSJUKOpAXeVcEU?= =?us-ascii?Q?xwMQssCczwlLDmOdhaKay6kspT9NG0M=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: pa8AIZ40FSVj41aBclT5KfDtV1TIqNa4ICeifXaYX217ABUDs8Vv3fwr/lRhZVxWg7KMe6SsXGHyVS195PWlQYvVwnzGz8E+/iGKdOLFCc5+DvigM2ktoSfhE6gFFoXsYPEAwC4nqU+Q808KSaO9j5VvobGsxF99U45j4ausRHoEyDKQPFjbhiutJHPGdeti/zRU/WD8W0Ex9Freaz4hGSk5IZborY8+84ASz35YyRJ9WsWoMllXp9wkNss87bNxpOGJlG7MyXfL8d/e8MulQy42Sq4W3K4EyUgahaIVQQl2XnW+tiwwXLtwwMKintZrPLHgYXND0b/TbI2AgJjLCOSp+A5A+pc9GPvBWAcAl/19uI+qTTIl/PMnUc+RzDO38LvOKUaPK8R5LPnb6nfKw8B69aMi944Yz2BR6PlSY9thGa94vlDjXbEp6YIG9MwOApSFGluXfZ9tvMLFrkzfHE8OKSbleBh+hk8CINGgFrFboOJgQSbrT75jBRRrxcJuDpChxOw1mOJLmp1k+N0YqlYkd02hsZvXkW40cI5GZt7Gf14ZAWXabgY4Uhrc5CItgGuc0FJrSmoBfbxGnhXHih7+Twj8ou2vwVjHK3G8Fc8= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 10ad7827-b9c8-493f-3d50-08de4d34f25b X-MS-Exchange-CrossTenant-AuthSource: DM4PR10MB8218.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 06 Jan 2026 15:04:53.4015 (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: 6WtRxItJm6gRTesjrbNP+g79i+pA3izo7+OwdqqWdQIx1ILO5y0K+RYMzv/F51m0cwphUzEgOVdOOFjiNe92T295JrfLNP0I4JIiTzwdQJY= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM4PR10MB6039 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.9,FMLib:17.12.100.49 definitions=2026-01-06_01,2026-01-06_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 mlxlogscore=999 bulkscore=0 suspectscore=0 malwarescore=0 adultscore=0 mlxscore=0 phishscore=0 spamscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2512120000 definitions=main-2601060131 X-Authority-Analysis: v=2.4 cv=Zvzg6t7G c=1 sm=1 tr=0 ts=695d249b 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=1XWaLZrsAAAA:8 a=_f7RAM-W_OM-GOxaregA:9 cc=ntf awl=host:12109 X-Proofpoint-GUID: kUiCH0J6IgYekZB5qrObU9H9l7fPtKU7 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMTA2MDEzMSBTYWx0ZWRfX0ThoqIwcUbC4 pUeEYJtsOOFoL0qmtdwpBiWYzCpS0qvdMRjNxvvXdhwnThDmPvx45FeND7pxzI2pspDEX3nFIeV KPR6gTeMcujJ3vyCcZXce0dIVN5brrBPgHYpwkBv/0XLnTVdxuZcAK4Ti0b/EHa+oxEKuWvgtMn e9nwLL2w3rLeckfbVX8wQ4L0lNOTmS+vc8j1l3XCKx/D+OBLIEjhL4sUKz18PEB3U14JAUokL3g ZPtlA/9ou/SBDA/Q6swiMiz2CM3W/wmjyQg4nLmT/RxcDzU3SQwP3gT9ld7bV8bLoiPa3XHcJ2e IbSQJzRPwSYBiUmoC6AlRXhYoQTQFVOqjLrxjNRbbajZ6hKeCaFmtyKU0AnPzoNl0rSRnJwRVmA sUFX2R89uXTVb/KYICJQ+HXRZ2lclNY0HamqOtv5t/29Togk4k0+Br9MjONuKZn/SPWjyii8ksi nRZeps3nJkXIzqp659oT4X0EKHroQEYTrVePzNco= X-Proofpoint-ORIG-GUID: kUiCH0J6IgYekZB5qrObU9H9l7fPtKU7 Content-Type: text/plain; charset="utf-8" This makes it easy to explicitly check for VMA detachment, which is useful for things like asserts. Note that we intentionally do not allow this function to be available should CONFIG_PER_VMA_LOCK be set - this is because vma_assert_attached() and vma_assert_detached() are no-ops if !CONFIG_PER_VMA_LOCK, so there is no correct state for vma_is_attached() to be in if this configuration option is not specified. Therefore users elsewhere must invoke this function only after checking for CONFIG_PER_VMA_LOCK. We rework the assert functions to utilise this. Signed-off-by: Lorenzo Stoakes Reviewed-by: Suren Baghdasaryan Reviewed-by: Liam R. Howlett --- include/linux/mmap_lock.h | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/include/linux/mmap_lock.h b/include/linux/mmap_lock.h index d53f72dba7fe..b50416fbba20 100644 --- a/include/linux/mmap_lock.h +++ b/include/linux/mmap_lock.h @@ -251,6 +251,11 @@ static inline void vma_assert_locked(struct vm_area_st= ruct *vma) !__is_vma_write_locked(vma, &mm_lock_seq), vma); } =20 +static inline bool vma_is_attached(struct vm_area_struct *vma) +{ + return refcount_read(&vma->vm_refcnt); +} + /* * WARNING: to avoid racing with vma_mark_attached()/vma_mark_detached(), = these * assertions should be made either under mmap_write_lock or when the obje= ct @@ -258,12 +263,12 @@ static inline void vma_assert_locked(struct vm_area_s= truct *vma) */ static inline void vma_assert_attached(struct vm_area_struct *vma) { - WARN_ON_ONCE(!refcount_read(&vma->vm_refcnt)); + WARN_ON_ONCE(!vma_is_attached(vma)); } =20 static inline void vma_assert_detached(struct vm_area_struct *vma) { - WARN_ON_ONCE(refcount_read(&vma->vm_refcnt)); + WARN_ON_ONCE(vma_is_attached(vma)); } =20 static inline void vma_mark_attached(struct vm_area_struct *vma) --=20 2.52.0 From nobody Sun Feb 8 15:58:01 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 452F6335557 for ; Tue, 6 Jan 2026 15:05:22 +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=1767711924; cv=fail; b=UtFgXp4IcZ++ggdoYHbtzZHMXe+EqYe9BweLr5A+SAEbpX7SEj0ei5+gWDAPcr2sSWKDpFCYYio01lguoR7OlZN7Y5Ry7OhcdqDZWy8L9ClRznxmGkFXVo6QhuqTq4k1Hovt0rx8Ja2hz+9BekmRZufRDOZgK5ZEU4CFVw6xSJg= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767711924; c=relaxed/simple; bh=Qo/IXcldOg/BVfCWDGTdPDVUXV1PNSEKLJFEi/bsOs0=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=MutdGNeLh4Jm7iwdpNb/p9xJDoHkh8rdxbmOZatbI9W4UKudCPUMUqGIHrzBgouxyZflQHEK/xw1uSCRlW7MbG9tEpLfNuHUY6cF66AMw0aNU25jnpGfkrcedX4uBjTRscKDcQHYRctKdX5mEnT7bOKUkv17PGnrlFc/9TL4b90= 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=dpJRRn0b; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=CbkoKdDE; 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="dpJRRn0b"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="CbkoKdDE" Received: from pps.filterd (m0246629.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 606Euelj4108252; Tue, 6 Jan 2026 15:05:00 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=cc :content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s= corp-2025-04-25; bh=Rf4oD+uVrKzB1mT2kVVckuYzj/2Pe0x1avPRPkKr0sw=; b= dpJRRn0bfeomWoAzMInjUv6DYw8ec0R7XV4AX5oxEasRX4PtZLtpbDrsQW0Wbasy IxI9OX+Cm4uZvCoYtFRCHl0+kLaoCQpHUV1z44EmkCUC8IVzhrQcAb5klQ4Z9QMz Eg3FqaEDcKN4w4EqXNl5bElvg9KdVVpbsZ7drxFU+dZS0zifHZ2V+7EJ2ZwOtNs+ 8NGvdu5SJ/cKLlNtR8/qZvYWOoCQxpMVWiotB93E9sxW7bZWeukQJISzIfOnFEdv kXubcTHn+7QoajjidOM+FfN/N3OeSINosRLa/Dda++sXU/6yWuwjXCZF4YK3HYkF ASo79hr4zCJfxwDRhCkVdg== Received: from iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta01.appoci.oracle.com [130.35.100.223]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 4bh4kh80br-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 06 Jan 2026 15:05:00 +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 606Eipfj020440; Tue, 6 Jan 2026 15:04:59 GMT Received: from mw6pr02cu001.outbound.protection.outlook.com (mail-westus2azon11012031.outbound.protection.outlook.com [52.101.48.31]) by iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 4besjjpx72-2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 06 Jan 2026 15:04:58 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=UilKCWUuvzaY7Y1Q0D2LjPdfOxQ452F3q0jyl+eom8LpOQob9WZW6J8sTthz0Hjr4dm27Asc4xBarp9DI7riLIll66qFJ0H9ZEQHFJpqXdyblbzaY/P3p2D862lpWaj4PnXCEAIHsbZVgSzObAXciYEmZcjM29ngju/Z71Oh2hg2i/1Y5FY0+Ky7pAo+ENGhFe0DMn6a/hiOL+yGz0HKYDzY8JQa0/R7uPWDcoHQZS1vTjVjTGdzVVAk24JCfSEXYqFTc60rLHMdpO/vehuT/Ui34Kik+4Ucn92G+MOJJknjs42B5FAllrGVeIL4b3uxbkUJj1zzZ83KCJPQM1g/Ng== 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=Rf4oD+uVrKzB1mT2kVVckuYzj/2Pe0x1avPRPkKr0sw=; b=RfsDf688PU5BshdLoN6ho4Kx3TC2N7CthLsGtHLplTvwWvURGuFVJBamuapCT9BWgL/7EBqLHzu8ZzUAooYWoWXSfcr796K5H7lZHFO/IMeii7He2wP2JvZ0tFTovRi0a6zLMSZ52rptvLeQNBaIAAyhayMtgDOfRIi4OE0d+40nLu53KQx9Lvo6WG3OJxxIN0HHCwXrZvq+7UAl2j+HBENLaY6FVJIf3J60+UeDxGIODVKI3t/Fv8ZvSYR7AZdoFkfLzxI6MQlebnwlmJDZYE0dSCjmU3gpOV0v5vHRbqNkIyjUIdUS8jro3+sKqGLzVpZacjXUhYGXFCSg9D520Q== 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=Rf4oD+uVrKzB1mT2kVVckuYzj/2Pe0x1avPRPkKr0sw=; b=CbkoKdDEs3q6TugzQ7zZakuToPthzBc5YKuNaek2n7NoSPug4fpSEOhwtWYxv4g6bYK5ShH4O77ZPnNgN91GSBX3zdoeJ+S9BMSXBSy63TzDDoXIgah8oSBTWocpPGQ6np0aDnDy6p2V/U5oR/81TcNweTnEBpjWOHOJNtXtDig= Received: from DM4PR10MB8218.namprd10.prod.outlook.com (2603:10b6:8:1cc::16) by DM4PR10MB6039.namprd10.prod.outlook.com (2603:10b6:8:b7::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9499.1; Tue, 6 Jan 2026 15:04:56 +0000 Received: from DM4PR10MB8218.namprd10.prod.outlook.com ([fe80::f3ea:674e:7f2e:b711]) by DM4PR10MB8218.namprd10.prod.outlook.com ([fe80::f3ea:674e:7f2e:b711%6]) with mapi id 15.20.9478.004; Tue, 6 Jan 2026 15:04:56 +0000 From: Lorenzo Stoakes To: Andrew Morton Cc: Suren Baghdasaryan , "Liam R . Howlett" , Vlastimil Babka , Shakeel Butt , David Hildenbrand , Rik van Riel , Harry Yoo , Jann Horn , Mike Rapoport , Michal Hocko , Pedro Falcato , Chris Li , Barry Song , linux-mm@kvack.org, linux-kernel@vger.kernel.org Subject: [PATCH v2 7/8] mm/rmap: allocate anon_vma_chain objects unlocked when possible Date: Tue, 6 Jan 2026 15:04:32 +0000 Message-ID: X-Mailer: git-send-email 2.52.0 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: LO6P265CA0014.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:339::12) To DM4PR10MB8218.namprd10.prod.outlook.com (2603:10b6:8:1cc::16) 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: DM4PR10MB8218:EE_|DM4PR10MB6039:EE_ X-MS-Office365-Filtering-Correlation-Id: 6206e132-f6ba-4d63-b2c6-08de4d34f415 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|376014|7416014|1800799024; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?k1k9H7Y8SIFGpwcfkIoNw+wGRbi/ge37XJtJm/+804+2QRxGYstUH3Lji2Dn?= =?us-ascii?Q?KLYDa7kVckkDsyWGbyPWVcsswTr8ATh9W9LMk3DTv0kaLEMzM2TOFj3KnHhq?= =?us-ascii?Q?j3iELXZ23YsLi0VpT5OGffStGRo5/aUPCFzJaUeaj8SvQBD67o2HOnUChZ5L?= =?us-ascii?Q?YtsEV1TuDYyig+glwN87ySjHv+Jh6X9jQJA0NAeoWS9/Rfm7tSRfD4ZcQ4Vl?= =?us-ascii?Q?bOzgHbpTyTwbj2YarfhyHzlB1sVZX13+Hn5pAMy2XWqCHo2zcl8p0Bxm+0dO?= =?us-ascii?Q?zC2zb8x9Bi/c/osKvQkZzQHFoLS2B4Tds2ha0u3o/wUf75f8TD6POqH44XJh?= =?us-ascii?Q?jMqgiuCPy83W2XBhf0gOPjP6w126vG+zy9Cgz7QpMeKCTDjSzwetJ29BrOXF?= =?us-ascii?Q?GPzMxQrzFo7EwyNGGWlpprJ0EVxasauoDGvtOaK/Ox3HZoq20NL/gfpMcSqm?= =?us-ascii?Q?SEpQPrcYIfGbke5MHYswdkeMGXhi3ZzufI+12MK0NkjJmJuDE9bleoawUPni?= =?us-ascii?Q?x2RL/Q8WIkFiwhNftp+R67s/6lWq3b+HKjyoFzykTeIyvhjDLOYNa5pnK5TX?= =?us-ascii?Q?bvpqMqsLzMQGinxPmMC4MOBZ+Mj/fjzS9+/aTun6SAPwfg/jJFTBPS6kVEv3?= =?us-ascii?Q?HsRgvkJGGJUHmej27NDSLKavhMB4jivY0GZ9KIxIOGW9TWRXE7Kv21YqVjgS?= =?us-ascii?Q?klyGFSOVrxMGWT/M3qblevu2Y2XyxlF8sYZ0XKx+v+lnsev5sPfFC1Rb8rph?= =?us-ascii?Q?2I3AosfdgfeK5VTW56PHkr5uX7H1H81b5EI6z5cTolAzbpSZ7sKT94CAjtBu?= =?us-ascii?Q?5DNQX9tCSFpuY4Ti3dUTeocKCPNLjTS9F6ksJfAiZCQrjwKLu7AZMWBF+pmY?= =?us-ascii?Q?V6b45zLpyiLN52oJgVWfGD7wcwEdmRy+oTVyE7R5Y/OP/oWk0FH5/714p5kh?= =?us-ascii?Q?VIlOykx1KzYDRS0ut0ijoyAT7FH2/AxwY6q/RVvHooaGj7hR9UJ0y2nfNQpp?= =?us-ascii?Q?8SyjeN/9M4uiZCkM3hh/icR+xFhQqZ8DfJU76x/pHfET/Ar12oT0F3QSLGSW?= =?us-ascii?Q?eg1iboUNCCwgvZ0qwbRTYAxnHvBkRmdCQuo/axPezWbjBGbw8lYAiWJ7hzXt?= =?us-ascii?Q?a0ooiEj+uIxZ/7H12qjhVEKCXnKPNWldEmQyvjHsWtfY2wYbx16/Hxv+EvCu?= =?us-ascii?Q?bkuzibTn+NbuQfkriPCc9+NT0GdhpD5chF3bHiybZqL8eNv+i5Qds71rWE8d?= =?us-ascii?Q?IlW6D7/5rNsTzGG41acjpCe5DMtmiDcf4Y33MOHMM+uBu5BXLH0smpETXfWC?= =?us-ascii?Q?f0tj+Ei+T0dZk3lWn86pAphq0CxhsYPhkbJqtU4luHq3HjufXFC9QzoYE98Q?= =?us-ascii?Q?zxn+M9BzM1XwWvjEH+3ihKU//nuay3Kn0SQpxnJw09NWAbj7mt1asl4MGgTi?= =?us-ascii?Q?7UAnkOpmdIdlL7U0KKaXW6hUrTEQt6T3?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DM4PR10MB8218.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(376014)(7416014)(1800799024);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?4oWzuIdezl8aJIEtBD7gho3WEsQ/3pCFKe06es3wLepPv98V+hIXiqHwRfVx?= =?us-ascii?Q?EmCKnO7hHbVVS8829epOfwhi5YWPxUPgag4RrZEnnLHKGeD5i8Sn/Qrqwi7p?= =?us-ascii?Q?f2VnXspLPlqV+bX4SjilKH1UUMLzpCGQYL0T333PFgAQ+LjN5q5uTLC2oDAT?= =?us-ascii?Q?Mj8QWixZrsf7gw1RzezYMwpTrckQSB0/owgw4L2+1bdif5WQAVHP21ghKj35?= =?us-ascii?Q?Zv1cNcm1u/YnFILrOkYZYOrKFEZnhoZgULNUQtyMR6TejB88bGmCpZj4Og8Q?= =?us-ascii?Q?KbaVsBDsRN59zL7zl+pVEWit5Zi50bJn62gxbHAKXh8GHcTVlcTSJs5hyJpk?= =?us-ascii?Q?sYr9jEMw9gIvkJofen1KKtudTuzEOma+I1+d3MuPH3GJUhRCzt4m3zzzYd/8?= =?us-ascii?Q?1AQ7TikoOPDQd3k8L5vTbcN74SWy53oGGL8+QZTF9bgwmCAFg7itWChH6IzI?= =?us-ascii?Q?tAI6klMIILOxKST/gruFgAwVHs+wLnAS3vfNNEsO2zNG09yyIQ95INpLKS3i?= =?us-ascii?Q?JSoxxIk388ukWlm1TBwPL1Ir07246kLzzYSFjM9eZ6Acps+U7m4eFVmOTxZi?= =?us-ascii?Q?qe6W90NBxPJd/3TAQibsb4MGC8Zhlt/N9PRvxVZLr+N4c/P0ANSMVe7TkkI7?= =?us-ascii?Q?g2MXAG0HTfUSXbUUGobrr8SSsJHcAvhgVfT+dJWUvWqOfD7vy1cyeTnymW1N?= =?us-ascii?Q?NGs2HOcqvgEKMZvwHF67BghaYsshrY9ctf6j0Yj6FK28I18u6YtROaEJvWja?= =?us-ascii?Q?uQmoR4ccM8I2VsY12IJ+ufVVxyOJKTjS8bsAl4Eu/zjvNNj8Ji1101iLVGdf?= =?us-ascii?Q?02IRJri8UI5qw/TO/9M1ydX9Z9gp8FyQRN3acCfEf++m/cpzyKcj+QTqPpwL?= =?us-ascii?Q?QrX5KO+WP5Ir1H0ur5Qm3he7buk7BNGG1JDHK+3A08wVdxDYZmrLCrPaum5R?= =?us-ascii?Q?PKJfGXWIu7Ke5HQ8r5tN1K7c8ZdrvaL2u+opVUCbatuiDuTGJgDnQX0/zOk7?= =?us-ascii?Q?2k75g7rRQngepnG6n2wAGxOhRw7ERW4v9A0LvkFkXONwEEhvETUm6kRhaN46?= =?us-ascii?Q?YLLKte0pts97RDZYuIfzV3/F4Oy+VD9zYNYimLG/Zk4jEc7QIa0FRwZk0bdz?= =?us-ascii?Q?mBrNeTmpvsynXsveQkwo5s2GWdtOXdKx7NUh/GTeI9DXNR6S6KUMThOJlmsm?= =?us-ascii?Q?mdhtnBcYM7Fj3ks+0+4P/GuFnsssU8UwL3OCWb+mtBfZ9q6tccx+kUkfIJKr?= =?us-ascii?Q?DTuqnBh97cG8xcXv8duaXnL7olVbRFtyAKZQ5sC7M46QUDh2D//Gt/lEW8X4?= =?us-ascii?Q?+lXr1SiZuJbHj1OdYvyyr+EED8AjBQGQjpMqX7xdyCmcBxuzJmUoHtId0Sxb?= =?us-ascii?Q?hZ7qfUsxiCKNZNma8u9J76gvv92Kip1463KoA9quezH+hudBckTh8TkNlKe1?= =?us-ascii?Q?3vqOAg+NDCd51atTwTFvolJMupEKQZFJ27jH9y8HHgzt/adlzN20CKYeMx6m?= =?us-ascii?Q?UsmMPYj2gJPMidT8ypQyy0NUCnDuF3rfKOWYA2j4Whr5OAnARV7OSdxpNyzU?= =?us-ascii?Q?bXD3qF6tpcfPujg/5sIA0Yz7l5fr9FyCPg/e4P00VA1Zk2niBUilsY5YKRFY?= =?us-ascii?Q?VwcmD+5bYWHhqtxyPvrxumSuAnqx0jgjn8pMsj0iZ2hTCx6EOPyH9It+MAWe?= =?us-ascii?Q?rZkrU6joTu3l1yMBMIVKEjAFt0JVLZ/16RIh7oqO6xsET2vyYO5DgP2Z5H0Y?= =?us-ascii?Q?UKko++wJbn3MQoRh5SEySOxTCADlsrs=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: Z1y//fsgOZsOikQAV5b52IxJPG++RApQcc9CR6f9AVutBE2V/XlWim0qKOKXxTmu6rH4y7ZkpETCDdnr30RBizozM9rCVaRhrEEd1HQ/aWQySc4fP905BvS0wh4hhj7aj+U1w7MjLqAb8gJ2MYQvQIE7b9iFxqyu7gd0McZCgbwF/djAWmaXQOlCCE5tF28APqitI6yF80QsW3vGldEkc2r/lcNMW33Py0ITMPfp2al6bQP/1i/HO80ZgveaY88PMUfOLM99h6t4+oDXU+8kYNa78FzcbAV/LXaDNh1Zeldu1yeEi6Dtg4+STS9HLpl/JbNrMncXOCEXnnUtCJu9IQ3jzGs7g5foE1j91YLakXC0VAoCw9/Jjtdc4WjUShMkoHlfLC4Hhe6Ely8nj4SwFzqJlH1vIja4OVWjel+6J3Ib3RiTKzKlSZeCtM445kHKbFhpbv5MdwnDkLXnuogsrBc+/12ciK1O/M/Cn07u/pY6TwIDWLiuqQPRz/Ln19ey3+Qq64VbmW7KbnUkSdwHzlc/IFemSlpo/rhsiPq6wOt1Glh7klA2+K6nvJqykasUUaU7rxPo1LBNLcsFY5ZjQD53scoPEFMZ3R0ieDvealE= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 6206e132-f6ba-4d63-b2c6-08de4d34f415 X-MS-Exchange-CrossTenant-AuthSource: DM4PR10MB8218.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 06 Jan 2026 15:04:56.3993 (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: 8ygGHEYJ8zYpXZ0C9rALl4kGp3ngV5gAKPUQz4mhOH+60VvHoXWrTvVX/jHxfqHj7vVYuDQNhn12YrnSZ5bJZogi1KzOs9cr6yD7hpY2n4E= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM4PR10MB6039 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.9,FMLib:17.12.100.49 definitions=2026-01-06_01,2026-01-06_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 mlxlogscore=999 bulkscore=0 suspectscore=0 malwarescore=0 adultscore=0 mlxscore=0 phishscore=0 spamscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2512120000 definitions=main-2601060131 X-Authority-Analysis: v=2.4 cv=MM9tWcZl c=1 sm=1 tr=0 ts=695d249c 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=1XWaLZrsAAAA:8 a=9ItZGrRR58AQ08t9q70A:9 cc=ntf awl=host:12109 X-Proofpoint-ORIG-GUID: EcgPwpdfkSNLi1BgN9jSjFkjw7r2zO5Y X-Proofpoint-GUID: EcgPwpdfkSNLi1BgN9jSjFkjw7r2zO5Y X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMTA2MDEzMSBTYWx0ZWRfXz03qXu5Ka381 hm6w4xdkHdCr8tadCSq2p5rXUrcE1l7UmDgqU8ZTRv99U4GjYFkNjDo1EBXfpZ9DbmAJnkHzZcC JXXrsWDWQi9etd/X6hp8NanfKCe33QBw2NXmMPDOoTGvLU5GPoZH6Kqj+lWL9SrWBScCQHy8dB1 NhQOVWL7Ov1mbv158Buf7ZZRDbZ3o7KJhrpFcNl6U9KQbOJ0QTHsPxw2HA16aOVKzN0+HMyLKJM JcBD3EObACqArGSftMnmIZ9VCki0dXWZym71PInIiL0pmcljYvUUsDEMLwL+CRTRq16moD0bPz4 v/j43zbjjcKoRHvBX0nmggEA4O4lZxyJKXkwCjTuVMLMrLM5AgZdBnKk9qc5v+wBfJeSXGUfVKr ildcqVS9jLCzrvq+Aja3o/fp8tGIdJVWFv2cu0S6HjoM0wd/awQFNW6+FEENRPVcadTkFYzOs3A G2SjUXhhlS2iuft8XZP2ykZkYVdwBE/DAbq36ayU= Content-Type: text/plain; charset="utf-8" There is no reason to allocate the anon_vma_chain under the anon_vma write lock when cloning - we can in fact assign these to the destination VMA safely as we hold the exclusive mmap lock and therefore preclude anybody else accessing these fields. We only need take the anon_vma write lock when we link rbtree edges from the anon_vma to the newly established AVCs. This also allows us to eliminate the weird GFP_NOWAIT, GFP_KERNEL dance introduced in commit dd34739c03f2 ("mm: avoid anon_vma_chain allocation under anon_vma lock"), further simplifying this logic. This should reduce lock anon_vma contention, and clarifies exactly where the anon_vma lock is required. We cannot adjust __anon_vma_prepare() in the same way as this is only protected by VMA read lock, so we have to perform the allocation here under the anon_vma write lock and page_table_lock (to protect against racing threads), and we wish to retain the lock ordering. With this change we can simplify cleanup_partial_anon_vmas() even further - since we allocate AVC's without any lock taken and do not insert anything into the interval tree until after the allocations are tried, we can remove all logic pertaining to this and just free up AVC's only. Signed-off-by: Lorenzo Stoakes Reviewed-by: Suren Baghdasaryan Reviewed-by: Liam R. Howlett --- mm/rmap.c | 78 +++++++++++++++++++++++++------------------------------ 1 file changed, 35 insertions(+), 43 deletions(-) diff --git a/mm/rmap.c b/mm/rmap.c index 6ac42671bedd..8f4393546bce 100644 --- a/mm/rmap.c +++ b/mm/rmap.c @@ -147,14 +147,13 @@ static void anon_vma_chain_free(struct anon_vma_chain= *anon_vma_chain) kmem_cache_free(anon_vma_chain_cachep, anon_vma_chain); } =20 -static void anon_vma_chain_link(struct vm_area_struct *vma, - struct anon_vma_chain *avc, - struct anon_vma *anon_vma) +static void anon_vma_chain_assign(struct vm_area_struct *vma, + struct anon_vma_chain *avc, + struct anon_vma *anon_vma) { avc->vma =3D vma; avc->anon_vma =3D anon_vma; list_add(&avc->same_vma, &vma->anon_vma_chain); - anon_vma_interval_tree_insert(avc, &anon_vma->rb_root); } =20 /** @@ -211,7 +210,8 @@ int __anon_vma_prepare(struct vm_area_struct *vma) spin_lock(&mm->page_table_lock); if (likely(!vma->anon_vma)) { vma->anon_vma =3D anon_vma; - anon_vma_chain_link(vma, avc, anon_vma); + anon_vma_chain_assign(vma, avc, anon_vma); + anon_vma_interval_tree_insert(avc, &anon_vma->rb_root); anon_vma->num_active_vmas++; allocated =3D NULL; avc =3D NULL; @@ -292,21 +292,31 @@ int anon_vma_clone(struct vm_area_struct *dst, struct= vm_area_struct *src) =20 check_anon_vma_clone(dst, src); =20 - /* All anon_vma's share the same root. */ + /* + * Allocate AVCs. We don't need an anon_vma lock for this as we + * are not updating the anon_vma rbtree nor are we changing + * anon_vma statistics. + * + * We hold the exclusive mmap write lock so there's no possibliity of + * the unlinked AVC's being observed yet. + */ + list_for_each_entry(pavc, &src->anon_vma_chain, same_vma) { + avc =3D anon_vma_chain_alloc(GFP_KERNEL); + if (!avc) + goto enomem_failure; + + anon_vma_chain_assign(dst, avc, pavc->anon_vma); + } + + /* + * Now link the anon_vma's back to the newly inserted AVCs. + * Note that all anon_vma's share the same root. + */ anon_vma_lock_write(src->anon_vma); - list_for_each_entry_reverse(pavc, &src->anon_vma_chain, same_vma) { - struct anon_vma *anon_vma; - - avc =3D anon_vma_chain_alloc(GFP_NOWAIT); - if (unlikely(!avc)) { - anon_vma_unlock_write(src->anon_vma); - avc =3D anon_vma_chain_alloc(GFP_KERNEL); - if (!avc) - goto enomem_failure; - anon_vma_lock_write(src->anon_vma); - } - anon_vma =3D pavc->anon_vma; - anon_vma_chain_link(dst, avc, anon_vma); + list_for_each_entry_reverse(avc, &dst->anon_vma_chain, same_vma) { + struct anon_vma *anon_vma =3D avc->anon_vma; + + anon_vma_interval_tree_insert(avc, &anon_vma->rb_root); =20 /* * Reuse existing anon_vma if it has no vma and only one @@ -322,7 +332,6 @@ int anon_vma_clone(struct vm_area_struct *dst, struct v= m_area_struct *src) } if (dst->anon_vma) dst->anon_vma->num_active_vmas++; - anon_vma_unlock_write(src->anon_vma); return 0; =20 @@ -384,8 +393,10 @@ int anon_vma_fork(struct vm_area_struct *vma, struct v= m_area_struct *pvma) get_anon_vma(anon_vma->root); /* Mark this anon_vma as the one where our new (COWed) pages go. */ vma->anon_vma =3D anon_vma; + anon_vma_chain_assign(vma, avc, anon_vma); + /* Now let rmap see it. */ anon_vma_lock_write(anon_vma); - anon_vma_chain_link(vma, avc, anon_vma); + anon_vma_interval_tree_insert(avc, &anon_vma->rb_root); anon_vma->parent->num_children++; anon_vma_unlock_write(anon_vma); =20 @@ -402,34 +413,15 @@ int anon_vma_fork(struct vm_area_struct *vma, struct = vm_area_struct *pvma) * In the unfortunate case of anon_vma_clone() failing to allocate memory = we * have to clean things up. * - * On clone we hold the exclusive mmap write lock, so we can't race - * unlink_anon_vmas(). Since we're cloning, we know we can't have empty - * anon_vma's, since existing anon_vma's are what we're cloning from. - * - * So this function needs only traverse the anon_vma_chain and free each - * allocated anon_vma_chain. + * Since we allocate anon_vma_chain's before we insert them into the inter= val + * trees, we simply have to free up the AVC's and remove the entries from = the + * VMA's anon_vma_chain. */ static void cleanup_partial_anon_vmas(struct vm_area_struct *vma) { struct anon_vma_chain *avc, *next; - bool locked =3D false; - - /* - * We exclude everybody else from being able to modify anon_vma's - * underneath us. - */ - mmap_assert_locked(vma->vm_mm); =20 list_for_each_entry_safe(avc, next, &vma->anon_vma_chain, same_vma) { - struct anon_vma *anon_vma =3D avc->anon_vma; - - /* All anon_vma's share the same root. */ - if (!locked) { - anon_vma_lock_write(anon_vma); - locked =3D true; - } - - anon_vma_interval_tree_remove(avc, &anon_vma->rb_root); list_del(&avc->same_vma); anon_vma_chain_free(avc); } --=20 2.52.0 From nobody Sun Feb 8 15:58:01 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 431E23358D3 for ; Tue, 6 Jan 2026 15:13:01 +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=1767712384; cv=fail; b=P0Ke3Y2lRKobzjnHhB0frq/oNysYlnGsjhJgK4PTQ2DmDGeCES0x+h+3n296Twlt8z6M24trbjUKDS9VR3X3OahaONi3J42Fha2jPLYA4S6dnTVt6ydNRApOohh3Q8PGv5l/LTimIp/KinctFbgfZ+Vw7Wj1ltIhsTlFyNf5zhg= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767712384; c=relaxed/simple; bh=VoZ3iCH7Wjmy5WYBF5IytWWE1/jwuLYV21Pnes93tok=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=l2fRorXWQIL8s5ZaBIAJRm1kDkmre73dSx5PdObg/EWp3pTgYMjGCcqOi0uCNwB2hp5X7/eEfTgZVKWXfTq3lOGnw9VYZ7TFwi3Kt2sVQVYBAI47gDb9ssmIWKVmHpHY/KYN1ekNWT4s+V1igr8W8LJLdxwFl4Mxv55KybhxX/g= 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=KpsLJOM0; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=BmwN0lAD; 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="KpsLJOM0"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="BmwN0lAD" 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 606DEfjv166594; Tue, 6 Jan 2026 15: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=w8gQaPnDRbdquczzpq+k+EmPWZyZ8tROV+YYkXiPUPE=; b= KpsLJOM0vUXJwHdvG6llYUIQtrOcr+uqGc8zL7vfnyMiYtnX1Y8ARlC7mVql1ayO Y8KXSQApt+Ex6qO1sWK8XOw4Gg1r2yWeBWBU+Puph0VVuWzIve2m6PvxHB+c2lIe pelYLRH6itED03xPU5rkWlxyi0HMTojEayZk6iZyarXh7MFm50Ppe4oDBgSKiCjQ jdPgvp01BML0lRHerZ72Dpr7hQFuNOXxGeoC+C56Cx1t/RwcALH+OagxpTQ/3SX4 HBzLv+HDsmjkUhD2JlzUddxkdhpLNOC2iGuk61SiE58QmJ6d+FM8JJunjzIGkPZP DgoPddgsrN16KzgacdVyrQ== Received: from phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta01.appoci.oracle.com [138.1.114.2]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 4bh33x065p-7 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 06 Jan 2026 15:12:42 +0000 (GMT) Received: from pps.filterd (phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com [127.0.0.1]) by phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com (8.18.1.2/8.18.1.2) with ESMTP id 606DBj7D013571; Tue, 6 Jan 2026 15:05:02 GMT Received: from byapr05cu005.outbound.protection.outlook.com (mail-westusazon11010050.outbound.protection.outlook.com [52.101.85.50]) by phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 4besj8em9a-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 06 Jan 2026 15:05:02 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=qUdO49ghxMFd8BOKu69as2mkWlC9JBrX0x7F3hhxuAiiUbhg3XMvBSeBbiS2XOEnz/mDri0RbA6jOgWDhLGKQsxgISvfMPvdN6us5Cc6iGlzWW4BQhpnUEQKF+PBcAOCV3gyGR/9+yr01ZnhPxIa4nsJLbXvOgTqhaq8dTpTuLgtL6I4OWOWZ4/d+olyz0HPDZ298B/EaHPqI8wgM63O4IaTwrD8fb5M6FtUOJ5vPu47zgR/95tt07y2CblJ5Pv5gCTjNqwcJgoGQLj4DWljQzvx22faMW5+igf91A6viANrjTGN5Y16Y4GMebvfkzu7FlJMqZKwVbmhtYqS9qQm7Q== 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=w8gQaPnDRbdquczzpq+k+EmPWZyZ8tROV+YYkXiPUPE=; b=kpLwXtyBFKPvFOz84R8+WrVWGD81AFYG66I5xFqPrxTLTA9IPWH+LmGlHVMg8Xiwdi1dx/U2jYfN+/HO5JlyvqIBqV3U/ZpkBv47gu7Fqh0+7HzMiycTDo+LOzd1Tdmf9Xutxdzv1CXIc1hwmjPP+gWncaTbtw+6BoawDd7db+IhRxags6QVYUk6FPUxYrN1DMVRe7+qMycZtT+1WP94wZ3hUi9wcK3IJAeU+wYex8LkDhTvuMZaYaIJSssqqzC13hJR6i0MHlSrUahUJlVuXc8Ckrt+LF8egdlAkOFvN5qZVJpBmFS4D/doTm/TU1U53aI7/kZRRREuYuXtP13VuQ== 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=w8gQaPnDRbdquczzpq+k+EmPWZyZ8tROV+YYkXiPUPE=; b=BmwN0lAD8+DQmTMMfL96vpbT83p2ubkXoT0hDJhFiUDMnDt/cGMUhg0L74xDK3gQJCMgYKpzTZ9lfCYQ1hR6mPuRLIEqJmRvaeCmZeqHCWueJmQz/dltcV7Mm9nWVvoWRj+qFrc6M8JVl/Ij3XccCM3zBcmL5nrbbe2++u3Tmq0= Received: from DM4PR10MB8218.namprd10.prod.outlook.com (2603:10b6:8:1cc::16) by LV3PR10MB8083.namprd10.prod.outlook.com (2603:10b6:408:283::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9499.2; Tue, 6 Jan 2026 15:05:00 +0000 Received: from DM4PR10MB8218.namprd10.prod.outlook.com ([fe80::f3ea:674e:7f2e:b711]) by DM4PR10MB8218.namprd10.prod.outlook.com ([fe80::f3ea:674e:7f2e:b711%6]) with mapi id 15.20.9478.004; Tue, 6 Jan 2026 15:04:59 +0000 From: Lorenzo Stoakes To: Andrew Morton Cc: Suren Baghdasaryan , "Liam R . Howlett" , Vlastimil Babka , Shakeel Butt , David Hildenbrand , Rik van Riel , Harry Yoo , Jann Horn , Mike Rapoport , Michal Hocko , Pedro Falcato , Chris Li , Barry Song , linux-mm@kvack.org, linux-kernel@vger.kernel.org Subject: [PATCH v2 8/8] mm/rmap: separate out fork-only logic on anon_vma_clone() Date: Tue, 6 Jan 2026 15:04:33 +0000 Message-ID: X-Mailer: git-send-email 2.52.0 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: LO2P265CA0348.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:d::24) To DM4PR10MB8218.namprd10.prod.outlook.com (2603:10b6:8:1cc::16) 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: DM4PR10MB8218:EE_|LV3PR10MB8083:EE_ X-MS-Office365-Filtering-Correlation-Id: 481919ce-42af-4c16-5fb5-08de4d34f5f6 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|366016|7416014|376014; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?HemoRqPvDCqhmRreCg5TOUyREKSiRDCfZAUF8NEmyMTsB2ZjPjJaV7AuOsgY?= =?us-ascii?Q?oBjJ2PnekRHpKRC7TMRos3rw7/8OAZ+Q1bUBRQRLuhyRrN9WXcY7qKzv7wF5?= =?us-ascii?Q?jRS7x0M4ZrUz26Snrk7sObtwbgVOYhlS80RZCmrcu9gAPxOH7jNF7iE9UWki?= =?us-ascii?Q?ZKK64EV8e2HGfROVF+0TBmQLLAKiJKU7jpf1bjPcZS5QIQKwh2umwZFEF8BU?= =?us-ascii?Q?6DcCwXN4LlQp+Jeci2ewSw9i/uJzXf0hreHvMWUYmHFnYcVJ1lM9wNqB7+ry?= =?us-ascii?Q?Qc2HVEs++owCSEsRNXhlc5aWKmCBp4iue9Vxvg8NG4RDmnx4CEt9WeH4V1Am?= =?us-ascii?Q?SVdtvBZP+yCrbWnGBFEzgVfJW5vVP4D3eL5/zFiBflEyF+MXCWar3YI1UBWL?= =?us-ascii?Q?2R/uftSVYDKWDgpWUHwsU+v+MW9Fq0JTV3SeTlhZnUv3XVLarDGwv9JMfE/t?= =?us-ascii?Q?ZkNQvy0grqRlG+gb1xGiB8zEBny0kw072cQ+LJmM5tazYWiNMwGHJKs3ixef?= =?us-ascii?Q?7fqs0Z8WAC3VzNPQBh3xcc93UPLOf3hEpWFxYf4nmMxC0mAq/FmHrOUneHuZ?= =?us-ascii?Q?pF3cK6KAxNuXDcQQjSmmuUpSm57L92qrw+q/P4+IvCOt3zigzTQ8hrok17wG?= =?us-ascii?Q?Q2AKqd8FMFINu8HkfWcmon3NK+uwf1BcgAxU1Te8m9J/WbLvKcs8zADdV/sy?= =?us-ascii?Q?jIvPKQxsogquPyzMxkm6V0dTIwTVVZBNoW1Jl9MCaUMI0eoOTLzoZrSejaMy?= =?us-ascii?Q?jU++vvtW5QS9cyNtrvouPk+/01xdRGycyxzynU2j2XnnpvRjGSeBo+Z0LEpH?= =?us-ascii?Q?6ICrjl3S6IKMZ9g8B0kWSWvYWY0LMov0+ldx0OHJnoHZG20+B6OK9VphnpAN?= =?us-ascii?Q?V0YxAnbnjHbUk536o0owSd23cP5DZX/teXvbjVy9ZlU2U2lnI6zaePydGacs?= =?us-ascii?Q?C1JX3iRsUtnBZjF4ep4Doo9BdLzHqAnVafsWXN9Ve2zqd4jy2CJPsuQyGhBx?= =?us-ascii?Q?Ei3hqWujKnf17wkHoPlmfaPtwsqftPXM7cC4ApoWovRsCmDrp6PaBBSCg+P8?= =?us-ascii?Q?yWKoU1a+VaySAsK9zOykP6zIFf4ZohVGS0ls8oAAgbdRQByxRDoNHVD5LoX7?= =?us-ascii?Q?jGqLgfh8BelJ7PRihPOPyDj7nvOg6qaYG4cJt1HhD4HIi+72d8NzON3K4//R?= =?us-ascii?Q?pefU+qiOTLZMtwLoqWIFwjFI9kedgjQBY4CyuojnmXx6Anz3pv4r3O6se034?= =?us-ascii?Q?wspEVvcy0iQqHafgiKGqeNWzhwpHOKm8mgngJFs7PGY4C5VXcPxFiZDjrZfa?= =?us-ascii?Q?vV3vm+0L1q+IKTPFKjoZZXbhsNpKUDimMLLIaOjQREh+Vo41Q4I7qwotvKYd?= =?us-ascii?Q?xxL2WqH+q/1ysJKaSkeMhU45N7QreJ9DGjYQ3vrxux0GHgxYTw79KHSSK1jr?= =?us-ascii?Q?Es5Nxmi7Vd3cuS9CwXPqDO2173oLft2D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DM4PR10MB8218.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(366016)(7416014)(376014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?OP8vUv4CW1cR1eBoK6OiqA8L2VLsrGVmRzAUI0O5+cpKnQ74ax5d4tumFmOY?= =?us-ascii?Q?DYW+99XEfuEEN/3ZuWMXAVrOXuurrWXVnzU19wIxEorTJ2yzduMIkbuotVCB?= =?us-ascii?Q?R8qRhlgaME0UDv8bS6g5SHyI8Xp84T+BHGJJQc72v631f2+DegP2rAKSqZst?= =?us-ascii?Q?hQUHpzD/sV0uKGFUivoUttX4w7yH+yh0E9Ox3ZlJxoeTchGB/NgnIJqDGcUA?= =?us-ascii?Q?CsjUqs8XKaBTL8UFvfv86qKESKPvQdwXkoN+ZVrnARnrjC8l+GVk3QeK4SEr?= =?us-ascii?Q?V8Q5C1rPlC0t3wrIXV7yjimWf0WqL26tPEhBqSd08E65jhQA42Yz21n3bcPY?= =?us-ascii?Q?uqHEarbZz6rzbzhY50b4lzPauyceA9hdYGHP6/hpCOe3I3w77ufIm0LVO55B?= =?us-ascii?Q?tnL9xeiMe+IC9JvpvcOx4HqJq+yt7hzrknmxLGK6h0onXVXYuO4kIJPlDkAp?= =?us-ascii?Q?GnEFxklwNJCGH5MFrCH1gtNnGJYBGBgcBUy7mp9+aHOMMDb4rnqM10fTk5mn?= =?us-ascii?Q?xHLiAEL6sP28FzP4mLYgLeSgqHryd8kHU/Mx7Vhu9qZJZsRIhPcAuOCPu3IY?= =?us-ascii?Q?z8OeIf6mJowQSalq0ZDC+csJWR6O8APqv4ecV/lqIiG7VrxJT42LaOUcFUOQ?= =?us-ascii?Q?cb2yLYeQd82aH8Oemwk+D/O4dPOFnQm7T4xE787IBWSadMpDn+/QKBmUZJza?= =?us-ascii?Q?Oin8koYRT6//hn0KZtGp6uw3xYBphQ0vrHLPcJV4NfnUwSmJI++QPvofVwQK?= =?us-ascii?Q?JgdqdqMlr3utu45UcnurkqdE5nnmX+lH05jO0WrqZMk6zd5tWtBPO4oG8Hfd?= =?us-ascii?Q?aAcpy4EdEIR8cfAw8l2phoAq+afGoe1f2TpFtdvaS57rjafzNZQdJpvibfBr?= =?us-ascii?Q?ZY405mA1pLUvaLv01s86B4+6jU8jpIJGJAwOHkh82rCLm2N+vt/LJ77onHeC?= =?us-ascii?Q?uFrKBvyebo8P5UW6cgRvJ0PvcFIxrY3G1Lo/nEF2WuiXcoxWBLJ7hl/4zhsJ?= =?us-ascii?Q?x9YS7Utoz7BVoHdZBvHw3b1RC97WjkKtJjDY+yU3rG7NJMV8KH5sG8+ob0fJ?= =?us-ascii?Q?+m90dwSUx7H7V0PfUfdI7sn3+eDw7gyLupjByQTtZPN8ZPVkkR5nDff0uSvb?= =?us-ascii?Q?xDP+C90uDkZgHwooWAexpWTOTjgVjvzdmNncs2+OozoN2QbOi4c+klEf32n1?= =?us-ascii?Q?FKWotxIBJu4rmRxntAivx4ZqsRrh06tc9LPs0vQYcES/9Fetjv+/zP0X5EoF?= =?us-ascii?Q?pm7X24T8DaIPjvYo+s8m6xhYDHLXWMaB0kbjOBS4Y/oufoQ6YG2ifQ9d2W+D?= =?us-ascii?Q?l6JG1RQ6VUOwusl68EuxQBuVNwrxUhAePjrMptzSbBKtFigK2Bi0QoEn7uLL?= =?us-ascii?Q?5nmA1a/Sas+cEMTvfpFn/ZC13JMDCLmGKFnYqE+11Y4EcAz7kx0enLEaBZ9/?= =?us-ascii?Q?+fScOs2MJQP5nPWAMCi3VH2NrdEJIdjK3S+hA+1YTjecSzZkGRHA3tCJzPUo?= =?us-ascii?Q?rKJOqKPty3ne4vNbB/Xm8mr2fuXxlabo+8r5ClwWDUMkhp0a2I9fnV/VhocE?= =?us-ascii?Q?D1ozjqhDkh/c9TH/HX4Pp3e1wxkcUy1eSJhvIByedFpX1ex6zjDXk56BeH3f?= =?us-ascii?Q?dPPUW3lWbtzW/mfPiVnyVqQrhFP15qHuMW9NZ3VdKVmxIgT/3xCtukgJhH+e?= =?us-ascii?Q?iTzbp93+tBRwL9WgBTAH4lEA6D/QXXTD2qKujlt0bAMyXZKdHXWFbMtodKaS?= =?us-ascii?Q?Ibvt58UhsSWgTZrx9qDsXehp0kdtFcA=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: kF3gSfgS0gHI5II/RzTi/AN+cPOZlbpNqR179RhUz/I2uF2Poo7gLm6awjfhNmCj7AToeuz1dhVq/enKbvW56LFv7w1PrZUoFDhCdZvKYXydV/KtkNt+wHOKebmwS9UKWV1LUChShGbrqvSHCpWZfi5BwbTyDtmdQsWQvYUVmcKFY39KejoHkaz2K3RVcFZoI7ZkZyY0509EJ+acDBo/vi4bCO6ILUMHF/6xSM74VF2T5hvebotMPpD6OkuAMH4uvx3KvG86/DX0NN+hLYaQKbj7MaI86tX0dpg7Go2R80VrSW3R2FJHpnCDjZS+Ff+40Kp15DJjsnvZviOSPxTDXf8XgPDkyR4O3olyYroxTEfz4Qza3DKGGz1ioPJh8MdSn03Rn4e3pWqaEQ9tRQPk7VBwmqosirdYi4rfrtyksyanSLJJcpOQuh2EjW5YUFcZXMQ4xbIcPplJ1yiwGVf59lhFoEEhL8whKcnXp1Fnv4rd2axjXfpTJp3ySyTOKT1bZuzh+P4gQEMvUy1tqOAUe7k7N+EC/ebP7KC3+a7FPtjMSID34ULhYgg0GtzkeOn/j23y6EnATJMeIAVplaA0OUkEwMNTsyilDRQFQvuqRi4= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 481919ce-42af-4c16-5fb5-08de4d34f5f6 X-MS-Exchange-CrossTenant-AuthSource: DM4PR10MB8218.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 06 Jan 2026 15:04:59.4317 (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: g0HP656Xj+y1Nvh+UAAcQfSiBan9UT4r4rArHg3SWXzWZ9FvXGdkrLClGwxTlwDBYS2kZN27CV5CmWt2yxP/a1wOicdo5SpekaRWZn925Jo= X-MS-Exchange-Transport-CrossTenantHeadersStamped: LV3PR10MB8083 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.9,FMLib:17.12.100.49 definitions=2026-01-06_01,2026-01-06_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 bulkscore=0 suspectscore=0 spamscore=0 mlxlogscore=999 phishscore=0 malwarescore=0 adultscore=0 mlxscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2512120000 definitions=main-2601060131 X-Proofpoint-GUID: ZSlV-LMzJS61PK911YtoPfbiw9pGj--K X-Authority-Analysis: v=2.4 cv=Y4L1cxeN c=1 sm=1 tr=0 ts=695d266b cx=c_pps a=XiAAW1AwiKB2Y8Wsi+sD2Q==:117 a=XiAAW1AwiKB2Y8Wsi+sD2Q==:17 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=z/mQ4Ysz8XfWz/Q5cLBRGdckG28=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=xqWC_Br6kY4A:10 a=vUbySO9Y5rIA:10 a=GoEa3M9JfhUA:10 a=VkNPw1HP01LnGYTKEx00:22 a=yPCof4ZbAAAA:8 a=jhzElPvkwTWLxKQ5pZcA:9 X-Proofpoint-ORIG-GUID: ZSlV-LMzJS61PK911YtoPfbiw9pGj--K X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMTA2MDEzMiBTYWx0ZWRfX0vBhgL/Gqkjk V6Cvzfs2qq+678YMPOJoCiwPAyCzGuvpsEMFVNUaUVRSLD8cBPwmzdo0PDnkB3M7PKJNt/Nd1zp D/6uQyjrXUju9KRk8fdI6HVL+u3FsHcsOaWsw2r0BJuMcZqmMR1mG8HumBM5IgRsG90tkHYe+JA 7c1Ihe0sG43CcQci/ODXfK0dTTN8Kg13Pt1VaQx/61mGqgEuNQnRd3SXnjvx9ZkvJDDJ0UNAAIM qQLKEYIzlma/QSM0zaGXxHZQrDYSSl0H7o9WqOOJEFnaKcJa3Eev4SDQpK8k3BDSdhseXGl+KYb JNXqrjyX3TOx/ntweqbg8J+U3R45hHnIATB4yFHDv6YDsAiikOePqutOUL1s5FGlWr/UgADihXq KGOdNgQAymjfn2puhoapn1zLG4+IlDgK4UI+kMRp6prQ+BcV8kNTkm4LOfsgj0Mh30ZoPsHbK11 8tt0WUlvXAci9/Li2Ow== Content-Type: text/plain; charset="utf-8" Specify which operation is being performed to anon_vma_clone(), which allows us to do checks specific to each operation type, as well as to separate out and make clear that the anon_vma reuse logic is absolutely specific to fork only. This opens the door to further refactorings and refinements later as we have more information to work with. Signed-off-by: Lorenzo Stoakes Reviewed-by: Liam R. Howlett Reviewed-by: Suren Baghdasaryan --- mm/internal.h | 11 ++++- mm/rmap.c | 74 ++++++++++++++++++++++---------- mm/vma.c | 6 +-- tools/testing/vma/vma_internal.h | 11 ++++- 4 files changed, 74 insertions(+), 28 deletions(-) diff --git a/mm/internal.h b/mm/internal.h index 4ba784023a9f..8baa7bd2b8f7 100644 --- a/mm/internal.h +++ b/mm/internal.h @@ -244,7 +244,16 @@ static inline void anon_vma_unlock_read(struct anon_vm= a *anon_vma) =20 struct anon_vma *folio_get_anon_vma(const struct folio *folio); =20 -int anon_vma_clone(struct vm_area_struct *dst, struct vm_area_struct *src); +/* Operations which modify VMAs. */ +enum vma_operation { + VMA_OP_SPLIT, + VMA_OP_MERGE_UNFAULTED, + VMA_OP_REMAP, + VMA_OP_FORK, +}; + +int anon_vma_clone(struct vm_area_struct *dst, struct vm_area_struct *src, + enum vma_operation operation); int anon_vma_fork(struct vm_area_struct *vma, struct vm_area_struct *pvma); int __anon_vma_prepare(struct vm_area_struct *vma); void unlink_anon_vmas(struct vm_area_struct *vma); diff --git a/mm/rmap.c b/mm/rmap.c index 8f4393546bce..336b27e00238 100644 --- a/mm/rmap.c +++ b/mm/rmap.c @@ -233,12 +233,13 @@ int __anon_vma_prepare(struct vm_area_struct *vma) } =20 static void check_anon_vma_clone(struct vm_area_struct *dst, - struct vm_area_struct *src) + struct vm_area_struct *src, + enum vma_operation operation) { /* The write lock must be held. */ mmap_assert_write_locked(src->vm_mm); - /* If not a fork (implied by dst->anon_vma) then must be on same mm. */ - VM_WARN_ON_ONCE(dst->anon_vma && dst->vm_mm !=3D src->vm_mm); + /* If not a fork then must be on same mm. */ + VM_WARN_ON_ONCE(operation !=3D VMA_OP_FORK && dst->vm_mm !=3D src->vm_mm); =20 /* If we have anything to do src->anon_vma must be provided. */ VM_WARN_ON_ONCE(!src->anon_vma && !list_empty(&src->anon_vma_chain)); @@ -250,6 +251,40 @@ static void check_anon_vma_clone(struct vm_area_struct= *dst, * must be the same across dst and src. */ VM_WARN_ON_ONCE(dst->anon_vma && dst->anon_vma !=3D src->anon_vma); + /* + * Essentially equivalent to above - if not a no-op, we should expect + * dst->anon_vma to be set for everything except a fork. + */ + VM_WARN_ON_ONCE(operation !=3D VMA_OP_FORK && src->anon_vma && + !dst->anon_vma); + /* For the anon_vma to be compatible, it can only be singular. */ + VM_WARN_ON_ONCE(operation =3D=3D VMA_OP_MERGE_UNFAULTED && + !list_is_singular(&src->anon_vma_chain)); +#ifdef CONFIG_PER_VMA_LOCK + /* Only merging an unfaulted VMA leaves the destination attached. */ + VM_WARN_ON_ONCE(operation !=3D VMA_OP_MERGE_UNFAULTED && + vma_is_attached(dst)); +#endif +} + +static void try_to_reuse_anon_vma(struct vm_area_struct *dst, + struct anon_vma *anon_vma) +{ + /* If already populated, nothing to do.*/ + if (dst->anon_vma) + return; + + /* + * We reuse an anon_vma if any linking VMAs were unmapped and it has + * only a single child at most. + */ + if (anon_vma->num_active_vmas > 0) + return; + if (anon_vma->num_children > 1) + return; + + dst->anon_vma =3D anon_vma; + anon_vma->num_active_vmas++; } =20 static void cleanup_partial_anon_vmas(struct vm_area_struct *vma); @@ -259,6 +294,7 @@ static void cleanup_partial_anon_vmas(struct vm_area_st= ruct *vma); * all of the anon_vma objects contained within @src anon_vma_chain's. * @dst: The destination VMA with an empty anon_vma_chain. * @src: The source VMA we wish to duplicate. + * @operation: The type of operation which resulted in the clone. * * This is the heart of the VMA side of the anon_vma implementation - we i= nvoke * this function whenever we need to set up a new VMA's anon_vma state. @@ -281,17 +317,17 @@ static void cleanup_partial_anon_vmas(struct vm_area_= struct *vma); * * Returns: 0 on success, -ENOMEM on failure. */ -int anon_vma_clone(struct vm_area_struct *dst, struct vm_area_struct *src) +int anon_vma_clone(struct vm_area_struct *dst, struct vm_area_struct *src, + enum vma_operation operation) { struct anon_vma_chain *avc, *pavc; + struct anon_vma *active_anon_vma =3D src->anon_vma; =20 - check_anon_vma_clone(dst, src); + check_anon_vma_clone(dst, src, operation); =20 - if (!src->anon_vma) + if (!active_anon_vma) return 0; =20 - check_anon_vma_clone(dst, src); - /* * Allocate AVCs. We don't need an anon_vma lock for this as we * are not updating the anon_vma rbtree nor are we changing @@ -317,22 +353,14 @@ int anon_vma_clone(struct vm_area_struct *dst, struct= vm_area_struct *src) struct anon_vma *anon_vma =3D avc->anon_vma; =20 anon_vma_interval_tree_insert(avc, &anon_vma->rb_root); - - /* - * Reuse existing anon_vma if it has no vma and only one - * anon_vma child. - * - * Root anon_vma is never reused: - * it has self-parent reference and at least one child. - */ - if (!dst->anon_vma && src->anon_vma && - anon_vma->num_children < 2 && - anon_vma->num_active_vmas =3D=3D 0) - dst->anon_vma =3D anon_vma; + if (operation =3D=3D VMA_OP_FORK) + try_to_reuse_anon_vma(dst, anon_vma); } - if (dst->anon_vma) + + if (operation !=3D VMA_OP_FORK) dst->anon_vma->num_active_vmas++; - anon_vma_unlock_write(src->anon_vma); + + anon_vma_unlock_write(active_anon_vma); return 0; =20 enomem_failure: @@ -362,7 +390,7 @@ int anon_vma_fork(struct vm_area_struct *vma, struct vm= _area_struct *pvma) * First, attach the new VMA to the parent VMA's anon_vmas, * so rmap can find non-COWed pages in child processes. */ - error =3D anon_vma_clone(vma, pvma); + error =3D anon_vma_clone(vma, pvma, VMA_OP_FORK); if (error) return error; =20 diff --git a/mm/vma.c b/mm/vma.c index 4294ecdc23a5..2a063d6568d9 100644 --- a/mm/vma.c +++ b/mm/vma.c @@ -528,7 +528,7 @@ __split_vma(struct vma_iterator *vmi, struct vm_area_st= ruct *vma, if (err) goto out_free_vmi; =20 - err =3D anon_vma_clone(new, vma); + err =3D anon_vma_clone(new, vma, VMA_OP_SPLIT); if (err) goto out_free_mpol; =20 @@ -626,7 +626,7 @@ static int dup_anon_vma(struct vm_area_struct *dst, =20 vma_assert_write_locked(dst); dst->anon_vma =3D src->anon_vma; - ret =3D anon_vma_clone(dst, src); + ret =3D anon_vma_clone(dst, src, VMA_OP_MERGE_UNFAULTED); if (ret) return ret; =20 @@ -1899,7 +1899,7 @@ struct vm_area_struct *copy_vma(struct vm_area_struct= **vmap, vma_set_range(new_vma, addr, addr + len, pgoff); if (vma_dup_policy(vma, new_vma)) goto out_free_vma; - if (anon_vma_clone(new_vma, vma)) + if (anon_vma_clone(new_vma, vma, VMA_OP_REMAP)) goto out_free_mempol; if (new_vma->vm_file) get_file(new_vma->vm_file); diff --git a/tools/testing/vma/vma_internal.h b/tools/testing/vma/vma_inter= nal.h index 93e5792306d9..7fa56dcc53a6 100644 --- a/tools/testing/vma/vma_internal.h +++ b/tools/testing/vma/vma_internal.h @@ -600,6 +600,14 @@ struct mmap_action { bool hide_from_rmap_until_complete :1; }; =20 +/* Operations which modify VMAs. */ +enum vma_operation { + VMA_OP_SPLIT, + VMA_OP_MERGE_UNFAULTED, + VMA_OP_REMAP, + VMA_OP_FORK, +}; + /* * Describes a VMA that is about to be mmap()'ed. Drivers may choose to * manipulate mutable fields which will cause those fields to be updated i= n the @@ -1157,7 +1165,8 @@ static inline int vma_dup_policy(struct vm_area_struc= t *src, struct vm_area_stru return 0; } =20 -static inline int anon_vma_clone(struct vm_area_struct *dst, struct vm_are= a_struct *src) +static inline int anon_vma_clone(struct vm_area_struct *dst, struct vm_are= a_struct *src, + enum vma_operation operation) { /* For testing purposes. We indicate that an anon_vma has been cloned. */ if (src->anon_vma !=3D NULL) { --=20 2.52.0