From nobody Mon Feb 9 20:36:57 2026 Received: from mx0a-00069f02.pphosted.com (mx0a-00069f02.pphosted.com [205.220.165.32]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 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