From nobody Mon Feb 9 17:24:31 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