From nobody Sun Feb 8 11:25:52 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 1475B3112BD for ; Sun, 18 Jan 2026 14:52:56 +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=1768747979; cv=fail; b=i8WXxeaNc2c9jJEfV6oZlfF+uJWejp02k3W64xI72ZtcHs1GDkY225cUlH9twBsaYi9zuRX2br+rfpYeQ4zjCvt2xN5zeFkaGGqj2M6+Nd1GXxATGGqQcGTOEyfGcSFtu0EM4sqmEpxM8GUIZ/irQrxw5wSi8f06oJ+vUg95Hhc= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768747979; c=relaxed/simple; bh=0tx+QiLczBdFU1TYrx7sfHU3SPXnfZJH1dcUqqLCVKo=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=OrC5KhJj87STKW93n+gQtLLuXr9ccp57UjayTdHIyuGLdF0vE0t7+8aoriicWsO2RyHbUxJQRIrxpkolajTMuEixYSWNfRMx4jutmVbdk28w6G4BNr46q/yWhCvU/ryquetRnHt1fK8kiH7hU6IbvBTovvGLT+KELPiJA7MZhJQ= 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=cTm3Tg+H; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=l3B3mChu; 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="cTm3Tg+H"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="l3B3mChu" Received: from pps.filterd (m0246630.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 60IEoFTo3690593; Sun, 18 Jan 2026 14:51:49 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=i8ZBwvo3FR/dBKpFyyh00VweLyM7/LYGelOu70S7kPo=; b= cTm3Tg+HozVqIfMbE1WxkWzOojoTeSLGBgMN2bAx7tyrj3+tSFTGRIoNk93krdm4 cwLv4WtdHC+aZqWRAiN3n3F5AVPWY5UN7DpCxSQTJ3unbWdY2GIc8huOhdBKJQQT 9C6ebf5heEO3A4hBXUumRZzkvGJIwUU6lULNqDiox9K9iYBDqRu2T7ERzuujs71v nxIYFBa2bXsMRaWgdUvmGxq7hXECxh6Np2XZmopZuPMrxuFuXpyK52NJsWkG7LNb Pbx6Fo8AxwRJXDbX1jCndVqo/cYYu1nFoK/0ZxdlIg1MS/hOivEwQtqvj2G3dbCt x22y/Ir2cqSnT4CBtgUUsA== Received: from iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta02.appoci.oracle.com [147.154.18.20]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 4br0u9hcdr-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Sun, 18 Jan 2026 14:51:48 +0000 (GMT) Received: from pps.filterd (iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (8.18.1.2/8.18.1.2) with ESMTP id 60IBt4ce032145; Sun, 18 Jan 2026 14:51:48 GMT Received: from dm1pr04cu001.outbound.protection.outlook.com (mail-centralusazon11010064.outbound.protection.outlook.com [52.101.61.64]) by iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 4br0vb7ctx-2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Sun, 18 Jan 2026 14:51:48 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=AWMK92q8sI/X0acrlFbjuZoe3OSDzzI8jLEg6HNitzjNO5I7hQ2BLJO/6sR8MeXKmEvtOrKAuKIJsTJNfwdFGhU00qzypF7EMH22FZVw0z77RU+Ow71j5oyydCfIfv7T2LgtPjlT9LbsGqltB5StHnIFHeHEC+kqxAAcM6X/84yeIOEiwLzauDbOql3VQW3XTE6oarWxHwz6JChYewIciLt2SVi01KSFd+eTYnmvWp0yzQrDdZGTYCuu+irfJ3002lIK2iKW5cpPbjZMd82ZLJAIPfoJYGQJ1Gn0gxtAAkTu2CZOwqZjFJ1xMJ9EZ6eSXWsYcgh3P+9ZA8XATZ+rVA== 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=i8ZBwvo3FR/dBKpFyyh00VweLyM7/LYGelOu70S7kPo=; b=KlTZQpU0alqFE8xZunjBtprPfh7ARw0cgDUVAUxHHDtvdlWwT6mrL98mDOBFNrc7vnGfcSTUJxRmiyLUSL34OgQtsYioNFifFMV28wqBbYGf4ln+lOWlrrcWAVKKxNlQE5puihyxFYy0IipPEgK+Zn3CTRcW4AvgNQwyU9kRZL/dgW9btPmENel1XflvZvFI6qppr8kSUzySLmd9EgXq7H+dTeu+QTnDfxc/2998uV7YRqlKzmEJ+AU5qZZl3VkbEtJ15oEfLhAHw5z9wVC/60/5jdlxsz/qjklILyegsDBsulUif5LZGAfn7Rlsp0orjhEMlZ+OLvyZQyBre4m0pA== 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=i8ZBwvo3FR/dBKpFyyh00VweLyM7/LYGelOu70S7kPo=; b=l3B3mChugrF/CM/M5H2RlJ+JM9YFd+MezsKDlVyA5FlxyD5M61te7UkU/D4HhjpFCq5KdLn6YGkQfAzFV2ZlmNGbCEXF3/NJ9Y0Nk8trzPBcAn8hzRhz3bneSPE/zv+a2RjL04A5s47kCVu/NX94d25jWClhircD2n4Eph6Zql4= Received: from BL4PR10MB8229.namprd10.prod.outlook.com (2603:10b6:208:4e6::14) by IA0PR10MB6723.namprd10.prod.outlook.com (2603:10b6:208:43f::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9520.11; Sun, 18 Jan 2026 14:51:46 +0000 Received: from BL4PR10MB8229.namprd10.prod.outlook.com ([fe80::552b:16d2:af:c582]) by BL4PR10MB8229.namprd10.prod.outlook.com ([fe80::552b:16d2:af:c582%6]) with mapi id 15.20.9520.005; Sun, 18 Jan 2026 14:51: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 v3 1/9] mm/rmap: improve anon_vma_clone(), unlink_anon_vmas() comments, add asserts Date: Sun, 18 Jan 2026 14:50:37 +0000 Message-ID: <8644e89369be0cc89d7ac57443dff9e822803c91.1768746221.git.lorenzo.stoakes@oracle.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: LO4P123CA0235.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:1a7::6) To BL4PR10MB8229.namprd10.prod.outlook.com (2603:10b6:208:4e6::14) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BL4PR10MB8229:EE_|IA0PR10MB6723:EE_ X-MS-Office365-Filtering-Correlation-Id: 599d50e4-48bf-456e-234a-08de56a11a0b X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|7416014|366016|1800799024; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?eT0QXWJ7AA0HgycOGI5jsNM5gnW/wuB+qP03KeD4dk7pPXMwhGEV81KNOJ8p?= =?us-ascii?Q?6pFP+nVLlXphcm6+m5AW3dlGxFovylwcY4bHyzA4y8p8TyKfzYONyfACCsAn?= =?us-ascii?Q?Wkap64isAo4/UDMur28GgXgiVcBGhhqMAR85sdunwjnrd5f686gWpd0j8eCq?= =?us-ascii?Q?GpUsx4K0DGZ6Uc/JWfitC8Btg4pqFxLvCVYafY0P85GwEPl9ZCr/sQNu1lYd?= =?us-ascii?Q?mKyjOG1TYe4g5DP4L37djSGnO1DPxNnPbrdFrur8PtGczzalhbluwv3TpKgy?= =?us-ascii?Q?K74TYi9LTFHfmiIxJsHHz/BEsy/i5xOzkOR0dlBYvsqDSNbOK73IjPbreqea?= =?us-ascii?Q?UPSn23kTPvCa+zQuWaJKWJYWlykstHllIHi7UJ5X4kK6WtX56GHTv5C8GccB?= =?us-ascii?Q?AckTMz+2jt4l3wXewKQaxY/9GfOLV8FIjRQRq6TfNsJCOvS6udvBB2cD/bJD?= =?us-ascii?Q?8wA+81YiL4Pwf2Sy0Y8VgBRpraUlGxJeSBV61S3PJTMMB4gGr6Z5s5zJC91b?= =?us-ascii?Q?I9gqNtkpw0es7kXf4Bcj3QU0jzr3wgogLngx2oj13Mkq0lHL0fXLQco9ABfV?= =?us-ascii?Q?5+okXKi3mGlGUlet0OtmV8sGpcjco84K8GeTii5RjppHOok2lmI0wFWQwWPQ?= =?us-ascii?Q?GTh5eTvuG1Gq9YdxR5JpJAwbYC+zptcNZOQSJJDxhMFyjps1dXD/j3ryOZS0?= =?us-ascii?Q?lzv8NESKsSDuKX1cYPWq8GI0F1oB4gJ3FeI9x+lnvRJ5SHT2krKeK51i3H1w?= =?us-ascii?Q?Jju6fSAkRwD5AW4zK+QvRCZ8P4ESv3Ko8NSrkZYg6MtWwsyyofTGnM6pqYai?= =?us-ascii?Q?NW5FkVtHqOPaHUz5wDulsjX02MywoQKyj14XV5nkLkHTsQlwOOenLmD64pkn?= =?us-ascii?Q?AXD2oqmq8TJ/rMRsWu1Z6invBqH0ZKb6nMuaisn0OsrWpE1kXYe5aEAEXPhq?= =?us-ascii?Q?ENPzV321uExwhdjIZVcMpJqovNOTcIwiB1LiQ7RWzdM8+HuAMH4L1gYxYT5J?= =?us-ascii?Q?XFLmyq5sqHGtTyp0yJVSSgLwHrd21JqIQEtulHSlqWx0pPa6kdKUM+199QU3?= =?us-ascii?Q?+npWck8jyyeHZ0AdfPKF65hEPWjLeChSLWohGYelVPCLciJb1YrAqcHRZmcH?= =?us-ascii?Q?u6oc+1wOwRjBA6O0RhurUBgR9edZ3e/2CXuTxCvU3W4yP3oXn9PYCcv8Yz5g?= =?us-ascii?Q?sblFLsn9vmwGSFjYF9vO9IpX+Jfg7FdYiSpX18v7d9gx16KOSEwe0adGu22v?= =?us-ascii?Q?2fSmEQo8bp4gGGIoPUgHxDSANb8yOLQt9X8qR7psGoUKH7KAD3GjUXJmfYrM?= =?us-ascii?Q?xOC1wTUdyGhnfLyjcuiigATxP/1SA6sqojFdUdE63WLVJl6fXxGQMV1kztiU?= =?us-ascii?Q?21ASe9dtFxjMaBRnHKIk92D9VGI5EZl1kSh7jcoLQmCT2VurH6uCaoEPG5Td?= =?us-ascii?Q?v4MrEQ1OnMEwTHwyaUDhjUPcdZhbbJzxHrQFCxpp9xG+mpfc2YoTCRdL8hhz?= =?us-ascii?Q?juLC7pe8VQqX2OOvCey/j6B3beKNWFgyCX7ow6FlLmaUJ40FHeMGkD/oCuUb?= =?us-ascii?Q?EjxgwFRTIRukcOlkHC8=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BL4PR10MB8229.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(7416014)(366016)(1800799024);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?gs9ZPgR3PTsJ6asihU7r2WypKTXyt+f3JtMyhZIzAd/Kplew8yJI7OrYlkPa?= =?us-ascii?Q?urD+JRb4Xv/OK/L3Om3uYMme5GWC7UXBapQ3mUYL/1uBp4wtersxl9KJD+6h?= =?us-ascii?Q?cgXp6aj1YE+v1fHzqUBsQ1w9ngA6jBPilkmLhk+D8t+D75iT973ECFK/pqeE?= =?us-ascii?Q?rKjiTtz7EfNuzfnG/UDW4yPS/Jkl0yC6wsGGRqzWHTopBVVpWlyfNofM6Zdw?= =?us-ascii?Q?lyoC1AI6dsGRmnurkze4p7Qf0rXslzrXsRWwHaYh4ZwlG+TYWad8MWPl9UQY?= =?us-ascii?Q?IbcHGTKv8lC5DRsp8cYSz23ONRmO0sPyW6TRJJReTlP8BalP96zGRt+4D8kX?= =?us-ascii?Q?Oou67lhk3aukRXLXR3YDknK0ar1CDmZL2n0hicYdcBdtoXX105SaMLWKAn9B?= =?us-ascii?Q?qWeRGcCX7UecK8sjuqM5NfhRhXKX2IiMHJ69Q/16W1Uktr6wm2EZJTxit6Ip?= =?us-ascii?Q?IBn7mY8aq1XATKK4L+sWgvPOoeDXcsR3g8dP2A4rvG+Tp4YMKjz5XXKjTb/8?= =?us-ascii?Q?hRjt0P45lckvDWyVl1Y/G6n95kUct7A0bLZj1fo82WG7x6vPChTbFhe7QPwI?= =?us-ascii?Q?Dpiqrp8z/3kmae9qVM4Q0YVcb+/7rBzs31L+Sinx8u9+PjYmUVRhMS1Oyg5t?= =?us-ascii?Q?9/vCx3hpsmGLUwFoXQWjRKw6MMq5Hn0xBvWdipkHpphAh9NGcG4fj2i5WggK?= =?us-ascii?Q?T9/Zg+TfrS32Nyvggm7lor7Qjc2laC+GpHaGAOQMbydEiw4zvRwK5yW+4smm?= =?us-ascii?Q?zqnILVyhDxQ9FzO1wQ7tkEJ/N64WK8HIpTVhjht2K2lMcbtsQt9HBsoRCW9z?= =?us-ascii?Q?HHm27dvSaoDXjN0SEiFSaIewExvUDk6bGeZkob+YZn2DyL6wuSff6ZcWSlh0?= =?us-ascii?Q?SHfGfstYqk3Mg8hWEgowwsQafjaJgCMZx+jTlcKap6bcNNq7borR1lIHEGRL?= =?us-ascii?Q?waVafTU1fOT/wTxrmraPn35XvLxkVgMdFLZDhXFzueO5iIYNCVlQYFXO1Xdf?= =?us-ascii?Q?nEzTqztF4p4eQlMt5+I29hVXz/nWJ2PvMqseuFru5GRIySXv2qd2e/2bKwzU?= =?us-ascii?Q?u9BVUJZ/8zkj+4MPi+p5Plo2RUFJUF3y5+bjxfA/qVb2u2iaxlJlYdm9b4is?= =?us-ascii?Q?pR5w/cQR6DI3uJBZWx2BacHJZqqyf7H0Zs4cGUWTapgmSZvYQJ96J85Udsah?= =?us-ascii?Q?1EfFkS5abakfMoEqQ6FTsD3DNwK2iDI5TEDPgcmfVq+kq9caW6iVfKCiJ6RT?= =?us-ascii?Q?qvMdO9heldC7jklvj2TE0ONF7+cii5nDRUiUPQfurRjfHlwz3RfXEWVJSXlj?= =?us-ascii?Q?9sRip4tMpW20+BRKZ+zTx7fkbscSiXJ3dcLcGRvYnbP+fYvbv1Co/hbpjbcW?= =?us-ascii?Q?wUqRIn0c1RPVrMm5yKQMmTu4Sk8VTuGfvdw+EI1L+HqTV68qUXGxsoD48r7x?= =?us-ascii?Q?Ub2BdKv6fRu0UIxeaEGJv5X8T2HeYUlEXtzSmhJP16pt+X0XBUBSCG0qtvJg?= =?us-ascii?Q?OEUuqg+//qTeIrsdeTmBe1dICLuRQ3t+Z0nMtKVMWV23NIfUVAFlVDle7js6?= =?us-ascii?Q?o9ZWy/ZN3IJs9PGkCrLqrvJBqhTJUIkm6fPqIA+hLUvqwLwzE3MJfX31Jm3Y?= =?us-ascii?Q?O9eDZ0+92zKinqCJrzFRO80+k0uwLqvc1Qns/0GSPCPo+hD4N93GOf2vwUNs?= =?us-ascii?Q?2O3PkY0uQUHXO1tpyT8v0xF3DPQNmif+cTPdzO/ouEfR+20E6C9sOqxcS6a4?= =?us-ascii?Q?9ev1vQtA11saXsHeU+LPwcxepc/l9Dw=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: Y9ADdZLGiGheY/Vc+PbgfmhqOlpR0xJDLLfGC5Pm20A2nRKfT9qImmV/nMy5iZn8Z1grz0/69HK+XDbeIQcgIOXq3lndmn8ZwH0lRHe1WfiBdAPwA1nwsirhbN0Eh2JZdud6t3KqAdW5ymA2Lq504hYaYs54spxGz2q/z5htxTmLxZV3QpXRsM+6e4M4Mluh1phsBG2ttZh6shJ63dAy793uePMC5aaRBpcbLkA7nk3SQHuNRYO1tSwojNsD5FvRlutJq9BYHKEdGrQmTDaMA38/UGXq/mrlQjOe8fB8xyMwKCOm8HBNCXkQKRN/VdHV+V1UeRhQeiNRlWvpyE9eQQ23mdYsICnDFoxgpXoL87cdaAXA+AAKmDNbty3qfUfdKrWvL+TtSNbXuSIxG23pU+krfyUSnl129OgujY1E0wSN8KK+zL6CHRCsQjHwjkyfWZEQtJ0zL3t79Ql4ClIHuLFxjlyqLvM2ZP1IXiRLAWQ2XkrzfelguzqoLuP9pBsxSaJW3V7cUpQy2ACOGO49QMSNS4HtiBoeqCb1QwzlN9QQxa1haykCxrxulc8c8a7Fg20Fg2CXifhjzsdu7sb801SQSghWpk1dGc2N4d2XMyU= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 599d50e4-48bf-456e-234a-08de56a11a0b X-MS-Exchange-CrossTenant-AuthSource: BL4PR10MB8229.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 Jan 2026 14:51:46.1052 (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: 2jWMw9fJpYeNVlr+7FLAGuBqZhM9X5mrNhSXum8F+bh6SCw94X9U6WeYCuXpcwJCUhDCm+fGx5nJ3phFpdbNcZLernXBSYrwDb2Y2uBUqBw= X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA0PR10MB6723 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-17_03,2026-01-15_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 malwarescore=0 bulkscore=0 adultscore=0 spamscore=0 phishscore=0 mlxscore=0 mlxlogscore=999 suspectscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2601150000 definitions=main-2601180130 X-Authority-Analysis: v=2.4 cv=OJUqHCaB c=1 sm=1 tr=0 ts=696cf384 b=1 cx=c_pps a=e1sVV491RgrpLwSTMOnk8w==:117 a=e1sVV491RgrpLwSTMOnk8w==:17 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=z/mQ4Ysz8XfWz/Q5cLBRGdckG28=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=xqWC_Br6kY4A:10 a=vUbySO9Y5rIA:10 a=GoEa3M9JfhUA:10 a=VkNPw1HP01LnGYTKEx00:22 a=yPCof4ZbAAAA:8 a=TS5ZMjQafXG62o6CVrQA:9 cc=ntf awl=host:13654 X-Proofpoint-GUID: etE5OhbUMQa83ODW-kA7R1ovmYlAZBOc X-Proofpoint-ORIG-GUID: etE5OhbUMQa83ODW-kA7R1ovmYlAZBOc X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMTE4MDEzMSBTYWx0ZWRfX/VcCe6Jp0Mu8 C7v/eSB+U2FMSnbqRqIXRL85HZpHbzAmQD/XWInY0yw/jmyGMvJX/1yFaQ4+KJq4RQJ4Ye1oWTE 96JqRqc4boGIC1l1pcHHFqWQXqg08wYyxeVFKFNsZb7oG/DCOTOn++O1ft7zZR7+JqxmOx+dJhn tXx9zyqCwFWEoDsHnh409wel3X4kn7v66CUpoCCOBoM9Kw6YEkNdtguyvqz/R+ZQNqEfP5SZUVz PlxzRQAelomxHo079b0A+v0jSCbeEEXzJgeN0JYCt2an/A9Or07S7k44Ynwj9R6XxkKNKwNwIAN +ZqYn5huHXu25mHxR9IfT7dtBpau52uD9Dtl/WKtKJJM3VREH0pga6oEj/gEgsmJC0b9pS2cFqj tS+PLFoXYC+Zou/stnoFmmBfUkhIA5eSAmwkbMYERW/RLfIbEHoJtvfYOjJmjharusC+wlTGdK6 HlvcLZw/8/YZbqcdX0m8nPRJ4/CbZHyKoyaxcFTM= 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 | 133 +++++++++++++++++++++++++++++++++++++++++++----------- 1 file changed, 107 insertions(+), 26 deletions(-) diff --git a/mm/rmap.c b/mm/rmap.c index 262bebe6f947..cdb7618c10b1 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,67 @@ 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; + struct anon_vma *root =3D NULL; + + /* + * 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 (!root) { + root =3D anon_vma->root; + anon_vma_lock_write(root); + } + + anon_vma_interval_tree_remove(avc, &anon_vma->rb_root); + list_del(&avc->same_vma); + anon_vma_chain_free(avc); + } + + if (root) + anon_vma_unlock_write(root); +} + +/** + * 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 11:25:52 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 B43B93328E1 for ; Sun, 18 Jan 2026 14:53:15 +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=1768747997; cv=fail; b=F+m+Vm+L/Lbznbh1tb33CqCUJB5ntokynxil4tCV/6dSh+3SuHx46btRMdVFKzRt8SPoX5paYS4s8ve3a7b8syCkCNxTMDOmi0pWrqZsrmhFMGqeWnNOsTGYHlzSVhHzsF9y65ibiX64S1meAkW2XRGc4gtSGJDdf2Q7Zxf6A6k= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768747997; c=relaxed/simple; bh=lXeeiOxffR4M7M09KznpHUvP8JlS13XmtH2czcD1UP0=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=Auk0oA3kMIUl5u9pevC+PRUL+szuxuCUj2aeflBF+d7EBQguYgxR4G9+5o9EGcL0Cs3kKJ9Gtq6QqHxrbrgowwqG0IjMf8cZtPPsxTcBoRNSU9OyqNlDWCSkJxiP0NDMFoWwXcYZ4XI8vOP8Na5khHA5FI6gLX2T1NcJ0IrB2iE= 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=r+wq9RVh; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=wvyCdxRS; 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="r+wq9RVh"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="wvyCdxRS" Received: from pps.filterd (m0246630.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 60IDZjFH3576243; Sun, 18 Jan 2026 14:51:51 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=JLx7U/7+Ekt60OjYWvRVEtMZL9hd+IruWUax2x43Fuo=; b= r+wq9RVh/GNBAIyTgN+00FgSoafN05nRW/8PQKBfzgGL8NHoDdRDrueLa0g4cwC6 prNilxwCvm80EwgK0jGKCyDmqv6I2uNVEIM4RWuPc+TgL+1yw8kL1hBA5Zqz7KOM IwbbnFFJGBgycvlUDwr3oWfPJkgUCMkN+SeNZhGahCtiWcIAGA40uQhaNOqAuYG1 bdalLAMeUqCJTiGrjG/Wsp5PCO212IHeiiZRkQWo5H7bwg4HzUonEeJ9mEaWVbTJ vEP28CtJiAHHJVLi4nDq7B6ZMP9CgEiQReuWWB2OEhEnYDBZdeluV+odx+V/MY2o Xz8Sw/2NgJ2fFISQ+cSuig== Received: from iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta01.appoci.oracle.com [130.35.100.223]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 4br0u9hcdt-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Sun, 18 Jan 2026 14:51:51 +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 60IBV3tf022453; Sun, 18 Jan 2026 14:51:50 GMT Received: from dm1pr04cu001.outbound.protection.outlook.com (mail-centralusazon11010030.outbound.protection.outlook.com [52.101.61.30]) by iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 4br0vb7b01-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Sun, 18 Jan 2026 14:51:50 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=qj5cZTgT/82M6ir09HS76qk+6EubwAgqtLNxPcBTs/69EryzHyvO5chOe46NnYVPDlif3IWSTvizPdiBD18Uqk4TZ1Q9waUxzagfvUyQL3RFT8YLRtdzsOC0m+WDW9znJFO0xrFbcGUyW4VIAPy+AO8NWWnm8XCk4EAvocwCmZbeZk++L35hitM3yERjjMIO3oXPJQOJi4R5I6UYiD+VWvMs6S74M2MpZRslShSjFLZTIiJ/sO4Gp/ajbVdofZsneiSUyUFMbI8picRrHefhlNc2/Sy6MFjfox5FmB6Y8gihvMrdCAv8Pimf+1m9wiHyzxSU9yV4sfSBGWzS5+gO4w== 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=JLx7U/7+Ekt60OjYWvRVEtMZL9hd+IruWUax2x43Fuo=; b=WwDQlWdjHlshkpL3+gRHgW7Atp5yZ02tnM35zUG+VtXb9/BPNGMxhZ76dsKb0OTDcYefp+vTKEHyl9Z6VJinMTcL34jZtzKHSvI/fXS1Nl3y0IMD1v2f4w+2TbaERDQ5XtcelBft8Yt16jpmI91rf0tN5CII0WrwqtPfQSstrfRTg1aK1tZjhNAztAe/d2EqAtc6N9cbFD7DxiAg99Mn7WcrhZH/xLzuIm6zdxT+Xb0v3z4FaBuggDzee2JP24X+Vn/YzBzvsQYxkCgrOlrI8/5R7vJH0fRZw2YhGFHW9Q2JAMPnCePMQF2ue7QeY8tRUF31VzBAveMZ+2qQwD2fGg== 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=JLx7U/7+Ekt60OjYWvRVEtMZL9hd+IruWUax2x43Fuo=; b=wvyCdxRS3TxA1mNW/A8sOIAgBjo2CHLqoLP0rFvUf2cglD3y8tEGbQR33sHjrI+xROFh4wCxXVFUL7AE99GU9i9dT7AbPnn2wEWX0G8PalE2nl1zZ29olKwTA7DlY8H8WlP0wtOzK1wvkSMAtZCcZ6ox3klLJOuSGcZMv5NejhQ= Received: from BL4PR10MB8229.namprd10.prod.outlook.com (2603:10b6:208:4e6::14) by IA0PR10MB6723.namprd10.prod.outlook.com (2603:10b6:208:43f::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9520.11; Sun, 18 Jan 2026 14:51:48 +0000 Received: from BL4PR10MB8229.namprd10.prod.outlook.com ([fe80::552b:16d2:af:c582]) by BL4PR10MB8229.namprd10.prod.outlook.com ([fe80::552b:16d2:af:c582%6]) with mapi id 15.20.9520.005; Sun, 18 Jan 2026 14:51:48 +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 v3 2/9] mm/rmap: eliminate partial anon_vma tear-down in anon_vma_fork() Date: Sun, 18 Jan 2026 14:50:38 +0000 Message-ID: <9923da5f8b095dd1e8d677692dcaf95859de0ef5.1768746221.git.lorenzo.stoakes@oracle.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: LO2P265CA0479.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:a2::35) To BL4PR10MB8229.namprd10.prod.outlook.com (2603:10b6:208:4e6::14) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BL4PR10MB8229:EE_|IA0PR10MB6723:EE_ X-MS-Office365-Filtering-Correlation-Id: 398f34cb-5ebb-4faf-cd19-08de56a11b2a X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|7416014|366016|1800799024; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?Uh3YNedItUdMpoGe7mXikznNegExAAELZ7Cxn8uaRFGDWDS36IO1ppMdiEg2?= =?us-ascii?Q?xzzvsSvy5j6tJZpTADoiF0n3C0jDziZb4xy4MlAFORQO93djY8Y1dRp23q7J?= =?us-ascii?Q?Qe/YF8PqZa+b4E95KPJHSuW12MF0hg3PBs3EVqtrlQljgiGfKff/RrY3X7fg?= =?us-ascii?Q?ZA+Z6MlAu5ULC4r9TXZ1coiJJ62hrmsICA2YvDIt25Dn3Y6eTr8r6vTCELPy?= =?us-ascii?Q?ggOaANu1Euh+ykqbIcI1Xpp1J2gEeuwAUcnDTcr1EyIzTBOmGLJ1TLFm3Vnk?= =?us-ascii?Q?XdtbJUx7fS5TcB+vCx06yg9TP8KXxtCvw4yoD9wGiivYgQZ1TmRE7UeXIUc4?= =?us-ascii?Q?xbl37diWWUU01AcxjJ4jBCrhxQETSPSUtiAdLlYQHvfdIe23uiDEsWZdRvtM?= =?us-ascii?Q?kwNk29KxSs49WQMwvmqlKDd5L2vcs4N2hsQEySjSFhNNnQZ0MIEKwh1Hvn0t?= =?us-ascii?Q?/ferIk9jd4odbEKM2i6rW1CwJdWR10X7ilzSuNBJUgmvraoM4MrpbW+M0d3m?= =?us-ascii?Q?Vd0+ReBzBvV5oNqKF2QQt7eu4CNHgURCIzAAgphblfsS76FQFD6KFOXdGbjR?= =?us-ascii?Q?zr7scG++K+IIK5iwD8apSUeiaS4lD+rM8BVtt+1Y0RoDQ0hhFVDsanQeLWCy?= =?us-ascii?Q?Pa0XekbkJbgMFL100kxn2a1lNXYa7VSxZ/wQ1Zy893FCJxFsqG8tidbjYkXC?= =?us-ascii?Q?AIFzitevQStw2w0secN7QsP1F3xVa1n75GqK7Q+dzSss/Ulxf5LTLEpwQodc?= =?us-ascii?Q?9oiSKJNbZ9lPXfVVQZN+J5cPEsZuBebSulM7HhEOPZfG4V3pomlJKrviffdv?= =?us-ascii?Q?8f4xWy9/Ika850XaPV6WrxU2YGzd36gkVjlZ2qwUi5XbBS8G9UIjsJTs1DIw?= =?us-ascii?Q?68tfsU0DbO7GAli/xBrLLCCKhdMei/Y1t2TQE5iRN+Gxx+ILJBCrYtzzEoa+?= =?us-ascii?Q?IhUr3WOeCeOqpAdaHRG9T7ij6ztQ5yruo71Sj/q31e38GH6k2tyFTqP7b3aH?= =?us-ascii?Q?rJgv1DPiFcsy1UkPqSLY0XLr2u/20KbBD09tvUwJkPjcVVHkfFidt7En7F2o?= =?us-ascii?Q?fJHgdSN0TXSMicXcJmm0PZAWmJDgZA+l4kwXj8YiKs+w8/7nHdoo7DrKKY7g?= =?us-ascii?Q?GMPVVzu7F21kgw+IwAxf6PVRur4PTb5MYwPQo1O7PV75FPOGb5BEvmINBnRA?= =?us-ascii?Q?1bX8bqndG3DLNBAvLIN/rCxh5mtikVciWBkLA4I7EX91bLB6aIXByS2pKfjt?= =?us-ascii?Q?RcSP+MvAqhSmh8C+a3cTfLHp5YbloTkhm75QAWRNyCEMZJs4EKIbUfqX02bb?= =?us-ascii?Q?spMfg68C9e0L/2AZMvDjeemm4GQ5uaq9tFwq1qcbYRVn2m5M5MaRxpBsbQeg?= =?us-ascii?Q?f2h04paHR1ZXnMPafJ44ymNfGiCV7N5JCEy6wc82EFfi9qLxQUnvEzdgTakl?= =?us-ascii?Q?Kn2oxo5JlY301jGQwWXvQ3PCANK78qQ8L/WjC/WPg2YqH7hgWIMv7ZKb5y9t?= =?us-ascii?Q?3rP3btVf/XpfKGop1iWEQ9l39Di6xvihPzIN/3iY3L9jcvhRC7RCIx1e5beM?= =?us-ascii?Q?GvQnGXU3LIQ2leSi8aM=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BL4PR10MB8229.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(7416014)(366016)(1800799024);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?/168IRZ40cHioI6B4S5NQn6kBKh2fh+8hbJlEoXj357fLVnbAzwMtZx8tKTU?= =?us-ascii?Q?L7u7n/olc8xDFimty5LLUNoKh+FKNFNIblsGNMbdOakqZ5XlZ1LHdfpBkxCh?= =?us-ascii?Q?SErse9dIiWFqIyy5ddOB9llim/G5nD7v8MyyXLE34enD6aFVB2/f1hyjQ2oT?= =?us-ascii?Q?2K51SMrC46tT21qfeP57qxLitmyRk0Wl2O7TLbJB/DQrXYRnAMvzMHHd4kdw?= =?us-ascii?Q?uP/xxIBSSDiASqNH31rx4lM7K5F1r845vzCCom8eYguHWUuvtP3XXsIuiioM?= =?us-ascii?Q?5sO8b0251LcCuIP8slis9Fx1Lc1WTO6PY+ckMRMC1LAJGkLG1+srIdsf6J9V?= =?us-ascii?Q?mr2Cn69uBd+kmM6wn/f6mOD8xXGl7vMDbhLzYkStosPVi/6xK5tSviuYP4jj?= =?us-ascii?Q?nRVpFq3anCIssEXVQ64cMJNgwg5okMMJlLpgvVdxnqWw1Y8klC9TkYykrHUw?= =?us-ascii?Q?z/UR1URjBrA9s7Oefz4XnYxgpUkHdY6IE1s7aObhanNWi/GvyCB+FmOXFews?= =?us-ascii?Q?DcSmQ67LMtyKXx9HhHIrhWHA9n5coBdCf6gJR7AaOfrUgZZPB++ovULHppUg?= =?us-ascii?Q?kpcQci4UUU5rairMA+mXUrWCoJNF7BcA++2w+aBhMnnW07XwhwjEbRoefHHq?= =?us-ascii?Q?LdBMk5qj+lhduCUypO4yAFQDhuwwTLs64UlB6FPDBNpX1BOVUPW4KfFKKmCQ?= =?us-ascii?Q?dFAe10m44+gm9Yd41KiTsoCXB0xwSL3B0rrFbei2pJT8uY5MNWeMxKA2ZKAl?= =?us-ascii?Q?Ypxov9XzJypr8acZ4x6dlkkVaGyH/a0kmkuD/ESz1jPp4HLNOaBvBVQV0lBh?= =?us-ascii?Q?hD8HgCFIBHfhkU92alHfzZsCbeZHh8exz43hDDMzAPaPZ4Oc9Th4FaCGvKQP?= =?us-ascii?Q?X7KdhOekRY9yYP2Zq/IktJiZRbik3Ha+4uriMhBGMHpgK6CL4qW8ILhutupJ?= =?us-ascii?Q?ntwFVIn1IgKdW4IaSAc0ruqzRfDQ+p4Vq7JdtB+a3+DvcL3VvXKqMv84QUsl?= =?us-ascii?Q?5A3c/DF3nMuueEOEQcURDjai+3tht+bqe70mkQn8GNBqUEThxCrGOXKtrfOU?= =?us-ascii?Q?YMJHHRbij+pYe5fr5C7NqF2yG7Lmt6dm0c8K00beR10R+39WDI1hT7y3JG08?= =?us-ascii?Q?Yx8uhV7vtV8bGSYQQCAyVLI6CzbwCi2YEL/RufoIeYh/o6brj5IPqxRgJ1B9?= =?us-ascii?Q?p5w9oGprukpmgk+mXwOarsCuBVZ4iQ7LImG3zqwaYmPKqwY8Esb60I+vOZUp?= =?us-ascii?Q?8ylTQuQyamiyxJ3nXd0/30NXQ4JQk2K2mlKDZytHDK5Kas6RymxMuXh6f8Wy?= =?us-ascii?Q?i3WEP9WuGgzb9xmViNDtWnlw2/satloPN4A16Yv34qU0yuDlmP/TkjGrK57J?= =?us-ascii?Q?2mTMuL1GgvNhJw31x/MMIgypqLdgEudkoG/8d1ZMo+uCK523gxOFScLW9Jmo?= =?us-ascii?Q?8wx8vOgd5sTFLn5NHR/Ughvoz5M80XnzLlarmI/Q8UrGFaJU/FtXU7Te/N8Q?= =?us-ascii?Q?vLAMVMEyND6LqnqX/bTE0KYLEmY9iooAp2QvHiTK1xlkLNUcC9uu3XHmrVm2?= =?us-ascii?Q?7qfIULgcPbU9tOHADzZe/l3RjzHtFzNVjzbrn5MfuKm+hz6Ww5heJasZpphh?= =?us-ascii?Q?unPvj2bCsCu6Q/rkbj/QZJDwGr3wN+xHmX4vunb5qpnz8NO4qxVQc9JvLSso?= =?us-ascii?Q?na0UrY4sj9VzHTw0/Lu4qkOjTmHk7pmgB/xq2CymeRygADaCCVvweRA17y7P?= =?us-ascii?Q?XXt9iZFxzabt3azQqRWWPJ37BP+z7HQ=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: XOsSkG6xdMJpWsKSaUBNbWNcGGP/14f4F7Z3rz1BUFKq3qhPjI4n+n9xS6Jf5+7HCzPn8PrjMQoODlDa2dNK4kl8XDKDS/Wvg5E3BQbAkfjTPssyNMWTPZGYwCSIP1OpK21X69kByNVKAg9vqAP3+Tb6UEBi0B8ZRLIKjjCHPPCbFrHAkDQ76yj5hRws1eeBvNlF7IqiPNXkK4BujVQZPYv4L9B37ohs0GlhnMfc+KHveyVFCmI9eVSusJsJj8kAi4oTvQ6vLbAI8SA11qt8xIzhIe9MadVW+q96qV0fC7S7Di/XJ30WuiJGcyLA6LKJaFHT/td2PFY/dm45HuICcFIx67e7c4+8TmZQcHlN6CmIrzxH86M+YpfsicbFrIjs3dK5T7XSf8HDW/UeNOkzrJ3eM+WL9uUybsarFXhGsoapOh+970Yjwu95ypqob2KvNwgBUjej2nOKTjEbmSkjpVSn2al1n8Fd1VxHRJhKnbWZFtmKpPL79qcLwNadGLH08Pe9YMS8Dt2uwlsc8avGd31zCcFpmXWi95O39XufIMzqPRTtCXelJ7mQGs5IzUhlf8WgIv6PveL5SBn+fh4VdKKPOHu6jX1sJSswOPxlKww= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 398f34cb-5ebb-4faf-cd19-08de56a11b2a X-MS-Exchange-CrossTenant-AuthSource: BL4PR10MB8229.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 Jan 2026 14:51:48.0221 (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: 7ymFm+2Px/DhxDS1PP6gCj205+RNDjk06hQ4+gtF/PL7u4ruUJIXO7wVSc71aKKoNds7oCJb8u1VIYIpfGDd6ILReMrEaF1+wmiJaYfvCmE= X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA0PR10MB6723 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-17_03,2026-01-15_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 spamscore=0 adultscore=0 bulkscore=0 phishscore=0 mlxlogscore=965 mlxscore=0 malwarescore=0 suspectscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2601150000 definitions=main-2601180130 X-Authority-Analysis: v=2.4 cv=OJUqHCaB c=1 sm=1 tr=0 ts=696cf387 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=buoZ9BBRBGxsH-PATAkA:9 cc=ntf awl=host:12109 X-Proofpoint-GUID: 1iuVt8OKWAoLjfK18QtiZeEbOQ-IP_Ic X-Proofpoint-ORIG-GUID: 1iuVt8OKWAoLjfK18QtiZeEbOQ-IP_Ic X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMTE4MDEzMSBTYWx0ZWRfX7fam8ZBq6kAf nn/mAAiXuiLyYfC8qHNy2hiYUpFw0TeIkYgLx3NoIPksP2Id1dVmJbPHsa4A+gYic3mLBX4QMHi PGXgVH0Zy0ZZN1rPbnY0QyI0Pa1tt00zOd98sNFr+xpeAcoADgwIQF7rle0++aSL/EwpT1NKMYF o8lLHMHHsOy6MdmH9LL1xcHbIcgzueeZWaPdvzhqCzveGm1VED1psoddp4Fcl7x1LkHI3wTTTTB cUnm/dy+5uee9ou3CFRkEhjnQ0B9YEJEDNr+u2KQdF6NJTdkj89G0qy+DQsClKedvjt9iEjO6FT WrlJQAgEE+CjaJLWfGCir28/qXnEwFpTuDWDCRrqp56n1oxBFH6Vh91GqNbJt7P7M9hec0kFkbq GY/zxFnYF09THZNAPpDfM4+8VR933K1rBtnY24ii9B9iam5VxenT8mE8EGoWN9HPZS+QyOQAVhP OrfS9SbBuGDbFG7NZW79Rc4RbSen2eUk302KP+wE= Content-Type: text/plain; charset="utf-8" We have spun a web of unnecessary headaches for ourselves in anon_vma_fork() with the introduction of the anon_vma reuse logic, as introduced by commit 7a3ef208e662 ("mm: prevent endless growth of anon_vma hierarchy"). When we clone anon_vma's linked to a VMA via vma->anon_vma_chain, we check each anon_vma for specific conditions, and if met we set vma->anon_vma to this anon_vma to indicate we will reuse it rather than allocating a new one. It triggers upon the first ancestor anon_vma found that possesses at most 1 child, and no active VMAs. This was implemented such that if you continually fork and free VMAs, you would achieve anon_vma reuse rather than continually allocating unnecessary new anon_vma's. This however brings an unfortunate situation should a memory allocation fail during this process. anon_vma_fork(): 1. Clones the anon_vma. 2. If no reuse (i.e. !vma->anon_vma), tries to allocate anon_vma, AVC. 3. If 2 fails, we are forced to unwind step 1 by invoking unlink_anon_vmas(vma). This means that we send a partially set up (i.e. invalid) VMA to unlink_anon_vmas(). Doing this is dangerous and confusing - it is reasonable for kernel developers to assume unlink_anon_vmas() is called on a correctly established vma, and thus confusion arises if logic is implemented there to account for invalid VMAs, and further development might introduce subtle bugs. It is especially problematic in the anon rmap implementation which is essentially a broken abstraction. The patch solves the issue by simply trying to allocate the anon_vma and AVC ahead of time - i.e. optimising for the usual case - and freeing them should reuse occur or an error arise in anon_vma_clone(). This is not egregious performance-wise, as this function is called on the fork path which already performs a great number of allocations, and thus it is already a slow-path in this respect. It is additionally not egregious in terms of memory usage - the allocations are too-small-to-fail anyway unless, for instance, a fatal signal may have arisen, and any OOM for such tiny allocations that may arise would indicate the system is under so much memory pressure that the associated process is not long for this world anyway. We also update anon_vma->num_active_vmas to 1 directly rather than incrementing the newly allocated anon_vma's active VMA count - this makes it clear that this detached anon_vma can have only 1 num_active_vma at this point. Finally we eliminate the out_error and out_error_free_anon_vma labels which makes the logic much easier to follow. We also correct a small comment typo. Signed-off-by: Lorenzo Stoakes --- mm/rmap.c | 46 ++++++++++++++++++++++++---------------------- 1 file changed, 24 insertions(+), 22 deletions(-) diff --git a/mm/rmap.c b/mm/rmap.c index cdb7618c10b1..a45b011e9846 100644 --- a/mm/rmap.c +++ b/mm/rmap.c @@ -360,7 +360,7 @@ int anon_vma_fork(struct vm_area_struct *vma, struct vm= _area_struct *pvma) { struct anon_vma_chain *avc; struct anon_vma *anon_vma; - int error; + int rc; =20 /* Don't bother if the parent process has no anon_vma here. */ if (!pvma->anon_vma) @@ -369,27 +369,35 @@ int anon_vma_fork(struct vm_area_struct *vma, struct = vm_area_struct *pvma) /* Drop inherited anon_vma, we'll reuse existing or allocate new. */ vma->anon_vma =3D NULL; =20 + anon_vma =3D anon_vma_alloc(); + if (!anon_vma) + return -ENOMEM; + avc =3D anon_vma_chain_alloc(GFP_KERNEL); + if (!avc) { + put_anon_vma(anon_vma); + return -ENOMEM; + } + /* * 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); - if (error) - return error; - - /* An existing anon_vma has been reused, all done then. */ - if (vma->anon_vma) - return 0; + rc =3D anon_vma_clone(vma, pvma); + /* An error arose or an existing anon_vma was reused, all done then. */ + if (rc || vma->anon_vma) { + put_anon_vma(anon_vma); + anon_vma_chain_free(avc); + return rc; + } =20 - /* Then add our own anon_vma. */ - anon_vma =3D anon_vma_alloc(); - if (!anon_vma) - goto out_error; - anon_vma->num_active_vmas++; - avc =3D anon_vma_chain_alloc(GFP_KERNEL); - if (!avc) - goto out_error_free_anon_vma; + /* + * OK no reuse, so add our own anon_vma. + * + * Since it is not linked anywhere we can safely manipulate anon_vma + * fields without a lock. + */ =20 + anon_vma->num_active_vmas =3D 1; /* * The root anon_vma's rwsem is the lock actually used when we * lock any of the anon_vmas in this anon_vma tree. @@ -410,12 +418,6 @@ int anon_vma_fork(struct vm_area_struct *vma, struct v= m_area_struct *pvma) anon_vma_unlock_write(anon_vma); =20 return 0; - - out_error_free_anon_vma: - put_anon_vma(anon_vma); - out_error: - unlink_anon_vmas(vma); - return -ENOMEM; } =20 /* --=20 2.52.0 From nobody Sun Feb 8 11:25:52 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 03321336EC5 for ; Sun, 18 Jan 2026 14:53:27 +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=1768748009; cv=fail; b=Lp9V1ot5unmZu2bgBuzYAhjL8C3u68UDghQZBq2wbyPphrWmCdyVGKkbZF0Ds/utwHMsIyPgakoJUYf6CM0RR+aMg2zoKrxJ0FMifb8/qg29sHOc+ZiG5+gjFPrxjIlHvwB/uQwYoHHczHQdAbuijChyaG1ebRyQTw6guBl5slE= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768748009; c=relaxed/simple; bh=FLs5H2F5vB7WYDGSjR2r5tQPGW7CrdT8BxRJvAlDHSE=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=S2L3lLBBcCmtJh9Gm4r3aZbY7gRrUe95sqsGEJ7wEkwHlMKTowlZH56TzaCB7xCW/sk2yJ9Ma7CcJ9zLFqjpsoP3VXqjhgFGHr3Ryr++s2lAHbZI9dL3EQzZJXwyh+x9Oy95N7sGcn4x88iuctIlxYSOcrvV9cPruU8/CWpnvAs= 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=Tl8jc7yT; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=LZY8gujp; 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="Tl8jc7yT"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="LZY8gujp" 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 60IEdsjv3522700; Sun, 18 Jan 2026 14:51:54 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=NJpEDmemwWOGc5ENNDA/APFMXrfvdv51ILJ5AT+hVTQ=; b= Tl8jc7yTlNuzBTqFZ3VYw0nhk4kD0AOGVuvBYiCWFd27r46EhEG0/W3iYfseWKLF uKTM28kKU1rEPlAZu0cKbn09xlqqzcAUAqyb8Fz+T7b6Pj+I3fENthX8sYlzQSG+ X4mcl1Ks8lbccHCwLyuJAHsLZ8jBL/cKvAAo3pg7QSJt/4jix2s3delee7oi4RZ4 mSANbQ7oqUYvYI4meG66BlOsXfp07anfQa9gzNtnhItg+dfomJhI83xoFC2PNcM+ Ra0yUaj/H1+dszEQXc9Qee2oQLOEDNXxYqjsAdafj0BHVJflK0WUu03M4DQqeL+U usDMakQcSKUmMPUwy8mFnA== Received: from phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta02.appoci.oracle.com [147.154.114.232]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 4br1b89brx-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Sun, 18 Jan 2026 14:51:54 +0000 (GMT) Received: from pps.filterd (phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com [127.0.0.1]) by phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com (8.18.1.2/8.18.1.2) with ESMTP id 60IAZ5Ox008406; Sun, 18 Jan 2026 14:51:53 GMT Received: from dm1pr04cu001.outbound.protection.outlook.com (mail-centralusazon11010057.outbound.protection.outlook.com [52.101.61.57]) by phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 4br0v7eut8-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Sun, 18 Jan 2026 14:51:53 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=C54RC+r7mJrA4ANp18xBLQurb/bEX7QyA6tcwamh7DMcLBc5+BbfWOu/Y9pLn61gUgTDQfjKMhft8/Z5ub/tXI4q/6QkAqOV/VESApQds0HLFaskJV+0J1XmjtbEO4vESSii/QkWqOgAG99h+RU1UDlRsWjWiTqIhvsDLCH5qQ4pQ22IeXrp7eisK3j8r17d9pcdzg6R42rtI+vrkXsnylxO8EEV0DpEbAgb/nWW+MwhJjgZbDeceZ/D2chyVn4zauA0Xo5Um7TLfwuhN3ziu+MPG83NNiPDS6IO/e+Wzv9WFu2Zq9z4GNB9qmhMyuKThycsIQGNas4Sx5nvldvyxg== 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=NJpEDmemwWOGc5ENNDA/APFMXrfvdv51ILJ5AT+hVTQ=; b=UirXPmEUliUP+TAyQVRBz/nipIewEd0wfY7Kff8+j5lwU4myltRnwjimMWYAcYDJCAhf3KDjOZ+nWIHHJzI8AJTTXii9KJenVM8zCGXeFDiHXfzTq1TL6evPMipSmAeeEkEC4Ng3jWCI2L5dJNEppYIuReRADAf02X5pwcTtBSR5D0HbYDDWM6CIbKOe/2mQr5TqCmJdbtkyJvaCAchV1cEuxdyMC8EoUswd+szYxyrHWEiV346oxpCyuuEw+gD8biISY2reCCwYC+SEYYvk5LgehVPA4T22J0RJV9RTv90E4Xy6pDiTXAqUUYhoor2XiRMGXmLLiKFrT06tuI1Grg== 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=NJpEDmemwWOGc5ENNDA/APFMXrfvdv51ILJ5AT+hVTQ=; b=LZY8gujpDm2k94XHk0zZ3Md5SuglUVi7OovBtcrLXN12UBZi4bxl8xTP8ZPmoiIvYhZ0wcOBM/54pI+/xaED3TL6YxYj6MzmTNNugHwRThBqs4XAkW73V0RDHACrIwcNJNADsXMZIZa+TRSNhzzuLBky9OqIVIoobEIryb1lU+8= Received: from BL4PR10MB8229.namprd10.prod.outlook.com (2603:10b6:208:4e6::14) by IA0PR10MB6723.namprd10.prod.outlook.com (2603:10b6:208:43f::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9520.11; Sun, 18 Jan 2026 14:51:49 +0000 Received: from BL4PR10MB8229.namprd10.prod.outlook.com ([fe80::552b:16d2:af:c582]) by BL4PR10MB8229.namprd10.prod.outlook.com ([fe80::552b:16d2:af:c582%6]) with mapi id 15.20.9520.005; Sun, 18 Jan 2026 14:51: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 v3 3/9] mm/rmap: skip unfaulted VMAs on anon_vma clone, unlink Date: Sun, 18 Jan 2026 14:50:39 +0000 Message-ID: <085a25f7528e1c8c687276e9b856e88dc8f105ca.1768746221.git.lorenzo.stoakes@oracle.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: LO4P302CA0039.GBRP302.PROD.OUTLOOK.COM (2603:10a6:600:317::12) To BL4PR10MB8229.namprd10.prod.outlook.com (2603:10b6:208:4e6::14) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BL4PR10MB8229:EE_|IA0PR10MB6723:EE_ X-MS-Office365-Filtering-Correlation-Id: 7758673b-58a9-48f5-ca2f-08de56a11c4c X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|7416014|366016|1800799024; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?SwOA1hbCSs6D7m3diiRWzs6JPpXGpwdG97H20PgpBAERnxqVcph/VghDGKvp?= =?us-ascii?Q?DOyMu4c3TwWG2vi37GoPTfmFwO+uG2KmZoygUfBH1Tmixq/rN0HADrrC29P9?= =?us-ascii?Q?ostltVC0kEgD3Cga4pWDjA5d+z6j8lYZNi3v3seaNranFtNXN+LcVS6/MNM6?= =?us-ascii?Q?iBgSCfUC9L3M/difXwPiGGHC6BykMyqQp61bdKZ7ZpvE0YNXGEukB3IH8924?= =?us-ascii?Q?AuokFi3J9WIfck5XajXqbpa8824zgPaPJp1v9jPmcGbmN8la/70LTVgFwueA?= =?us-ascii?Q?r/9rU/ZtoFkmOwcu3WAvUBWBGNMdKzsRKTNh/gh8lbS2D3IHqcxp0Yb/4vE1?= =?us-ascii?Q?jsv9pi/tEl/v2xhm0AguYLzPz0RLimjEXCHhmDOXu0AncrcCG5R2S1Is98dh?= =?us-ascii?Q?CKd/YpaOScCvOdmxrA9F/W9ma1pv01fTi8du7N3EZL2Bg0ZcoOzc0+eDn19j?= =?us-ascii?Q?ZJnWhp6t4KMo/ZqdY7tOOnEKbSbW4sLU3gtly0R9OTldaxyOxMk2KdVPGWvP?= =?us-ascii?Q?Y8y4Y0bPiISfz1yKCfg6honT/Ws8jhcEP+W/SPIyLX3vu37gAwzewPhsXA7G?= =?us-ascii?Q?uqCKZ4eB9SeiLJcwjO7JBvb5P0LXl5ycSx9JiuvqyDYl1e4ESgMxzzogLBcb?= =?us-ascii?Q?UxGg+lEWZL2PyOZh805lU8CIecjh2aQFBBfe7z7X4cfL1WuM2bYQ/wjJ8Ja6?= =?us-ascii?Q?x3dbmPh6vmxNwzCi8ShwZNraSycmiINKg1yquQMS447HlBQA5LKYmmHmWp+E?= =?us-ascii?Q?1RusCS3Zhb3EIU7tO5JGauz7MQC4iE573yYpCfr4bEE3LJ1hhxf1oNiejwLc?= =?us-ascii?Q?pknVjsbaTt73C7FcRSZ3Je3/qAl0nqRM1KYter134aS3XJgBDNiBQkQ+LP+l?= =?us-ascii?Q?Ba0VoLiPg8Fm9tV2k7xeNDkHxw6mbLBmX5Wv1DIYdEMWzN1rPkDWf6fxrR5R?= =?us-ascii?Q?x5kjiwAeXJCbJkmC4KGK4xklVknlMAORSYFbEDJZWstXN2Isq+OUoYHmKyzb?= =?us-ascii?Q?VKmmuMTwy/+pjeoFAPBnX+1P7QPYUHGNqLp5z+MaRT5G0q0brLGK8TVxyDoF?= =?us-ascii?Q?Gd0wYuISXEEbmI4Qg4p+ReMVy1BVBOdRKI+tYLYc2EZRWPfkVdpmVObPuuMu?= =?us-ascii?Q?Z8PzwDup8PEvo3+HsRWFglwbDap1q6xtyxPSWCaj8HORd/xuMylDzEB3b3oF?= =?us-ascii?Q?zVUuloWcHOhm2V0yPnh8ii4FKgAN8pe7qyiwY2eFnr+UTG+lQ+SsIPrM2QY1?= =?us-ascii?Q?Vas8HKcwrlChpd78UzPOZiccIvzRKDs1l4CNLYw8F/H4xslajumVk63TEy+O?= =?us-ascii?Q?vYBp1EIdk9wsFa4Ycr6r+ucYUOKx78xw/LLeO8qHxme+c0qz0SDU6nDsytjt?= =?us-ascii?Q?1LA4uy/pgskrsA3ILMV+XMG0GzqvlT/YYnGO4RBQeHJXRoI1pDrJkZr4+itE?= =?us-ascii?Q?KQICVSoQqoL4QVux0xBTi/6K7XHXNMW4ztZgqrm3v9s/ZvuQnbsG3OduNawJ?= =?us-ascii?Q?Fef7Z5sQhMg+A5qNp6Wz1aBlveA9j1rH9hVzbTPKsE+EcfpNmj3wQcJjDztl?= =?us-ascii?Q?rwHKATlIGnAIrQvA2Cw=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BL4PR10MB8229.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(7416014)(366016)(1800799024);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?l1eTJbDeyPCdv3ClfeXKWaLBClhbaZJ5avZAw3AAioOJknp/KfOm4MJbdbxS?= =?us-ascii?Q?aH6VAGZJ9O1H77llKAItaO1vuHJTq1D15x8p8+wepc3o5HVCUA/IFKUg2KKo?= =?us-ascii?Q?8bahHnDA5B8EBVK7DMotr2Tc3KGKHBrTTLXEJCwko3X0l8wqYFg9X+MZL2qp?= =?us-ascii?Q?C99WvNQAYXcTvMVbV1E/jne4elglbi+jdHq6CdLyge1K9v1g5lE6iT2Rssce?= =?us-ascii?Q?WJJa+USSpL9pvVpz+goxf8s+X7/nvowhc6ZYjRH5E1B+Dbo4+OTgR+x5nR4F?= =?us-ascii?Q?nYJHRuCzOezesoPCEZKQLyaKY4ZycVac5dZsBc7dB1uuEYNFKeDeQBi6bsXY?= =?us-ascii?Q?Fx1skVglHC8skvNbAE2Caiuch7nWgERC8zMYO0FFutQ9CK9Orc3MEwAOd9DJ?= =?us-ascii?Q?FY5VfaqLgU7j4v1nsCju1USjy/kmk7lSSNJqt/O41/t2EMP6yaIiMOd+PfLw?= =?us-ascii?Q?kJbHke/8Q+rsQw5P1xU5jiuY6S0rnCQIbjm6lAiTg7hGi5cv951npB/9Vr1d?= =?us-ascii?Q?knenzZLo8QH2CqeXLqN+5822s+WfVxxXoqBNu1/CoJewlQaTMnTe3mnVR+Rs?= =?us-ascii?Q?FfKsGusFsWZOGA+bQJbhLnzwqBo5bfqI8QwO4yHakJ60OzdqcfwTiYDALTgy?= =?us-ascii?Q?baJlsMVFxbFz0QVSqW+JVmLpRvI34lRB5lDU1DhGwdR2pGAGH+BtVDH0nWt2?= =?us-ascii?Q?sQnhW3Pni8VfrqmCw5LHvTVy0DcRXDNYkF3F8q9eecOyuF6oD2Y31F2LLSkl?= =?us-ascii?Q?Eud2CsxEAiOGhb2D4uC4bFCt5CabXv7E8To//GqIxYJMlyjVlcAWtEOZCZs7?= =?us-ascii?Q?HSz3KXlFcvpTK9GCLcAx78Y0Ro7bfUy7QS2f6+lVsFkgG8Gcdcom0b/55l+A?= =?us-ascii?Q?dDSMEHG2eFRv/s90zAhejcxUKiViEKAjOUDBJ2JL3RG1wPiMawTqJj6CsXJK?= =?us-ascii?Q?HjLWe3JBxRkdUQEimM3MMSCDMyesBrAFnGeS3EIQZWPZdEzqX8TsJQZPjQYQ?= =?us-ascii?Q?1SEsq+wSoV/RPlZC7P61t/8qTdSppgsooNpP3NvnUHy7DI4MjkKf185kZV7q?= =?us-ascii?Q?Ggn7wZuhwSoYgr8zWsPoyEyFMXbbnXJSHlfFt280hI/reno4fI2f1v4nGm8V?= =?us-ascii?Q?8hBgqIEABZxSg0hyRH2LesE/6ORRl21BwSnaTezffw6+SQUgoJffDPftgmZp?= =?us-ascii?Q?vDEjrQ6AC85BUWmk/9re/FPUZCp/wwdk/TrR4Djhfgc4Xmori+ncXt2/VDUu?= =?us-ascii?Q?jVc5rvNg6GiXwIB134mCzrpUVuAdbAQlcW7wzKvolyshgs9owb+Gie4dTZIk?= =?us-ascii?Q?cxWJZAHc4AwqwqfjgVO9AzBYJQvlAItGgPRrJnF3nuaASsd68iRmKFuJpcMU?= =?us-ascii?Q?mQkPB3KOggwP1yF8kYGeFYQ56xg4b4YMlJyiYTMK+UgPhXNWijGe8Rv7B79i?= =?us-ascii?Q?qivi0wx/oOr9zhANqqSp5wxpQQ007wHbbBf8ma2wzwuU2cIHg0u126eRP5/6?= =?us-ascii?Q?tfNQENOgIBs3UYs0A6h7xY4a1WzaxJJESLaNBJ6nR9Iu5v2aLLL7/hNUqbZY?= =?us-ascii?Q?nxjlx9bRmYsqdVQO0AJB6OviMuuyOwwR/fbhH3sSYTCthOgR5nLheoimOMdw?= =?us-ascii?Q?3c0Y8nsU6gKFa83xL0oEfOoPo+A9ywz7vqoqYk8mVqx2Jvvp4Ajlkdcx1rYb?= =?us-ascii?Q?1e+/82pWXdC3yee+svDjle0KEbo7lR4qKgndb6fw6bpubHLCCATgy5kmg7Np?= =?us-ascii?Q?TJq2x8+8/1nOrj8g006DzjBWKyfeR08=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: uMqvLLADAjz99kObRw3oGpf1nbmtoIZZ2nxdG+rha+ShYsDiQ/aYLHK/ygaNcJap5zna2btSdkmRiVIejUudDjqdRKlyNfv85UE4kNQ4AGODmyadGQiUXmEDED85+cDNLWbzQlMhQZ3rKzmjeFfT87PW+leFOSbKTDqrqOwLSZCoxIezXW1OO8iAWsa+y4aFx3bLlB9GVAQmw4NiGp8QV6yCljgXQwfFikl3999dpz48ASQAN1wkod/Dij5dbjRwofg3UAoJ/myzcjm33PYORG+Mml7Pc/3zHXxCtjpMdsmKhm0XVG7FL0OrBSCnWvIBr2e4Pt+xodWYBepL4WZ5Q4hAhh1uKLJsLibQAWypSl8tv2+7qXrY9oDasHNGyM+rrlJa9M6IzxelRL+/xlWnvGg8lyNmmf0Kb7J1wOhiK+aDeeREHZSFD2DPm2MGxx3UBt6hVBo/fxBXq+PX2IuRm+IMxgtSLRNE+SB4G9iC6LsFISRAsiP6zeQnxWwUyFFHlT6gDW9vBtEII1uiQW1fHoIDKqKx3t1shYO8XalPV0Uffmgc4oVXitHyGOQoryC7hL47kCN3PyHwbL5nHpxZYnmfNhzs6ZKhVzf6+NEHEyQ= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 7758673b-58a9-48f5-ca2f-08de56a11c4c X-MS-Exchange-CrossTenant-AuthSource: BL4PR10MB8229.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 Jan 2026 14:51:49.8399 (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: cjmq69LgWNduEXCz9VackBUu5CvNvzG0+mJuq062QN8qE/lEo8XjCC0cHyEIKJxbBqAep0kNsA8/SX8x4zGwNfMFJTS9MQ06yM6IOBVwASk= X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA0PR10MB6723 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-17_03,2026-01-15_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 mlxlogscore=910 mlxscore=0 spamscore=0 malwarescore=0 bulkscore=0 adultscore=0 phishscore=0 suspectscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2601150000 definitions=main-2601180130 X-Authority-Analysis: v=2.4 cv=WbcBqkhX c=1 sm=1 tr=0 ts=696cf38a cx=c_pps a=OOZaFjgC48PWsiFpTAqLcw==:117 a=OOZaFjgC48PWsiFpTAqLcw==:17 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=z/mQ4Ysz8XfWz/Q5cLBRGdckG28=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=xqWC_Br6kY4A:10 a=vUbySO9Y5rIA:10 a=GoEa3M9JfhUA:10 a=VkNPw1HP01LnGYTKEx00:22 a=yPCof4ZbAAAA:8 a=1XWaLZrsAAAA:8 a=h3eYx8GIHpVDmy_ILAMA:9 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMTE4MDEzMSBTYWx0ZWRfX9XZfqtUUa0/G Ud4vSOjoLsNHc/fCMem1Jm4UOFEXdlQksgKZfwxDgsGhCJVibbR6/ZgNMkHUQC719F214oydO9B q0b+B0kLAhfB8wZl2bYwN7arK93kxw49CBd518QXGRngdwX1zuzRdOxagirM6C1HUYjrXYmkO4A IGLqI+PkU6i6d6tlBAnYMbLxwF8c/9lZ4whxFAjb846Ks6XqgLlYoFbegMchrtmW0AQBJ18syMv O/mohan1XNldSwZLSIQ6tqeU2WAhaz2jdY2IZVWMinuYF67n7cHa5VjddaWYv9OULkWIlORs4uC hBUoI8X3yrkt7uoGKdc7Y6RDBU+1eNVYt+OICA59Wxe+/YyUhx7TSixLcEikC0uOiFj+G0UHj04 7vzjPGsavc1whJR6UnYVHCyqF0GCMfX3hQgi3lqiv8XZ9C/WkcxW3n7vfDCf1lmSEiQxR68DznR 3GyK1QGzR1MnXuruqEw== X-Proofpoint-ORIG-GUID: epcL1gVgMXEPOuoB2pV32wvLOgJCnQGW X-Proofpoint-GUID: epcL1gVgMXEPOuoB2pV32wvLOgJCnQGW 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 a45b011e9846..8e846ccf7835 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 @@ -479,7 +482,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 @@ -503,15 +509,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 11:25:52 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 998BE33B979 for ; Sun, 18 Jan 2026 14:52:29 +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=1768747951; cv=fail; b=MN6X+a9GwPftxyWIgdFOxf+FnaVdkYmKgAQDMIqebzVvm+NOKIjWjjLO5ARG61zCbD+dF1DZtE4eJt9mSiRcGKOpOdcXEVM+V5KLuOZE0hMk27/hdhhdqe8AxzfBXIdgvSuLKO5Fo12Vs5iYbfHUA9dudFHPSTf/AWzCNYXGm4s= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768747951; c=relaxed/simple; bh=zhxrBDhL3dwrhUuvfAWmZQ4IO49ziImkyGERGbLKA6w=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=Ug5VUaGB793VmyhISckudm/nTszRMMvBTgKyCnrqQRWnBS2jmgTMGM6kbohKACa0dNxwP3nXMO4kDlE5xnaOHfec97jFEp9nhSR9ro/pZOkT6XIcwj9RmEfWtUQHtQg7PB0/ftanBo4LAEGOoPujRkSzuGDNCzSoFrWJOvxhrFI= 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=k9CHvRWO; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=I4rrCOcZ; 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="k9CHvRWO"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="I4rrCOcZ" 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 60IDp0ix3217068; Sun, 18 Jan 2026 14:51:55 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=UG0h4SadpShBgRwtlfEMN2PUtIRkSKVNTuzdST26eyo=; b= k9CHvRWORW45NGIcewbaqlFC/D2uumCfEIUubd5SzKflVxKiYtYDydfsr2E4O6Pl jiPc0Ft7Bqa9hno12bs5Igz8ln74Csd4Mazgj17t2Pzy76U9wVpe7Cl/lx32TFQ6 NRENDPg/ZkEDH2+ZjyIE08UevguUdSgGpLSUv7vU15fsC8aU5PGbaJOz0nR2dp06 93Uj9HFVEDVpHLAqEC6Wyg5ZUGU+x3g2FW+ns91wM3RtTs+nfkfdtVqMOB5cTQ53 cqjjByZcKzY8T0ypt1wz/aM1x5vMs1sw8nmhiPUo8mAbUeocb67wJjhehDm8BaQF nc1Dbm+HNtfXe96ekggLmg== Received: from phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta02.appoci.oracle.com [147.154.114.232]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 4br2yps8ra-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Sun, 18 Jan 2026 14:51:54 +0000 (GMT) Received: from pps.filterd (phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com [127.0.0.1]) by phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com (8.18.1.2/8.18.1.2) with ESMTP id 60IAZ5P0008406; Sun, 18 Jan 2026 14:51:54 GMT Received: from dm1pr04cu001.outbound.protection.outlook.com (mail-centralusazon11010057.outbound.protection.outlook.com [52.101.61.57]) by phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 4br0v7eut8-2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Sun, 18 Jan 2026 14:51:54 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=pi3lnvizQcXVcqT+NDPt39vWzzoZlueSrnDCkQAlIhoxbF2Tn5ReYDIUEpGonMWWy3wM7QEOtRjfqmY5KjQeXciXuu3imdp8wrAWYvK215/BDSeKxBztfUPtNdrGjgfDguJ+5ffrOCAYyqT8VvBsMBIFSIh+Ojvo6tTju5ousFZj8VpyoWDEtzJtuxOXRkL5GakMeck43AiyjPTPu5uUK0OgM9GlvZ5ubD66rnhr8HJg29lSbJyUaT3PFDWe7+tatAjZDjnHn+vmGPshj/8GW0cxcmfRRZCXXIWjb4lGP9DurliHOaUYAvvrzmH5hJuutSevbHby+HWdFdvgH+FQ5g== 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=UG0h4SadpShBgRwtlfEMN2PUtIRkSKVNTuzdST26eyo=; b=nBnN6Xn9J3Dlq9wBtpkq+FT08psS2LAR5zu1bi/nydFkf/JvffHiR65TA0fMmDzQhvEwalbBxRRuaN0pEvQK2Gtb38GLQcTXFUgK2uvQ1Jp37quOvtzZ03XehNh1fp1mS3wIE7hNELqvEAUv06fhMHRzJcva5bupSPLx4mC+ija0Umx12bkzcldseZTRQStVThcjlMYUge4zzmRkrv/8Qjfd2y/PkgegXEmAFj3a0H4qzO2lVZuokCYXKpPRDIFFXeKrK60iEEayf5gZr6cBPCPdv45h2P3z+HozDYcPkpv/yRmyVxCx29QKO1Vmf04OmvlMoV7T3dngJS8JcVUeMw== 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=UG0h4SadpShBgRwtlfEMN2PUtIRkSKVNTuzdST26eyo=; b=I4rrCOcZcBYDXaXkLbC4hwwnMGkl9yIRXABrWS6aPljHLhm6K6c8wFXRjo2DeyDT/lPgUXJnI9zmlnEPMQzPWL9+4YcxKPzJuC1JEoE5KGMui995fhlL2qTBQI4NDeP65UuK6KCyv44T9I8MKVxuI1PFZxBRbv4I9Zz4ILgyk+w= Received: from BL4PR10MB8229.namprd10.prod.outlook.com (2603:10b6:208:4e6::14) by IA0PR10MB6723.namprd10.prod.outlook.com (2603:10b6:208:43f::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9520.11; Sun, 18 Jan 2026 14:51:51 +0000 Received: from BL4PR10MB8229.namprd10.prod.outlook.com ([fe80::552b:16d2:af:c582]) by BL4PR10MB8229.namprd10.prod.outlook.com ([fe80::552b:16d2:af:c582%6]) with mapi id 15.20.9520.005; Sun, 18 Jan 2026 14:51:51 +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 v3 4/9] mm/rmap: remove unnecessary root lock dance in anon_vma clone, unmap Date: Sun, 18 Jan 2026 14:50:40 +0000 Message-ID: <838030d2f0772b99fa99ff4b4fd571353f14a1a9.1768746221.git.lorenzo.stoakes@oracle.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: LO4P123CA0294.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:196::11) To BL4PR10MB8229.namprd10.prod.outlook.com (2603:10b6:208:4e6::14) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BL4PR10MB8229:EE_|IA0PR10MB6723:EE_ X-MS-Office365-Filtering-Correlation-Id: f7aa9043-5c8e-4012-2745-08de56a11d5d X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|7416014|366016|1800799024; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?SS+zD/l7T+3gtOuws6pp41oX1js5Q5atmLh+6ZuSsmqMcSfJEySyxOGJMxJq?= =?us-ascii?Q?sumPCTk6EJyNuR1r2frOdLQz0Q6uzwdLEl7NWRJSV1zrsXVBw47yC5ia0RDC?= =?us-ascii?Q?prxdH2qpbwHYC728q7L+yj05m1q2iz2HO1OFHC9QPlb51xe+hXHZtZuSVawb?= =?us-ascii?Q?jQkXYvabSF3mFdi/hPGy6s+UAmxkyzUN/zkrVP3wTFkfYxGxnTBmMf9uBaI0?= =?us-ascii?Q?91OmVcebMhaXKYgxISLXdvAlStfpIFLbSxe9QPE1AU+lnVK3rndGQfV98x7t?= =?us-ascii?Q?WQoXdsKhaS8Xsb0Lqq8lw9yql5yhdmCdRdLDrAXSlONP2d5XCP+JNSHNTvr/?= =?us-ascii?Q?FCHUbexv4+k8WdWnA37fi9xVeKn4fjQKl71spKHW+riHBe9lgFfrfYkWrSWn?= =?us-ascii?Q?NWafwAhM1+Cxhhg5ia5o1EDtNRS0O7dkLJOX6y7Rr7/v8d3khnItrg8YPuN3?= =?us-ascii?Q?DRPU1TaXvQPSBIVrxaJ+qm4sBB9QHrw29bA2RY8Uyk6IJ4RvUHGnzeexzBdP?= =?us-ascii?Q?vi39qgrVMrJXFpjGXVOSCf3mE1TJBimS7sQnMaTyc9PBR7RRIoKB38jD9uqY?= =?us-ascii?Q?oZVUpjtpa3vXZ0+rzQIuATIhMHe2mVmHTHK8fp77YYNHmU+9hNllU4iod0Sg?= =?us-ascii?Q?uaf7eaIl5VwZRIBdCJEynYPQvEy9i27LYdRnmODmq7HMH7IoRcB2LST3bq/U?= =?us-ascii?Q?kwpMsBtvPI9BzXDG5lPbN5d6gTIc1OiasfkjwHnaIWygkG+2grVAs+aZ1p0W?= =?us-ascii?Q?fwgHOEcdOKOZCL/RVLFtRQyxtRSRH3QCxG7PD2IfJ2txOYFNtR5AhyDIPVDk?= =?us-ascii?Q?PIV9Xf5GI1UL0SsRt5FIXPIVov/ytfBUiD41FNzxn59tBGQI89CE6gG7h0JJ?= =?us-ascii?Q?KOY3MmkxCk4izy1pzpFLG7nL4uAb2+Xq7zZJnUKM4IgCO9oGdt/STaM9hpAE?= =?us-ascii?Q?kwdxesADAZ6MReNgXfHFT7Vhh0qxVV8G9L+C6R8Anm6BR5lZT+tF4U4SITmD?= =?us-ascii?Q?XPCWUMxedUxo4f6SWzGInpGK0b7mhpzHY0mKEtK0r51DtaHyHGGcBgTZxVhT?= =?us-ascii?Q?J77sF0e2rM9cJu15QVUxSFrzegn8kQ3Y/ChFDCZto4ImiWnEX5BrSD9xRAz6?= =?us-ascii?Q?k5s0sExjnGnx5AOOBkhjDgwfs/x+TpIeb8OUSrbLf/WprrRNcv7McQGYKKYq?= =?us-ascii?Q?g46uAxFor3VX45urpomlSxS/RZdCClakhRY2MlZb0OF2a7erL+NRQRvtOeHM?= =?us-ascii?Q?RTZi10motJZ/+xaYqDnLVRZdX7quNKbjtyf3mGih3uOZlZvbR8GL9G27+jVi?= =?us-ascii?Q?IvOHtRpDNvNgp9gZmqA7rULpX65vrYoBXjqSNc77exKyfF7h76G9OcD25N7v?= =?us-ascii?Q?p10PfKZq/h+02AODyP/aZO9I6HMC6OZOj5XCSaawAYdORDeLO6ZhCJ9/aCob?= =?us-ascii?Q?vBLJW5J3DlbhGdMm6YLYORwu0Z3WZ2raVwapbp/eliMqOoeFs2OSR5WuC+Mj?= =?us-ascii?Q?0L++PPRA7jogFKWkk3n5bTNtwRE8NMDym3se9Co/CSnfNBKWkDD/XBmespyE?= =?us-ascii?Q?tt5otDg01XgHD2qDeNc=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BL4PR10MB8229.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(7416014)(366016)(1800799024);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?/JYkSF5PhBazHwFir728nNaKqczLUG54GW5XN9cNlOtgFkvBhGouf3tcWsxG?= =?us-ascii?Q?M5OO5zrJSG0guEYyFGCeihjHZ1QUupsaFFNuk6KQRPWL0XTJ+yvkYPsWJIhY?= =?us-ascii?Q?sF1a/gDmvnVj96Ld8wFO5fIARmjKKE7N1RurL3yVbFF3aGCquSz2ADEXPlMX?= =?us-ascii?Q?j5JOkaE2Gt0QIJn0pcVk6aNqz6wi9MoX86bmmlyK/VXumpDNMO+CLnSqj9MX?= =?us-ascii?Q?xAHZp7V6datFuCfjapqonm1Pb9NazhIXAGOfJC27idI2RG6TRY7u/3WaElu6?= =?us-ascii?Q?yT/wtmswBAB7bvRkUKbA0yLaZYPOREqHhFahHng2bdR8+EyF159P8Ogb4GjJ?= =?us-ascii?Q?GvFKdBLTAEyBuEMvTxEtnZdteqfxtVCLQvglQ9nkbVeB0ouORhg7KaEHY4IM?= =?us-ascii?Q?wbW60Zd9P0bwCuiwfS4N8TJQnWUJY1WYSrIef/eXB97HYMw9FV1Iea+Jpcnr?= =?us-ascii?Q?Oaaajdgfv4kSlGj6R5QQfOy5iS7blAPgXWgv12KEEaYqKVqGP6FjGK+vQ/5S?= =?us-ascii?Q?9t1y1ebHhiL1He2MLN0WBNKBc5L+IEtp0McWmrCdBXzQRBNIl0I6ks4fMwjL?= =?us-ascii?Q?Hf/qLDLFxHdFn8ac7OFbwHoFdUcZ35DREcwLSLG5Jc5RHAE1xXN6Fe2r1AWo?= =?us-ascii?Q?Seg73L22ukGirBq60B2R9+AI+SZheRI8/K2Eo8FSr8wObs+bmLJSvoFEVhWV?= =?us-ascii?Q?f2ap/iok4ayqN23p03/sGvU2au9Ba7//atQlH7aFqOIZZeKXguXbakcm8ap4?= =?us-ascii?Q?/AWpPkPAiB2Q3yoWReYYYyB9hqFd4kejCwftfkPDteqehObdkKiSqtXnaqpF?= =?us-ascii?Q?zXg1FaGMtTJpMYfzJp+porhyfnlJU33FQhN/P9MUKQgcQ2ASwMhAV43onQL1?= =?us-ascii?Q?6nRBZiVc1bj5yMU3G4t3H+I7oEsBP5cKVcu/19RVY47z8BfoapRn5RHOeJtk?= =?us-ascii?Q?U1b8jCI6+yhQ9NOVDRYLVrelS/SBNcIVCHhCCYZc7sf60fT7TY16oUfp5qP4?= =?us-ascii?Q?24AVAIYWlDsqPOGzEPv7bczRdevNQQBCo54k0wEqOzkRYGzMkLIo1ICCPwwZ?= =?us-ascii?Q?Z0j1IB1ZOOqLLcUd9K+6FkMqqFGdXpjmHQAObkzkdwbMiipQPF/wmkOt6AkO?= =?us-ascii?Q?DHbTwjp94fOGKEXLJkfpUj2Xg6jxBkF2eW7QfVKw7BCijdDN8Q2HtSAvxe24?= =?us-ascii?Q?AMBxgaUOTulvPM70OLYiUUoVGSl6fO2JPBW6B2aULYwoXV+avHwoBGrfSjOd?= =?us-ascii?Q?Vlr2i561XZHmBiHy5bMk3YThcZzLjlS/o0Btj+DmECovdN7d1mVj+ZEEjJ5O?= =?us-ascii?Q?Z+X4yR5mQhYXQTcNtx6apSHtQhNLcCBljsPV9kmZDBIIXAyj+j5PQ1ZO5Gk7?= =?us-ascii?Q?bDT5KFHPlZyiex8/IkzO5LtRW6DVQPtQYeJupR+7qWU4ip3QfJiiW51WkLeW?= =?us-ascii?Q?3Wux6Uf9DXBIZAfNGgaZENCu2SvdtIURvoPf2wQI4msLVnhbZ8KjNWOU0Zom?= =?us-ascii?Q?MbJvdy22hZBjNczDm7Krj2P8kxq7TlpIjEVLP5/nxe4n5rNY6KfjEZNbX/Zr?= =?us-ascii?Q?euo/oU7HeCv0HhfBrNZQDfflfC/7lZw8iYcejSF8REaZsf8A3YFkEwIrV/Nt?= =?us-ascii?Q?jcrtiEk5LYN3jJXEUTkCzqxdwjESOttlZCsSq8Mopsor994EYQyz/TGUesMN?= =?us-ascii?Q?+9BRTHKjoQRvSpjiaWBkGPimDctHugn2kIHgQmgxioLbJQEEKa7ZST7a/SuL?= =?us-ascii?Q?P3d3B62BzQ+QpxYgevIDy3fLsTNCVZs=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: 3WrU/+VIwPZuE+7AqC1KqomxduUVCpFczv5axy13ZVlcDjqnz8GtLukGUIoYqVEmPFG6IPHjZ9qzUkR9MV5hsAg2hwBXSf6A1cVQD4OGUDV9fHcyq+ZEv/jIKAgr9FLMPOmuzd6G5p6mo/zCowupUEyv/s2mAq9cALezYcOgv1mvpqrh3aVvc7lAwQ6a37O9hRIe/magT9+bnwsTgiKI+L2+r6NgWHXp2qxUzAM44BdJLWITaa7quugnNNdUi5eRxaY3iDwBqsTOrzVhC2PZPALsKcueUhVLAfag3dHmEN9lrxJ5ANNg4D5fIVHriQ7kD1w7tseO8axSyfAUlkoxRn+11ACmxh9rwUzpLoaR1AOhsg5zevpo2CC5StrlVRq813ridf774Xv/5RBvF8rSCPZ5x9Q+lje32g5MhDAW0YugBdme4ehQXnygJXmKyDon0SiR/Sd5l8DkLUZ4uaHFw78UvzY/9iWJfcOcYFv9Q9gHzmdiu3ur9QdMYXmDsZVCeXKjDQJ/rmp4bQUcuMepK4IiWKWA0ylrVPIbila66p6dRvvMkmJ6/Ku0uJqennOpFd9SoAqQq8Px/o3Xnh1l0MNrhRpcKXXQ3wQJEeX1rpE= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: f7aa9043-5c8e-4012-2745-08de56a11d5d X-MS-Exchange-CrossTenant-AuthSource: BL4PR10MB8229.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 Jan 2026 14:51:51.6361 (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: 92WKMQLG+YSIs0vWNj5goHPQPtmnNaoy4Y9gEWLiLA3Z+LQw2nU6/tiFGbsThQXmE4dmcxVJ8wWuxaHB1gUTLKa2YUN4+HgC884r78cUzMs= X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA0PR10MB6723 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-17_03,2026-01-15_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 mlxlogscore=999 mlxscore=0 spamscore=0 malwarescore=0 bulkscore=0 adultscore=0 phishscore=0 suspectscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2601150000 definitions=main-2601180130 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMTE4MDEzMSBTYWx0ZWRfXyQKb5rpR+vtE wsUgLytONMN+RijDOfS/d29gQ+G4DHMFHZeq+taUEXAfIvwqL22dzfsTLRUbs9/r9/y5X5vrdiM AZLYsdFbBIkCiNRYF0sZsnhm4kbQ3I2KGXY6neACADEqsh0i5O16N9BqHoTXqm5UPMxOwWLzJf3 g7CBFCZnqWa9wgHMg4fDjGtffcmD5WQCvUdQNoGEk6ajkpYm+XO5MmE5S1UazKdAPHFwrOe/3oq rQfZa4Q+HI3A/X28yKDlxAyHxEQzRC4zIQnFFh/yImaxLDhFKsU/y/lRBsCtZi4QEcAHf2qZq5d fZ5g1umqfWTlu1yJuLKmGaUG03syy5a1XLTWtplc2EdcIGE9L3IZHezhh3tMySwyeD7sdLmPker nNwZ7eKYOFDfGTlCbPqgBJNCVrKYHqKgQbGisgn78wSNCKV36nZ+/FrWvpWOoX20Ny0AwfwFgDT FDIRWr+76EJdtwAu7Zw== X-Authority-Analysis: v=2.4 cv=de6NHHXe c=1 sm=1 tr=0 ts=696cf38b cx=c_pps a=OOZaFjgC48PWsiFpTAqLcw==:117 a=OOZaFjgC48PWsiFpTAqLcw==:17 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=z/mQ4Ysz8XfWz/Q5cLBRGdckG28=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=xqWC_Br6kY4A:10 a=vUbySO9Y5rIA:10 a=GoEa3M9JfhUA:10 a=VkNPw1HP01LnGYTKEx00:22 a=yPCof4ZbAAAA:8 a=QDGw0KozxnkV29ZdokgA:9 X-Proofpoint-ORIG-GUID: az1H-95i2OAo6l_Eey-zXYLMtMGrdFW6 X-Proofpoint-GUID: az1H-95i2OAo6l_Eey-zXYLMtMGrdFW6 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 8e846ccf7835..d4e41a02a8da 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: @@ -476,17 +453,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. @@ -494,7 +473,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 /* @@ -510,13 +488,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 11:25:52 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 4E48B336EC5 for ; Sun, 18 Jan 2026 14:53:16 +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=1768747997; cv=fail; b=tbGwkAxUxNPtlgguqUtgRDt2SgCVX3+m4zNQ7dVYcKZ1MvacLPy13Xw7bUB6ZIaOF3Yj64LGwY9b+ag8e9sjJqP8w0136GJsBSBJI6clltwNbk4nsHIpCo+qWKp6wjasGnCryfIwJP5/cHGMzj0STF723a93zdx/GQjLqoqUhIc= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768747997; c=relaxed/simple; bh=YbLO9xX/CdrgkKHYfF2XdSENCf9j5eDU5FCw8NO0Q9U=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=OYwaP665gYXIu0DrSrZQ+i/TYaCObgJ1Y9W2JS8ENxVuZBevmLJHTey99I2tEbBnBnhWnD3004nnINx2KUcrIX2v/Z0x99znEWDw9LEBOfvX39d6i/GOEIaXsZucCVJok3xLuiElSLd3EunFBn9SBXPYLuwdx26A/ECeMc6sCUI= 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=L1ZMTZuv; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=Ef2lqpTy; 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="L1ZMTZuv"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="Ef2lqpTy" Received: from pps.filterd (m0246632.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 60IEOt0L3741847; Sun, 18 Jan 2026 14:51:57 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=4Pbh//tMEL1Sb+y1eek1uoX6f+uV+GSsfep+yBo/398=; b= L1ZMTZuvl+LF0mkzSneffczVtdH8JnYRfI1o7dqgZIn9EXUQSuyBDlthlOeTDcIT 9Z8SrBh+3tMU1Ig427snqyNdXSWGYu8D/M4JIeCnyJtmijx+VZiszPAbQst02r1g BRln9mIGHpYG8MMXwhOz5jPOLg9mT9DX/tN4OR+2y/O7LMunj58jCqqhNNEHKUnJ h4OPrAr6B5XB1VtoQ7t9t6ERCzRdTYYSjulMRJsuAclqSnEV5vRoCiYl67R/O22X A+kuVde8yncnQad5xbXag+ohI35lfqH9QVyITTjJL0zXiacUHaLe2uh6tL+H1Iib w99PxqYJI6PBMwyHOUCmDg== Received: from phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta01.appoci.oracle.com [138.1.114.2]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 4br21q9axj-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Sun, 18 Jan 2026 14:51:57 +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 60IC4pTN015541; Sun, 18 Jan 2026 14:51:56 GMT Received: from dm1pr04cu001.outbound.protection.outlook.com (mail-centralusazon11010033.outbound.protection.outlook.com [52.101.61.33]) by phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 4br0v7exkb-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Sun, 18 Jan 2026 14:51:56 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=CbjhO4P9TTEBcvjOShFhsZktT19tLE8jliTqYFCBdOI0O3kA5WmUJZG8MrfokLf026eCeQfp5PRWiG6g6XoCoJzOfiqD03l6gSzGlycbyfSgAZQ9Eklvun9IDSZlokecc3MHQgWNQuYChArqMR7beXXseWQYXufJq6iznwxfp9suISV5HBH7AEhUSbJ+9FPMxVM64S2AHaRPOV03M8KYwxcf2OgXV+80yNdxgt9S2g4S4Xw2pFDtEp+F72/hAjMDuNBr6uLI+zKs1mfcV8edZTJBfZtI4wja3WYXQ88EKQTxzu15t+aeSGEH08/908E4Ud8lzdAejARIxffHQxY95g== 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=4Pbh//tMEL1Sb+y1eek1uoX6f+uV+GSsfep+yBo/398=; b=ERu9W44r4f9dtJnrlo9rsbRKoNk7tbQOaR2DiJeTNtLevcFtsu7Uj5goqslm/ZfA/zmDO6FfdItNIOivTCzYdSBssFDvmJpJTThvhlKf3wjkQlO1b6EyxOUNMVP5HNwto5tUrchqKbywnP0WwJhzjDRfiEVxirap+ZD5lIyIZac45TE/tollBrfWhk/4MTTEmOyo1AyY//43qks1KaiY23zSU/xgrX0nVYF7iPBsYv+U+1qpkGBAlwl40qzFE0IC4ySr+tIjV5MDPamodHZnSauNRcg564QMsN67vWXC2sJWDIGVYaH0wHAMRRTxNA0LYB6Wf8E/JV59UOpwIcftdw== 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=4Pbh//tMEL1Sb+y1eek1uoX6f+uV+GSsfep+yBo/398=; b=Ef2lqpTyh0NwooAlRGoSrMUCJM/c001mnu4LBvYF3jN/u4Z+0W/ifXP/1cxWmJuWdp7Zw8Ahf0CjRKyaW5h2wlgDQxSjKmk9CK5xWN+cvSOX/lrY9uTxC+HXZogjaREZfnamaa028QCoKDUNEN2rNoatWyf9LTHJBld/941zbv8= Received: from BL4PR10MB8229.namprd10.prod.outlook.com (2603:10b6:208:4e6::14) by IA0PR10MB6723.namprd10.prod.outlook.com (2603:10b6:208:43f::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9520.11; Sun, 18 Jan 2026 14:51:53 +0000 Received: from BL4PR10MB8229.namprd10.prod.outlook.com ([fe80::552b:16d2:af:c582]) by BL4PR10MB8229.namprd10.prod.outlook.com ([fe80::552b:16d2:af:c582%6]) with mapi id 15.20.9520.005; Sun, 18 Jan 2026 14:51: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 v3 5/9] mm/rmap: remove anon_vma_merge() function Date: Sun, 18 Jan 2026 14:50:41 +0000 Message-ID: <56bbe45e309f7af197b1c4f94a9a0c8931ff2d29.1768746221.git.lorenzo.stoakes@oracle.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: LO4P123CA0477.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:1a8::14) To BL4PR10MB8229.namprd10.prod.outlook.com (2603:10b6:208:4e6::14) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BL4PR10MB8229:EE_|IA0PR10MB6723:EE_ X-MS-Office365-Filtering-Correlation-Id: ab31fa90-c45e-493a-7c93-08de56a11e72 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|7416014|366016|1800799024; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?kTgcfBBcfxM8Oh0CSS/DyP0JcJdBVAu8V9hUfdknNvJaKD6fkpYUoSuhahCw?= =?us-ascii?Q?xbfvvVgTO7x3X7ilcdD/nBrOTotC+f3EkRhUKNlv6KYgVBlShhiHPjVesYI7?= =?us-ascii?Q?IGmjZMSHD0HWvQzBcQsvGsz+v8F61ghL/04eiquv+5wMpDXlTcEh9UZ3PvmJ?= =?us-ascii?Q?llt0lXJBuHmj9MFCzLIYDCGLOeMw8VqlgPuINRmkE057IF89d9SLwZUj1rd5?= =?us-ascii?Q?EQYogDq7IddEv7B7HgklTIQdu5/I/P+8J48Euz/zueZV0OqRpfFRGLoAvB0P?= =?us-ascii?Q?2lX1w65qDDh/uShOQV/KQdPKOUlay1L5kK7HpFrysrZz2AX+IovRQ5ek3pqF?= =?us-ascii?Q?GwzMGn8fw0JETsDgoCPot0XGGzBEdyO5rGwWpkc7swv+eHzVbpBPs/kl0EMI?= =?us-ascii?Q?w4GNZtfb21L2khmOXMEnpJE6yxOBrnwo8Dd+fZqcJj5zyNUXt2YyDb2pAmnK?= =?us-ascii?Q?b4bCovEiogkhhkomU4WRkgBti6T/4Et6HK6weLSJu/ZDG8CkYZSOTmNR1nA6?= =?us-ascii?Q?xi44khDjtu0IU5RHUf8Cy6WSpPccHsoKekxhAyeFqGBjlfhCEA4NMTeWdYNp?= =?us-ascii?Q?aT3qE1voPXZz7IpVpoEO9sW4X1FlUo7BCGSjP/qlJkUUtOIs951YZzgiYEd8?= =?us-ascii?Q?mvTgcfuYr4o8mRcmekqQTvkZ0Ui+lvEk//HKmcoxZw3OLT9vM9Vvjl29hrP6?= =?us-ascii?Q?ciOx19gZWnjR0mVJBWiHc2LNmtLhLRFnjUlF8xoC8U2uC3AnM9CNMyo7ljAD?= =?us-ascii?Q?gyZ+/qmyfKMxeDDqXlFvhpOR/HeuC5yBMVwOdyYc6Z4ndz5r1Z2OEg6Sl0BE?= =?us-ascii?Q?zdulf4WvPVJ5zWIEu4V8Zl8lvY2ZYBxMbErCCGCcVs18EBGvXlT7kDcLxb9b?= =?us-ascii?Q?ht/U7dw/7hv9uiWsRq+WfKMg2mX+xsFU9tYfhYwWgyZbzoPp0SUj0VTlCxaD?= =?us-ascii?Q?efUSKSKcy3P0JZ9fjEAhrEPyp9zdk1aFKBSzwUb6z+W/lN1g1txyV4oQTj4Z?= =?us-ascii?Q?Xi8I+FwHVl4KsHs3MC1v+Q+J8rZjXvLh36O1gc3mR7fqgC6ljIm4d04UKbQB?= =?us-ascii?Q?NxPMW3PN8ZAXttQuvcVXwXJ/R8/PnVqewmYGgmWm7ligDrQGo7JFGHGpbk1y?= =?us-ascii?Q?schKTzMT4K44hPHtzVJFZHsJy54GBK2YckUBkR10vKXor/PeVQufddHtqcif?= =?us-ascii?Q?h7U/ECM8f3WoPgfi+9QBm8BCPVkKAnPXJgbghi7SF0xOAUD8GQt69pAp1YG2?= =?us-ascii?Q?TPR/DCLzmbTuElFLO/IR7zZFaVR/mTaS3UBrajpNrsyuk/dQVTH+oPBHxD6v?= =?us-ascii?Q?zdRMo+Rpk/bS5C6jEuZzHAJT+v7Jz2/DtyIZZPkHyAPTpMTTKIp9y5cBHxRM?= =?us-ascii?Q?0WCZfWetYKjdv24yG1q8XLSDFuOGzro9cYiLEWe2DspAs2Bj1DyzhDBM96n4?= =?us-ascii?Q?mcprsCyYE0Quz/c7PwS/VwEjBRi/CmbWkfpeG9MwMGaAyiLhwdYFiYKOKOZA?= =?us-ascii?Q?z3e+DklwCacUaFi7BuqMerCrPyUNvTdH3G8EXb8a1Rjjav5mz2HEhCDjrWht?= =?us-ascii?Q?tWXIv5+fXLi0FvHsS5c=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BL4PR10MB8229.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(7416014)(366016)(1800799024);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?2sT8EfL+uWhaunDEeMBMwf9XUmZcSaRHFC8NEPtqMbtNZCCJ2jybLvICK1DL?= =?us-ascii?Q?M46NaW+oB5bIMUs9jV1PBEc3PAT7/6VCMYLKd/pMsbjWD2MkJYI6WNZ6rBCe?= =?us-ascii?Q?u74Tv0wuPwcvTqtJhZkCwAQtU1fLNOc0aIZYjO3P7oRDdrQzfq3zyC7ruzNJ?= =?us-ascii?Q?TD4LQ2jh6AsJO7UfvjcLetIk6xixovgFbhbFErMxwp8pdIU+BrlS//TA/9w8?= =?us-ascii?Q?X/C1vPK7hLMIR5V2XLD97ocAMbB7PK/s41NlVv9Qyq4/fcN4/nHih5J0bHFe?= =?us-ascii?Q?t2hoUjUWRMFMQEJnppzlEmiloO9EiCJzjzjJ9hOSkys5piNxGp5LlIjcLs9I?= =?us-ascii?Q?GvDJugEj3Ndls/4iegiFraf58NXla4qFCxHTF6o6QOwsRAco99tmhQ41Vd4Y?= =?us-ascii?Q?4z1SFjWRcCqJLo/7RNcs8CV9uoe2/Z+n0HxaMAXYE9GNaU5UPr9vjpDvxfI1?= =?us-ascii?Q?LiGpOZdD38LhzIR74f0MRwZuLmuff2HBETncOpCqZo64H1PggB7y2Hp6U8Oi?= =?us-ascii?Q?zNAq7XMlC7Nh72++xWaTH2zybhlvGWfwUIcVss6mthKyksRoL4JlR3UsofM4?= =?us-ascii?Q?oxM8N8z3OI0wzjW5UAB/BZe6TDs6uBqG04DWfBPsGvgCPLgl2xals/fZs3fB?= =?us-ascii?Q?6lif4phkVpnuIwz4nx7Il7jZMpTbJznUQHYlBiCGUV7Jj+mrCwBKu2eSOuNF?= =?us-ascii?Q?dCIR1fqwEAza6bHbGUCj2Rr3BsRbZu2tL9f0864BNv7Uy693hp6LjJ1C2tOr?= =?us-ascii?Q?f0j65Bg7/o9/XCZLWSn6izLwpdnWY3/IgpVIHbv69Ch59wO41oRH60DxF+G7?= =?us-ascii?Q?9u7R8sW3U1eNvPVL9zWsSkHIl7MqZyyQSBna5CMlUiMj6AwSzwzimd+W431K?= =?us-ascii?Q?AlcDtSaQjHCTWDvh3/c80iU1lhZGKnWVQANA2gYrj4ZgW+KXaqE+Sd3RpP13?= =?us-ascii?Q?LZW1uAsJTVH0Rc0F5KrNk1Trt5kSdgRRAV4yg7DyrcUttR9LvWkP6c2k1+TM?= =?us-ascii?Q?Dqd3QR9TSXTasUkjyxSO/PosipyETLaGeE6JmI71t7SaOrQwSi0LX+Kell/T?= =?us-ascii?Q?jgN91xso/6UPqJFpHK5ZQsu4QEA+OsNYBGWdlLxJY/SraHP2jPqFdqu7o67+?= =?us-ascii?Q?qVVie3jviKKIIfVUZkqsbiyfJL41v2aNe/DZbgl9LO5sic2k9w4SWPlWs5Ei?= =?us-ascii?Q?yKPvyNikupSGbfiKBJ7vaGEIIuNE1DkB+aidIEgOmseERHD/Z8SsyLrGe2/F?= =?us-ascii?Q?MjYiMtza6zv5nRNbqKIsdLAUF6XEixlOTCPr7vv+WIOq4k+OAdo7UFe1ZrDS?= =?us-ascii?Q?n0VcIv9FGl3rn7F0ME8O4rUkQEy3yTIgojtZeZw2f1PMkvDyVEPEudmAulYZ?= =?us-ascii?Q?dPqRWg1O5m/7mcIJGMwJMMA0HsYxCkNnmVwnEx5boTQQtN+Qr+0xtqtLeprw?= =?us-ascii?Q?3UYjjHsK651w/RMzeCleZGesEz3dynBsM3RKW0VlPIQyFkZcQwDRaC69g2gV?= =?us-ascii?Q?075Mz9BKX/piEuRmxoTFnOrGvIURVjv3NQR3xS6wdVqCC1do5v5+16yfR39J?= =?us-ascii?Q?k6kkzO/YnzOLo1pSzgZhCGJBdBl2qmyhoZ/BpAKu+RqSrXU870w7J4EKsqC0?= =?us-ascii?Q?uY1YW6z5EE+UXOKqLmT8xdpPK7MoAkc+ChfMhV6AA2MjVg+NQPgkYOeNxbMs?= =?us-ascii?Q?m33m5iHirAA4Df9ot56BaI9cKgGakR7PxasyhjwMfEOeu+w65akqnfcnfUpk?= =?us-ascii?Q?RgHp4vKh93h0WTT9AiLsoYCJq+qWUuw=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: pvKfHPPSoxfy6V4cUbSojvEDoV2/gwis3/iDsLjk5Sv2KsBYUP0A/Ujy2m5BYDZv7nvexQzWU2cvJcEXPxZhukanPj1IqAVPSr5XixyaL+t92Rrlsqr9p7bI6s2xQZicdCkvocPhSCWfoS8KSGDXU3IGMTbviTVtw0teSMY/ot9qrgXgRhOnWiW6WJSAn7/IIUPT805lJAnT/g6fP+h/b6G7Royn/aDbGxmz8aAwYgoLkvoivjY8q62RYXw+HBa8JWy+tPko1G+HaP4GUu8eae2SWNlLYcKUXYOF3l6gNlj0R58bruF9ban3HOB6FY6H+CdVXKVem+Hn3yKvemQ8mub2LzMOlplFZfWFudbDhbgRsMBw7YmZiqKFAyJZejowm9qILoMyULIlLka6kUkopWGsg+YzYrgosrTi1mAn9vYcMLp0LjnwtebQ7IdQMXRM8R+CTNRrHp/hU9/kPPWY2x/PLks9AhiZESNNutZ0XYlH4CCcP3ZJDqGTkHNuBzv4TTcZadRnDExY2D9rV/gRrAYLq+xjvGc5Ef3UN8k9k2yrBLRcyconusMdpHPMsfR8Bkh6+hak6cbk/9qgTVHZPsFvHvQuuL4AYdvTYdwtc14= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: ab31fa90-c45e-493a-7c93-08de56a11e72 X-MS-Exchange-CrossTenant-AuthSource: BL4PR10MB8229.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 Jan 2026 14:51:53.4935 (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: 9KXoxkM2vbS7iOAyfo0biPa1/S/EGKpmDLfV7i32eOHc/YQxxdR7yvHySomBCL55lyWp7TZcDNiIkWg6AhYDwRSSUsEzc7CPCrIDmIvIeAI= X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA0PR10MB6723 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-17_03,2026-01-15_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 malwarescore=0 mlxscore=0 adultscore=0 phishscore=0 suspectscore=0 spamscore=0 mlxlogscore=999 bulkscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2601150000 definitions=main-2601180130 X-Proofpoint-GUID: _E1j6IF7Js1DVr4REBbZZA_M54-9pThM X-Proofpoint-ORIG-GUID: _E1j6IF7Js1DVr4REBbZZA_M54-9pThM X-Authority-Analysis: v=2.4 cv=QdJrf8bv c=1 sm=1 tr=0 ts=696cf38d 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=yDX0O4jjIrK4UegQ5t0A:9 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMTE4MDEzMSBTYWx0ZWRfX7WrBQQuvjsi2 p3j4XCsl/QcfafnOrK7DRy+m+czmh/rTBYjzR/L5uVm9ZZURothCvLRlF6fCX3bs0w1jzmpomvV 9uUWyCWgw+OymOydxBjb1A2pz/cLZBljmh6sOX36ptIGeBN5RXAqnd0pE+aZnJlRWktkUyme0SQ 7PFl2nTITbhtS5VLj/RbhqeYpWY6mrfY5FQgjDT4vcKyRcCNbhV8v20fo3Z+1tvqguVYjdwBkOp QSQ4Y5c8x2Ra3h1YKHBZl6FdkzmsoRtLaD2Ezav31iLpvXOTMdQJyTDdtIzBNESedTT6k6oK5vS LQZKHRnWcDCvtLPZCVwJE6zR/sLf8VXg8QheNe0OIEEV8DRkXDi1Z5DvuIfeL6hDm6FVST42QYt 2h6+RAr41yh0Ww6z/6a7hamVRS3E0NIzGA0kjYn4Mo61HfFfvp3pW/kJxzOUl2Dpyr0jQEh5bX0 LhVoJENQrWB874gkSdg== 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 f81a5cfcd7cc..6c458c8656b8 100644 --- a/mm/vma.c +++ b/mm/vma.c @@ -381,7 +381,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 11:25:52 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 4D32D3112BD for ; Sun, 18 Jan 2026 14:53:17 +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=1768747998; cv=fail; b=KnpbwRdoDfecnBSLLdxjB6zngbHb4c6MSytLicNEHy9tJJoSvom0lGfM62wPG9CMKP9adcJsqCaqExtPTpY2sbdAlkJNY1c35HRDwLuCnIJ83jgBqt1xQxraR+bjtXYVDGRzlqMH2tf53yu7noQLKu+yVl+oMsc3irFFdomJ18I= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768747998; c=relaxed/simple; bh=GQei3Tw8OmRV/D162bsyw84yo+JEMlmAYrm6CcP7UDM=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=Wi0zJy0KsoljI27Cs6XTrdDLlh91lZQz+FdZw2ILQJ/gD5HSItwXoSielJdZl5YqSis9FcuL1ZH44LI32MTSXSTQEm3TXVMXRh7KI4SP883Te5bihgKQaF9ERS9x9CImLdOfRZHloeFgU+0cmMbVtArNV4ZIH1n+i1yYLjX3mEU= 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=DcXa6m0v; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=RuD5GVWo; 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="DcXa6m0v"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="RuD5GVWo" 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 60IEIZAL105754; Sun, 18 Jan 2026 14:51:59 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=O2M7++oq4HJyp8gpczGnxQPqEc2qyAxvqLtJu8OG9Cw=; b= DcXa6m0v9YwXzRimnWK1zS8avXhsOg9hbD1Wcr0nOZQyTlOhuSPz+GNX8Qzl+L2R zxMEuEzxoFnspyEEB0KAJwJBJqoKb6MzGiOX6qLcycYfKGjWyz5IQYzDG/sGyZ2b 7k3NV7VYh+CJKT8/3YyvYZQaFaxClEO908jd5/r/Y2xMEx53HgRqwWZv5WRAVXuy 2RGlM9KKITmYWgqis+RxHgRBCuu3NrgIqXSS69EM94nCSqiFK0MFIgi5oC97plSu NuatAJg4YgAkaESwsMWWuWAdtxWec843REnAoFwV573MbfcEWMLhr03zwOjNPqpl WUNDpFA/miI6oYhUqfxHMA== Received: from iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta01.appoci.oracle.com [130.35.100.223]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 4br2fa1b7q-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Sun, 18 Jan 2026 14:51: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 60IAs3JQ022573; Sun, 18 Jan 2026 14:51:58 GMT Received: from co1pr03cu002.outbound.protection.outlook.com (mail-westus2azon11010004.outbound.protection.outlook.com [52.101.46.4]) by iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 4br0vb7b1q-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Sun, 18 Jan 2026 14:51:58 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=yC04pMVJ/V/GW2hdhkX72KsMrbj9UxoA5ssFKHOzhvfXbisiJeOacrCu2zmOJGa27FUbqABvPwhLGmn1U9NG8XhhoA9x/ml0yjqcbj2gvpcdHomXTbZIPxdrwJaxrQwtzvDktA0jXEJO6PNN+xtQBfb7cFfiS0Niv4taxbfGbH8qCwRFCxXLIlWkCUtNHAkHzeF51Jytiz2zyxWHf9J+L0b/5tcY+N/zbX4gnRstONcHVDFhdI4Ems4c3EO99fVxnhT72gpSarVDSmd8x3T2cykSeIhqu9MSkr2F0kTK5NEjF+jOVD120l/m8DAgO4FVQFDSJoSaAG2ez8apO56ebg== 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=O2M7++oq4HJyp8gpczGnxQPqEc2qyAxvqLtJu8OG9Cw=; b=AK3omLzeQQmwEvwbzQKf3B2Sju9m4ZZuHNoI2I8X3u/ZyvFAhujz4lJTlV+KO9dNIgjwyu50V7dclnJtNxVs9rtVWRLzb2kbOzXjOCAO0D5PbOInChUUeQ/geAzZClLny4z+ROeyfS0D8/zs8dM+n2FYCUc1CIKxFhVhmIq8TBd0Nld65IwXnVL0J+lmWAbTptMbPCgog/nfvibjIVENEnhFurgZS63R8TMFYQsQXFRu+LtJyuaRoG2n8wgHEiMwegOiyyEuQMXmvFHF5rJVse2NJ2txz8uw/b8ou1siiZQjMgwJnhVIMsKO9jkk6/nhIIMPevtjIXyaiRoHMdS3VQ== 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=O2M7++oq4HJyp8gpczGnxQPqEc2qyAxvqLtJu8OG9Cw=; b=RuD5GVWom8Cadonc6HxrhPs5sDZS5T748UIN+LCRtFGtUQ5XaM62dXJZEgh/iR7eU6BYSlkfZ27FVG9ZPn1A1PJy0aLAlDSt3AqmLEvspMe7oMLs3gbhHff+GMuvFMjbl/fXFFqXEueVZOIals2y60dxIF8cyDldGLBNu11LWCg= Received: from BL4PR10MB8229.namprd10.prod.outlook.com (2603:10b6:208:4e6::14) by IA0PR10MB6723.namprd10.prod.outlook.com (2603:10b6:208:43f::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9520.11; Sun, 18 Jan 2026 14:51:55 +0000 Received: from BL4PR10MB8229.namprd10.prod.outlook.com ([fe80::552b:16d2:af:c582]) by BL4PR10MB8229.namprd10.prod.outlook.com ([fe80::552b:16d2:af:c582%6]) with mapi id 15.20.9520.005; Sun, 18 Jan 2026 14:51:55 +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 v3 6/9] mm/rmap: make anon_vma functions internal Date: Sun, 18 Jan 2026 14:50:42 +0000 Message-ID: <79ec933c3a9c8bf1f64dab253bbfdae8a01cb921.1768746221.git.lorenzo.stoakes@oracle.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: LO4P265CA0118.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:2c6::8) To BL4PR10MB8229.namprd10.prod.outlook.com (2603:10b6:208:4e6::14) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BL4PR10MB8229:EE_|IA0PR10MB6723:EE_ X-MS-Office365-Filtering-Correlation-Id: 9adc538d-5ee3-42a8-b0e5-08de56a11fac X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|7416014|366016|1800799024; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?N4jiBJyebATRjDiv5hy3MCBUfAMoxkjyeDmobr6jK4bMYbyhkFUP8b65JOQF?= =?us-ascii?Q?x/l0DODCHccZTzUwGtFYQYHRdjFndObwqYRyrgyDl0AQHtBz6IBPSgS8KF+p?= =?us-ascii?Q?Ha7G0M+2ByY4vsTBRbEX1dBVn0SqtYzh9yktQcxzhdf5gh+wzZ006hBJUWd8?= =?us-ascii?Q?/1gb2rNC+Ix6XTegQu8XYvL5ZjCic2Ehd09VjxsLvVadRVMbgcJ+HU4AYpSb?= =?us-ascii?Q?8jHvZShpQy+lgs5af4yHYyNqrSumgNV7I3u9snatmdiJ3rN9lMY0jLNI+whV?= =?us-ascii?Q?Vo4dfnM2X4hOaBEFrn2YbvIERisYqv1pDtnAQX1060wcv3doVu1g+tCOuoQ9?= =?us-ascii?Q?kcEiPl/cWJyMd5+sTE5Jr7zTZ9hp+g6vbik4ZgP2vmtRE5VKDqyL1bGOCOZj?= =?us-ascii?Q?zFmdQK0mNPjbajw/UabTn9Hi4PnBbaAVjB6Jb52EjT6u0mpSCbehNmGNSkXd?= =?us-ascii?Q?gzr1VRApj4Bh7b8foocWOSRt7aP0IkqInwvW6Q3D8VRn7uzP21antA7XDnRJ?= =?us-ascii?Q?Oa9eY9AC37OaavhKL3QosuFpMwn/i/LHHGe5SS+4NW9hkxHYvx9LPXBfYnsx?= =?us-ascii?Q?Dc8JtT+PDMeLYpSsIXz1Jll146/f3VqHP8yTzLlS9VdQeHD1ama2UMSgYN84?= =?us-ascii?Q?Af2QTZ29COo5oVK4lIs9rRcdDKwaWWPTSjvMMuVN88EVR7+SZI8jhffnimuD?= =?us-ascii?Q?0jIk+4FYj2FDAbSBbJ2EbfEGqhgGRyZ7YrSAN4iTNkHdV/+7Ia4qdocMwQ9o?= =?us-ascii?Q?qlnJ4BrNTvNnT5Eb5dlESC+kpN7btUdqzts39baDicyxOe7/TBPAnk1rtLaA?= =?us-ascii?Q?gmGaF2DTLT6FSz1OdJjjqdRcnY/dKpKTcJLiFgedY6L2pbOU9ZXugtUsRjF1?= =?us-ascii?Q?qMYZT2cB+DfNnCOWsqgsJ508XMKbwAc89lz9HT/34augJysjduFcsjC4KFeK?= =?us-ascii?Q?ifijkPw4dk/1MWLmuDbtpfddH89UB+pTjWgFu/5dAQ8xXUXDq3Wz3+1RsBgl?= =?us-ascii?Q?BSG1wNilLSxvE1WxraSac0V1+9gPKCioNqlq1VnYgtnGy3LX9NipaJrWAxLC?= =?us-ascii?Q?unhHZpEGx070Y/q4bZKfTBdqbH7YHaNbiMgWCVf2LSstE4GK2W+BeY2JDbJE?= =?us-ascii?Q?fUIwalUfWjJ6ZRz7eTj7btHKNdCIlSS+feUae5dHq3XfHRXkncQQFAx8QtVX?= =?us-ascii?Q?YUKBQZcP6UdWld+ivfA68leHHV0g6P3xHNY7VOlTqpFP5Kq3JoU0UQrTQS4P?= =?us-ascii?Q?HGPN5kZw8JFqphWmlKIxkCx0BKnWiGmrxML+ZVcs+4Rcvs2GldHTv9+aG7Ts?= =?us-ascii?Q?1vzOybezL6aUKCWhFEiMGttCZTB/phURyIV4EMbE2VLpiXAjwAaRmxy3Q7a9?= =?us-ascii?Q?Xr/7mv+dxQUGtC7kCkZPzo+tmWK3QN4W7ACsvzlYQpjCH8Fad/l82EM/LwpY?= =?us-ascii?Q?zQ/8NsY2NNQBAvYD1/lUv7nAJo1Wl1+uKKm0fi635R2tWs8v8t9VZM16sG6w?= =?us-ascii?Q?8peOLBw/s3iGcJciDLhWVc1qasK9mU6/14gRiNCDm1qC3k3P9IzNWYYLdTKJ?= =?us-ascii?Q?b0s2OY2tI5Ef2kFyBhU=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BL4PR10MB8229.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(7416014)(366016)(1800799024);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?3TbmFi/QLRRx+6GTBOWGT2/mUewrj9r2HtDTuKbmZoUYTjW5UOSa3aHuQQGk?= =?us-ascii?Q?bXemE1J3C7bEc2azkIi67h6pTL/KHz3fOVigc7AQ3AcWc2sl1oKEpBjy2t/k?= =?us-ascii?Q?ZX0oJDawXl6tYM6yrJsxb1eYlTEIOy2izPWlDHUW2fMd5fsXP781cT++pJiC?= =?us-ascii?Q?aZlfoZgR95hNKUbBtyBZrehqlsLrR7sWFfR675qc7qqqWv9/mXht+JBz1Zjr?= =?us-ascii?Q?83MpxI+K8G2rBNV3rFcQzrz6vMg7FyKL4C+Ig3ZOMJWf14N6EkdkExvw+aiL?= =?us-ascii?Q?77yk4UdKOu8j0u2CZtUPOcJ6nZdxMiuLn72tBWZ4wCVsxPVkS5bSC2mXkNri?= =?us-ascii?Q?SZglYun+mj1daGM5AzHlG+RoZr1NcG7R40ieBrvYDAVsWnsbaeulKGJMRNSL?= =?us-ascii?Q?Sh1W1KaCsZofebZxwDn+ETpBs+/tSS8DGqYjS336Fx3Fijcm6589LEpIpkxN?= =?us-ascii?Q?x9FpAT/DXdfxsG07qjaMlGv5W6moWj/DeXaxR07JXEhZSGb9WvNmUungcLJr?= =?us-ascii?Q?LaCoyF8sHlX/sqxxobHicTODOb4ezVNq4xWGYhVozSRdk/caaOHuVK/K5A7u?= =?us-ascii?Q?czTEXSLpNdjYMh/Tg0vNI8eJiarV4/OPIoD08KNUr4UuMkHl4HaSQfZ8HeGQ?= =?us-ascii?Q?tDcOqKoCfWVurwC+2Txq7HGcDDUGIvuTuyd3dcNUI8aRzyTQyP0BazoeGyT3?= =?us-ascii?Q?yrfANL891JINiG95+o1AN3LTpKQbx+CU366Ql1zth/PZsWlMBQIlgUziCVO4?= =?us-ascii?Q?6lcqjrIBA1cA7W64o8pOqnSFOljgU0de30lPeurM0NZTbfyrvZiMs8XYqz7Z?= =?us-ascii?Q?4VynORoNKFi2sLJObK/EtOm81cIgFCDuoabGAyLtl2smQfdJj8avtGFnQ/0y?= =?us-ascii?Q?rmPCRhf3+qx7KyeXPZWyUgfo/0FGEQTifTANfP7mAmPmWOcGgKlxmNqQJ+Ev?= =?us-ascii?Q?rJYPNzr3Jim3T/FIn7wEjM6+aA9Tv/UGn4etl5uv//myRsX2XNqGFBA4RKmp?= =?us-ascii?Q?0gy30PgCxPfGee0VUm+y55kRLbBYHwDSsf4ZhXdoQOQAug2ealNOFkCVMgUt?= =?us-ascii?Q?DgtN7WlewR9/dzw/5Y4/kAbFq42qoy6xoiuMENF2Mi3UufKn8aW0jnpUqv+U?= =?us-ascii?Q?t/iCzp7tunRJFEand3LGWhrCdlsUoiw964Xwu8cqqHailLiknXkQypOXLI0U?= =?us-ascii?Q?GRal68Wjwz6uu4+exoq1EfUxNV6XwpnORk3v/B1FnquS7zJYo+mogLcKNcF+?= =?us-ascii?Q?0b+6JklbL2zq47/3ajrNKK6raTNwrzmUyXXLsi2V24KsnjCFF0i3Tw1gJvVq?= =?us-ascii?Q?PcSxg2nBAfbFOv9DgKzi4DThwfRH2PW7kvMYR/i15ytrPaq6+Jw40NMAe0Oz?= =?us-ascii?Q?0m7dW6CJTnV3PglsANQmpGbJrChSAiQGzDLQe0HFQOgj0J4jogUV8BUB06yN?= =?us-ascii?Q?Ok/YwnKu81OZKGk5yOrSjRLNOFbEoOyh3JF2DHC+HSGK8+EkNx6n0A6OJNco?= =?us-ascii?Q?5YF2jWXCeTnwt9yWw2ULcD6UHd04fxbx4b5KM2MDq/Z4yYsqENMNhxD7nrpy?= =?us-ascii?Q?DmxtwLv4nfa0EJhTYRE+1U7OcbMKp0GlMrNqfIFTKxIczu5HQ9YsotPbI1xd?= =?us-ascii?Q?GJLdY+BkjQW98fWpjKI+jzp1OF40mbDaFzETbPPMdINf/9H1kpBmANxixHQx?= =?us-ascii?Q?YOFeUj+TNPlTnOq1y/624bwQrmri+Ntdtzm+45MfY7B0PlK4ONLvlWuG3Rx6?= =?us-ascii?Q?N3ERRmWfe0NhsdFZAFfWPxyS1hhLXn4=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: QI4tAgH2DYLnh10oV2qDljAMWrtePGdXyAB+i26rzCeODFS0SHxi4BMLBe+hopDywEjEBtOF9pp8v81uQJM5VO+VJ5BSTT4Cy9s3n+UHjn+PGi5wDuoGmo+/VZucpAAnC8VikEKBOfwNRFBxaYdZqghDwv79GqSZ2lrLrqo2+cXBX2cpR40zvwH1wboNZ0hCnF7N4W6Cv0rxtpcUgWuBu4H7sFZ8ycUR9pIXY83/HaOU1P11bZN0NIS0oHg1KOriUKT087YdPozLuh8wHaI9R+Sv9/5jo+tdZW/XZjHh7xmoXUPRHhfCG6HMW4Za6l/lhLCRHAim9JtGkDESmjLz6GK5AgfOIgSQYem8VJeARrnC9tgDyrQ48YL3GAZLJbm1arDoSI+PdLXc6SmdqAq8XRWNSIoLjBcc9x5FWM7mv237l2iTU1fFqWcBx2ZUq5GKBlNrNnFGYpQtDk9ShrYuSAaQZYbNy1v+KukmOW48OiyAfcz/KzZ4RbZzLXxbpAo+vsl+aP0NMEGxjdTtsa8G3w16B17wud8is3bDoozo/l9th6cX9VtbF9TlBKKioIqk2n4l04kPAg50iN43rnYcBxC6wuQwDeRxGtgVR/rPVCU= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 9adc538d-5ee3-42a8-b0e5-08de56a11fac X-MS-Exchange-CrossTenant-AuthSource: BL4PR10MB8229.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 Jan 2026 14:51:55.5090 (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: ju2Cnxil6GMwoG5jvEGFaaobzWumrb+hj3uMrn3r44mBtl1ylijjj/kF5lGWoulbNyUKecN/sWszeMCiLmG9rsfvnzTvMyfNPo4qln5zBqs= X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA0PR10MB6723 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-17_03,2026-01-15_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 spamscore=0 adultscore=0 bulkscore=0 phishscore=0 mlxlogscore=999 mlxscore=0 malwarescore=0 suspectscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2601150000 definitions=main-2601180130 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMTE4MDEzMSBTYWx0ZWRfX8IcaI1X4gzXR cfHJ2H5b6Uzikiz48slNs2nxfrsJXEcDA4toAADijOjnTPxl4V3v4U5ytTpHfVy5/SLjhwwtKpp e1ZaZEIua4deO3Yp30dB8TTH8cQkVonSHOlT5RATRuVs5G8CHBSrDjJ/YF3FknNvlbP1OrR0FUU XOBrphtAV+YUpxv7wzq7gGzJ+wdl1+k704K2YWndVqY763DJMoB8p7Hij5zP+TgoTzE4cAgM/WQ /J5wwIabo4d9Goi0SRpz4qtnVL/VW5wldSJFi8AGU97voQ7cy6mMsdoZLtRYVYFW6E/QG2VdwOL WPF5O9gncKU9PYTAjWUWVJ1zSDD28gxTpSuUy98HvAUn+w7BR+BeORS21aF8Y2nn1Y7aPStK+MI A1icdhUavmj8Aq4O5VIRdFzsLtBPxvk920cg9f4ZB3lLQh+UaKupo/LlBJ9G7N6JMZEMeGKdNsZ CUTSQhlAoRodLCVdxPGXlN1CyBMQnaoxCwQ7auZw= X-Authority-Analysis: v=2.4 cv=HvB72kTS c=1 sm=1 tr=0 ts=696cf38f 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=3nh0fNsjLu5yX6a7-g8A:9 cc=ntf awl=host:12109 X-Proofpoint-ORIG-GUID: PtN2yKfQCTaLFEiN6rq41Pwpoc5dcsnZ X-Proofpoint-GUID: PtN2yKfQCTaLFEiN6rq41Pwpoc5dcsnZ 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 ecb6020cf313..aac4ec53fe15 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 11:25:52 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 E4EA033B976 for ; Sun, 18 Jan 2026 14:53:46 +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=1768748028; cv=fail; b=dp+spVsvgF6kzqnJn1QRcfUM6/fraZPydIokE7qBXWUwk6iMCIyOGfeJnpv2RJLCIpYxEBpL8L+zQpiXuNes8WfaUrr+5dwmqHR7fO1oD4OXEVnnhKsxQr3JIxau7D7Z0Skx//XMEo2eq4MCwVu5t2OguGaIjr3cFxdi+XycwQs= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768748028; c=relaxed/simple; bh=WpE7v2NRLnsHI3wUkTZdSm1NgezkjKoYF2Ut20AoRjc=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=H/Jq2uwuUkJXLzRURcI9xe3igyS8Xv/kPI0kalu0zAy0HI2aHMMQaQtgRbLhK+URlrdJKFzINnuHkUu2zBON8GIRiEB7DVQpwLdvUDzANGnpms6pvl6LZJuOPRFTXssszYWeqNqsylzWvmGf6QQFkuX+GF+F9DANd5n0cMyCRU8= 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=n4j/nT8b; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=nTb8WE2/; 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="n4j/nT8b"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="nTb8WE2/" Received: from pps.filterd (m0246630.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 60IEZ2G33666626; Sun, 18 Jan 2026 14:52:01 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=ULFEYrc5se/3vlb/l3n2u+x2S6JHx7geI3w/EG37CMQ=; b= n4j/nT8bPlXapbLv/kc+bMw2fqrb/AEUfzCqk/L2d8N6b52K/LhIdWoJCtIMSWVS JHtMYGA7DVStHivyl1p7Ps4zbM/KiFfhkXUAtrs9l1zkFvrxMATOu09tE9hTRQhH 2LnylPH0mssxaWS4rmHIVEt0MHxKjjqrAzo+MkT1goLYtIi3awf0K/fS3j7Zc99j gUVksnJu6NIb7RtM5P/TVgwF5UPMyKrlwt/gW9DTNYE8TUEqBvKsLqaUE72YWWKQ Rv4UmDFeHsKvEfWYKD0RTa3tyUnt7xQ/C90V02BUmEq4XNk8QznVuFFSnQXbHsiO qdp6t5W4JVkJL+5TbSfrNw== Received: from iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta03.appoci.oracle.com [130.35.103.27]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 4br0u9hcdw-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Sun, 18 Jan 2026 14:52:01 +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 60IBKgYk040563; Sun, 18 Jan 2026 14:52:00 GMT Received: from cy7pr03cu001.outbound.protection.outlook.com (mail-westcentralusazon11010017.outbound.protection.outlook.com [40.93.198.17]) by iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 4br0vb7dbf-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Sun, 18 Jan 2026 14:52:00 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=HNBcZoLurVXoQQ11L08hHHmj0JfoDHvGP+tJaiYiUakEY8gQDw2ByHlkeYGmu4diruJnSGSeUyvKQY0/s/6KRFbOKl6Nzj5UFwkdOHdlVPyUKY1o+HXQd0OsVeUKNU12fhlzTFI/HcmYPL7d432Z6wlZoTxuo4eC4Jum2hUQi8M70e0u3te78HZk/Sf9ruFG5eJ/va8U3KROfbNLaWavaz6OAz4M9dwKfFNyGkNKkk2HulzpGSE43fajTI2R7UzXMup24jEClpId0GlNVsuNzu7Hnq7BLhcZmXMr4SvriOUrooFf9InB2wcG+bzYqb6V5RdaMhEgh64A3FG4yQhUXw== 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=ULFEYrc5se/3vlb/l3n2u+x2S6JHx7geI3w/EG37CMQ=; b=gTX4AmS542sdJFfvzk4wOZ/+KLy6tBfco+nLK0B68ZV0GIfAX9iHZKKUyHTTlKuThdVN5ATRGrP7Ou1XXXMzAFSP0KR/Iz0oOY5NcnS7pFR/EMcGPxhzO9C9srIxCmqlkGmq1ZG7e6pSZ6xqplaUsj4KpzK5CQr3XVnx8SM1Hctlk9XeAEiVno77qdLL86cBetlFcZXv1DnAdK5EexlFtCn7rG9ishWodGXjT+wRVYY519AwYVYxuzZ6H1JxCEyOSVLJcmKXtK1Td2lqTpGLamp+aMWklzyOBjnIV7nGexZ45Bb/OxxQ4LOofvF28cJ/Ytiux0fhEFzy00+F3WrBIg== 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=ULFEYrc5se/3vlb/l3n2u+x2S6JHx7geI3w/EG37CMQ=; b=nTb8WE2/4p7R4lFM6ETwmRUWa+ObMYdfDOENygsvvO5ytcP/RdT44j6EvUY7yFA6aOZdOenIyWl8MkK0znqmXQHA1jhyTPKhxG/kNrfH6hVcuEPy8FPZoMZHEvmOTLxW6LKNx5Gm8WAOQZi9dAEnVC2+kVIWSn+N7FIG8ltDZdk= Received: from BL4PR10MB8229.namprd10.prod.outlook.com (2603:10b6:208:4e6::14) by IA0PR10MB6723.namprd10.prod.outlook.com (2603:10b6:208:43f::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9520.11; Sun, 18 Jan 2026 14:51:57 +0000 Received: from BL4PR10MB8229.namprd10.prod.outlook.com ([fe80::552b:16d2:af:c582]) by BL4PR10MB8229.namprd10.prod.outlook.com ([fe80::552b:16d2:af:c582%6]) with mapi id 15.20.9520.005; Sun, 18 Jan 2026 14:51:57 +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 v3 7/9] mm/mmap_lock: add vma_is_attached() helper Date: Sun, 18 Jan 2026 14:50:43 +0000 Message-ID: <0172d3bf527ca54ba27d8bce8f8476095b241ac7.1768746221.git.lorenzo.stoakes@oracle.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: LO4P265CA0227.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:315::13) To BL4PR10MB8229.namprd10.prod.outlook.com (2603:10b6:208:4e6::14) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BL4PR10MB8229:EE_|IA0PR10MB6723:EE_ X-MS-Office365-Filtering-Correlation-Id: df268116-29b7-4863-9e03-08de56a12110 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|7416014|366016|1800799024; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?4v9M8TfpjhqBa18vnY/2JWZT/yyOwtiXzP9KXibg8GPnJ7/QurtPDt+FSsmf?= =?us-ascii?Q?XFFJyIjSSjUo9QmOF3ZTD8zQ1N4iMesn6JNld7UlXpOMjJnU5iD+rRbG1NN9?= =?us-ascii?Q?LkX82Wv84uXNVhQzRsGk2pYpkfun+MAx31kJ1Pp2en6W6qcWbRcEa9KTs/9H?= =?us-ascii?Q?DXUZAHdTuJ4ezITsWRbSFmjbDHWT4jD+odQGYv7uZjegg5yds850S2VAdi/V?= =?us-ascii?Q?HZS8tTe8QcE8qshK6xNt4GjDXJm96lGVno8FlP9ct4rLQ6uXFWyMaUAkPIGa?= =?us-ascii?Q?LAbkhbcvA6qEiQ5diIGk+dnv+7PLPqLjUBKw8xvAX9A9DLMLIsfIeXy82D2n?= =?us-ascii?Q?v4fkaxqgLgMQJrcxIOAqaQ/Hfiw0ZFkMyyBAyvv2TIUuROd6asLfmez7HQ/O?= =?us-ascii?Q?4sKXB/1yTMyx7I0bYC1Wr7rgVukRAW0D3JZutq+TKyN8S6CGTHktbgaWR3s2?= =?us-ascii?Q?bC7eMD1sPMOijcJkHwDewlVw5DU2mqAd8r8J3fhNEkenaJFzw+WvotyteOr8?= =?us-ascii?Q?KbsFHJjobrFLMWjonOhCBWGHSBcj72ddkuWrk+HmNhYpkYskDoLoeoeFfCPZ?= =?us-ascii?Q?57eUZP6gGyaXd4CfnXJk47UaSY7qqpFTpyjUnT82AVeetc29i9PCBjwUQESu?= =?us-ascii?Q?1jZHPDW4//2H6iKCTVOilxR96GMrebKh3y4bOkJpKcenVlhpn/HbgQOy2re0?= =?us-ascii?Q?wp8IqfJuH+sF7iJ+sLokEPhSZQLgtV0ZmqDJGGDV+Y8Y+X98hIzUlTtYib0B?= =?us-ascii?Q?jPg4qSXsvEX2ayRoKOkX2+yLQ5VQuO1zl3y0B7doHkO9K9d3xKrfZzvjw7/4?= =?us-ascii?Q?WY6WlRMnMtj5KsyPOjQaugpxVoHUlrp4LkSvSotP+cbr6eiqwdo74PBjZvJe?= =?us-ascii?Q?Yjymr33rgvhPIX4TbmEfU6g+nHGw14J0ge3EMCbwEA7aQIsu7BE9bBO3EEXz?= =?us-ascii?Q?YwHEavOJoBsWdCTNZjbjib8ZCntyZT0YDij9rs8nfBpX0L8Tjxc06GyFH+Ir?= =?us-ascii?Q?f4nyc5HrKP1o/xvt4ksfw19Y6YV3ClS516KauHUys27M0n4XVNgAk3otZAyf?= =?us-ascii?Q?BqAOydh4YE9gi+ncMXKRjVuDVOAkfHWMt2T3nOEvuwSLA47/nHSpPn3S3ZBe?= =?us-ascii?Q?BLrc1SPcF8NCSbc+ia7t//SQmtozzeSJwr0WgieeM802yUrzKoFZudL56Mk4?= =?us-ascii?Q?o3RkuUTthFIa0ZZAXYRU8EjlAFblESeK2yMmk1Ta2zco2dOIlLWOcmDmZzq/?= =?us-ascii?Q?c7RTWzEa5+QxN23KMcfgZfIvJ52UaamlzgwVd3pYQP9+HvZm0wdkfNEdvl9n?= =?us-ascii?Q?oktXHo7nHP2k07nE0CoOHRGj6mQLtUDBFnX4kLsuwVfM4AFeAFQ3wPv3IEbt?= =?us-ascii?Q?ZC+P3mqNJgCHdVR8JQMzOzaIYE4dKVJimcctir4dcwx5OSp0mdz9Z4AHNjCz?= =?us-ascii?Q?z/RCn96qiPo7Fb34oyFPlVt4+d6bKlzGo/f9Rmw03RPAtcnpL80oj2HxUNrd?= =?us-ascii?Q?FAthS3gRKpmMOyp7ovJlTCg/Q+qdZ633W71CY65rNacSAu8+UMfzidoetoPN?= =?us-ascii?Q?xrGpK9Ey//kaHROjjaI=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BL4PR10MB8229.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(7416014)(366016)(1800799024);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?CWS7DbPhcyG1b/3SUoXzm6aTnm1wbX/0iaP55h61l5bGF95qGSSjVgegoh/t?= =?us-ascii?Q?kDRScVfx7ZjTX4ol0PlxhAp4MkT+OvEFdUr8Qg7HyE/TMguja3fSI3Lqgwz9?= =?us-ascii?Q?Rxt+YDusGXfpBgJvqV21Vq1rNxdAXIu5F00L9KUuvsDdtPtCK6ouRcndDwcI?= =?us-ascii?Q?Qi9FYsrEd93JPHB6EA3jPflJyfPJ+ia+slzyVqKzlz0F7nXCOgyMjCUYsr4x?= =?us-ascii?Q?LeNrHS8fNdNeMu6OQKvCidNCB3GNjA09SdV89UVQ3rfbZU6+qSLgGVc8koO6?= =?us-ascii?Q?CV90qEgQkHEWuIjQyq3bs0fZtBzapOvzsNdNh5TPdO7dGppuIpnQyl20NEnN?= =?us-ascii?Q?Tl3kP8f3o5AvjG6E5Pw8JJTWa9577kXLSaGF+28tCi/fTCieZUQKI9fGKrCF?= =?us-ascii?Q?qo27p3uC7rho9MxGhw+Xa7sgfAZSvPmoXPNz8YV6HbXXZph1bFcvRFVtI33Q?= =?us-ascii?Q?qLfB0gM2NDs5yz6ZDz9Sfyu4fNlqeXoeXyDwlFmvFvVhZv6Zxr0SUOW+xZWY?= =?us-ascii?Q?bfPDeGwtCIh90hvk97qCacf6PfbSekm02E8bQVfVy7dPEwZxoK7pmpIXAgoS?= =?us-ascii?Q?4QIN9dL01jSdLnGvaXJk/xE9tGiKpMqxWdzjAq9jqtAfypYtox4asvhl43jS?= =?us-ascii?Q?8Tw5+4ZlPiBy2+dBVL4e1i3F5asYw5BqHXt3DeSpoZPfAXWk3IEKmt9wuaAa?= =?us-ascii?Q?xy4D6pbgFFX9Js+bCt5bi28D6bSlEN5F/FkHvWsqctoZe9dmgKg9FL8kcLYT?= =?us-ascii?Q?b8IdG09rsFT8IXFmoF8iyBTCbcCgGG82pcsVAjt4xnYeXsFe5DfGD+sbdlFP?= =?us-ascii?Q?2dkx3AdTkRitqze9B+5vEy1qGT6rvDbN6YhKGTLe/H+XNRzdNIj310doQE/4?= =?us-ascii?Q?j5AuXiWPEo3chdlGbLYBAZOQRIXONcsrY6Dc589PrZT1kmmV0yxQeP1Qq3rv?= =?us-ascii?Q?gc4/ZEs8vYKfNepfZnXYkrdZofVg8OHgFwOZkDRfaBLtlGw0P68hvV+Fx711?= =?us-ascii?Q?8Vzsok/juXSGahIhqy8jrgHUQgTS14UW53G5RDRiKppuQm68z8e6AT0LEqAh?= =?us-ascii?Q?ewZqlUncEaZhJa6tAGxtw6rtuBAjfxX8GqsDslLYUSdKifphIYXp+zqyUGVz?= =?us-ascii?Q?38IRgZQRErCecf8/oLWC0raiYs0I9SmzwcPx9NMIEe4pPAuZrJSVl8DItoW9?= =?us-ascii?Q?m1MUEJThVSGwiIdFZ1C1jl75+EJiIDNONO68DfVvKUPUswPTaUjBS0brNFHu?= =?us-ascii?Q?kGjhorIAXSLqZ74t5CbwHnnSs1a8FYCl1FwcBlPP2XFbYWUPcczwLEI6wxHE?= =?us-ascii?Q?piBHJYfcj91LwQrHxeUq8QwZXL2VIdGqXOLEupXxVHSNMbULjihqXP17vOCc?= =?us-ascii?Q?RF7XpEihLDgS0co1Q3baCx7c+81VmWqrCEkCla6NQMgaIEbNImiHjl4Xgfpe?= =?us-ascii?Q?AMtkGzNxU/1qRFwIvnzZQXLK69+s0cHaX7SZ5S5+1mPKMeiR6rsJXX6b3lCD?= =?us-ascii?Q?H6aFcHwi7bcXTaShK4vv087BxSlqFKQwm3lJ2s+gBCVvTvEsTM2iOBAAuKB6?= =?us-ascii?Q?ZI9Cv60Gn6qQaW8NyMiPSbdGC4pahDaImChpQm3ZSJQwjbsZyq+MwRb533H+?= =?us-ascii?Q?1RY0cGRSikqSd/rpaJ/izMGTzDbIO2+PgEO2kmWvUZKMfF5AOXP8tNe23Lli?= =?us-ascii?Q?IS3KNP1EHFuRuRK2cPHi6kOv76tNAbf9r2s22gVUOwCynWM9YofBenvC2ESp?= =?us-ascii?Q?wtGgEzoerSIWOPFjAp8i1/h0LYp6U8k=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: QjI44wUHJrOBudm7aPFvJUKOH8p+zuZ08TgnvHUu0BSoAgihg5F0z81787FfPla6AyJjQvWFbh6T6Nk8+2nNNLSvyfDvJ63PYUO+mqw8VhuX4Xhgdt6ELOXKn6OoDv+LJjofrQ6+ujwau5uNuSoY7oeZU1xvVyOgvTxzq6yCawz9Z18UCNAtaoPYhsNJMjyOIf603ZjJ+5zZqiQGSiEYbUsVj7w+gYxEEzN0/lBmpO/irmeixGiCuO4gpLIm9WSXPDToyL8fPqa760K3lrciOtjE/BYgc9r+ekKAqJIFMDyUUrFzjltPXVAx/aQaMJ14RSpg1ijD04qYQ3yUf2dgdTm1nX6z6x2wjyMOeAVAB8O4XaUVC1izjH6R606c2uGgzzJKJWcXVhl9OhFqXj+knRcYLpcB95uozfeo5S0yeDY/lNrc0gSPwiUjPVuUhXrhB/MqZmQe0CMh6wrXSyB/M44t/HxOjQiEQCVRU2Mj1Uy4OYTdgprF+AuC+Xepf4T27AR9YKoqDQwW6qi6g4XAV/voWJ3deg/RZyhykXsJqxc6TyHPpJT2SPhnHPbfdiypTW5S763OGv7Xrix78lGJupCOx1qLSTb2Z8U2XOYBUGA= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: df268116-29b7-4863-9e03-08de56a12110 X-MS-Exchange-CrossTenant-AuthSource: BL4PR10MB8229.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 Jan 2026 14:51:57.8477 (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: bwzRhTcQFk0Z5xL8ZTLbKSnKxGdPxJrmwmmGwlvLMTmex9uEgdoJ3H6UFMuAPLJUvPSCDCg3GszMzIj5EM4SpGlKjtCek3tFN1rJm+DYu4E= X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA0PR10MB6723 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-17_03,2026-01-15_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 bulkscore=0 suspectscore=0 phishscore=0 mlxscore=0 mlxlogscore=999 adultscore=0 malwarescore=0 spamscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2601150000 definitions=main-2601180130 X-Authority-Analysis: v=2.4 cv=OJUqHCaB c=1 sm=1 tr=0 ts=696cf391 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=1XWaLZrsAAAA:8 a=_f7RAM-W_OM-GOxaregA:9 cc=ntf awl=host:12110 X-Proofpoint-GUID: oCSU6vXRSZeGoBe3-SnuHa48Z1o4sqhY X-Proofpoint-ORIG-GUID: oCSU6vXRSZeGoBe3-SnuHa48Z1o4sqhY X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMTE4MDEzMSBTYWx0ZWRfXw/D99rHh3y+C xIdkY8ARh67ren9Pg2M9wFz2tzIZL0OKbxJneBMNJEmrIUKLiD41KwiZol9Bvf09zK1Zt/emgpe TxDK3AihVstBzTzWcc3FnZi0rlq+MYzuB2JIzxYyqPhNr3ML/nFkpRt8GsXIHzGtPwN6sU2mgir yWEUgkFe8ppM2eydUmC6ru+CxuQRh7r0Spp1+ehYy1wOGcB3gjI29cvRAeni8K8mAxLYrIhi4cL rmc7UadTremXC60Ur3I7KmE3gGQ2+zXpHJv4tuPRckJtmfwGCkTqL2sT+1U8Z6uRUbYR03ZRAt1 yGbaPMRN1aZ/iedn+m+9BG0HNzRyMUgGTYczhYPNINJPz/vVQRPXzM2uvVftunNZ1w+mxDKZlex C8jjExuLKDBiGY2OuJpKG1k0UDI0hBiscebTrcPcYgUTjz9MYPA+ixEcWoUivnMaF2SSaOiN/me texubIOP2U+EzU94MOoVSIy1NktmJwpR7/sZrKy0= 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 11:25:52 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 6381D3112BD for ; Sun, 18 Jan 2026 14:53:06 +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=1768747987; cv=fail; b=N7ndocy9kHh4gRfSUOBW8jHTdWaV7bc6yc5bImDtnlluEO4YQTzVd2ihMl1+/fo2n+cXxdJXFIAge1qmCtXwgs3E9T+yPsLfEJexoPyaWmeirQaQwUM2mWbKcuxUmE62bnV6K827f7nJr3v+7fJt0MBEep4saB2Gq9/WhYFZ+To= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768747987; c=relaxed/simple; bh=+7NiMpma+xhxIASvBvumK2Bdfrg1ryx/stesT9XENkY=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=XvjmpMAlvq6XIBIj6RpXgwC59lfluiNVZjyAXvHw+LO8wTfM5mhKJksvZieJtdcOKoGTFHNg0Ulzjajd9f/M1vdUF6HW1z+DRIm1zKJOIy7nyU3w6859xeQU8J2GM4IQ8okFnO8/qhPYVmOnfBGtzCB1cyvBFJzeegDkU1J1y5U= 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=bEFw+AX8; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=wayLXtEi; 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="bEFw+AX8"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="wayLXtEi" 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 60IEk3sf3532421; Sun, 18 Jan 2026 14:52: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=qm+LwJ7c3lV4/R5I5WnT3/pKvvST50N0NJr6UQ2UFT4=; b= bEFw+AX8VeH53MaUKvxb76na/1VbW6ZjXyURrDThIyF8BiH799oNhVrWeQ0Be5jl kHYfSMRAEgScxVOI7zJJq74r6YAbRZLAOYT/uKy6LAKpj6SxHH2GSWlBusjF9mkA YmpFsEzTI4w56MclnTAA0NVL2SSVHRqY5wQE2R6RmNdCCnyezYCWkGtMGJfBfwka uJ3Ffc5b2zgwXlklAgpIKTEXDecq8Dzi8AAlK4aTTFgono+WnKuPHx6Jp0V/Ulo9 igNaqMU8LQarTq/1oflOR63ghV/mU5UkzGzW5og+AGGusISRa9gQg7yoLQLK6Opy xnu1VC+cphpyD55OGV67Pw== Received: from iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta01.appoci.oracle.com [130.35.100.223]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 4br1b89bs1-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Sun, 18 Jan 2026 14:52:04 +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 60IBSRui022500; Sun, 18 Jan 2026 14:52:02 GMT Received: from cy7pr03cu001.outbound.protection.outlook.com (mail-westcentralusazon11010013.outbound.protection.outlook.com [40.93.198.13]) by iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 4br0vb7b2k-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Sun, 18 Jan 2026 14:52:02 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=Tr/ba4Y+MGz11mg15hFfvR2UUgDbNdCWtUF43GUbte9d97xMgLcwRKL6+sEotyruveOznnK+z0P6uJ3BwNzmj8m8h1VDZJx64/VvFeFDM4dZ7vwcfqwXlxH734fb/NaleydUC4hBt5BIxNfabjvgogbCKRFiyUOaBVndb1GP6lOFpbt5vYH+Kkc36kyLKdTiG4FKNrwHomfktY0kOs3IOnizQgHN4tJe8a8oTaJ/ddD8ofNrusdRutMCw4Q1oS6LuXtpl065IBTYgdPqD45RQlugyDP05f2Lp/tzgT6yCt5vRSbJB7YowLcNSTGfy0p3Io+9fapmC8FwOsAw3cCIZg== 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=qm+LwJ7c3lV4/R5I5WnT3/pKvvST50N0NJr6UQ2UFT4=; b=GmkmF6yclx86wjz/lGkMkpVr1ueyVFM75sCHdWU2eM2OgtvT7V46sQSQVE0vEmwoeu1GwXuh4NhUNrBtEMY+TZ2LbMv0Uby2TP7Quvvkf+R/ZlhhqIzbBOpdEKLOFQH6xS1dUSiNK/TxOwDgcOoCAlkvS07Co5AB4Hdh6WXOR8e5Guo2qzelGo0HLkjSEMKmvMRQjAoJlpggo4GN5atq7yvKiirp5n1BlalS3sq+uffc8wnk5oNPFXuo46aX0HRRiA//4iIAPmoRPipzlfTU3o/hG5Tc5jQuBAKOVdU5KErzZ9LK1oZz7VoSpTc7aTyUKIQor6e0EEv+18qmgECC3A== 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=qm+LwJ7c3lV4/R5I5WnT3/pKvvST50N0NJr6UQ2UFT4=; b=wayLXtEiY0eRCGTTuMVUt9tbfF70cE50YqCLBsvGOTqVXLCWi/TJhbQmnMUK/9JelQhe3pPGWrfAe3N7KCopy4o4A5g5HDQ++G3ae4phkZZDs5bbCUvSERey/vtWo5Dt4897DWitSaWNEGxRxSQhNCPPAd1ThlhB+kutt+OXSe4= Received: from BL4PR10MB8229.namprd10.prod.outlook.com (2603:10b6:208:4e6::14) by IA0PR10MB6723.namprd10.prod.outlook.com (2603:10b6:208:43f::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9520.11; Sun, 18 Jan 2026 14:51:59 +0000 Received: from BL4PR10MB8229.namprd10.prod.outlook.com ([fe80::552b:16d2:af:c582]) by BL4PR10MB8229.namprd10.prod.outlook.com ([fe80::552b:16d2:af:c582%6]) with mapi id 15.20.9520.005; Sun, 18 Jan 2026 14:51: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 v3 8/9] mm/rmap: allocate anon_vma_chain objects unlocked when possible Date: Sun, 18 Jan 2026 14:50:44 +0000 Message-ID: <624bf1ac0bde4871fcfca2c8c8e294b6d8f7ae7b.1768746221.git.lorenzo.stoakes@oracle.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: LO4P123CA0554.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:33b::9) To BL4PR10MB8229.namprd10.prod.outlook.com (2603:10b6:208:4e6::14) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BL4PR10MB8229:EE_|IA0PR10MB6723:EE_ X-MS-Office365-Filtering-Correlation-Id: 4cfc8807-2356-4659-da9a-08de56a12244 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|7416014|366016|1800799024; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?+lYRBHLmNgOqVr9o6TNihYZpkULh+4fKmS0LHG5evNEDQf9bJxzI9Hmd4dH1?= =?us-ascii?Q?uS6E+Liscm3F0hss9V8pAUtT6VBw2fqeMyZCWFf7BzB7uOIbOzicJKiDHR4n?= =?us-ascii?Q?AXtShSSIza9J2sr12vOdw+i0Q4khWsLxSEHQ7Ip0Q6Tu0gtLCuVpTz5llN7o?= =?us-ascii?Q?lgI39t/L1UXCKembtGxe5Jx6h6m8JkQMRp7tIwyDzxEHqRiOWOBQqpKgE5ah?= =?us-ascii?Q?BrQ5YoLtq9iiLYoow734YP9X6dAUpFG6mjCmMsxbVrXMYzmN2nc32RVyznvA?= =?us-ascii?Q?yGz6TI+u2JfSzTAR4UNfow7Dc6t+RKswfUDpOKF1yiP4hoRsFcDFAuMhveKs?= =?us-ascii?Q?uySXQwtSnOBo2c5nj9CX57MoZ9k3HSVdZ+ZslZ/JtshaBwkHoOmt2S7D8vEN?= =?us-ascii?Q?bC6apF1noABX/nIKQKJQModVfW9qvpYpt48STRh4vdMf2dWwsCojbxtHmW6i?= =?us-ascii?Q?0M0d3XQxQQdL73AZBoEn2Ph8DwIQDrJouPPtKCxDIGkgO20ZHn8U5CFCS/y0?= =?us-ascii?Q?ujc7wivXtp7vFiypMyf2VVuxfNX3CIAwNkhsOqF26ibcRX5vOPCTNNKfwcgA?= =?us-ascii?Q?4eLMHgYIUxrEL18dFP7jPcxFkQLXrgz++enfeJH2od/5FbV6PTYk5u0RLIib?= =?us-ascii?Q?yaxj2JiHiY5KlMsjpwceSmPTTv3lJHBz9WFM9ysRQsIZ97+t9dg9Hz+GM2oN?= =?us-ascii?Q?my25LRhDoO6Q8vfwyzL/x2unPokXbA6un6T0oIR1+zj1VQPw71k11wSeX30r?= =?us-ascii?Q?Eih1xR7UTxD/RxSMAozc8rK/+kru5qjMTHh8Ewjc2LcjFuU2dpv0eOjY1ktA?= =?us-ascii?Q?QjyVtzQAyxOvEZojo5k4rnVA5NZFJsYkvMwSWuwmk94zl7DB5U2jKKM4/dPh?= =?us-ascii?Q?kimJy1EmlQ5gpg8jUuJBCL+29dEkXEJTXGyglzk3+ieQWoLd4KyiovEDrA2E?= =?us-ascii?Q?V1rN8yV9/fLc3RdoTeNRPgKtdsORDVyYu3ne7UWD0sgOZVbEslKrEIgUb0Fo?= =?us-ascii?Q?f4y0X7MRS7aRuG4uDf14tan7GJtYfNUmcxB4WZM6Ci1P2d2xLwBbZ/SjkmtX?= =?us-ascii?Q?7UkKqP/kEAS3moFHJmYibBac+cRGEsQ5qSvAv8RikXGNPhH0bU8/FrYmUXUs?= =?us-ascii?Q?q/8tewlOsTSOX2/MfvwcDHQDMDAf1Vq6f54rv9FcOj8sCD9peyoC3W3iwi7b?= =?us-ascii?Q?tk5hwmBIUzr6R+0oqkbYMEDNr1+C/ejFe1GWNXrISKV7fIZ3OvBW09zlgH4a?= =?us-ascii?Q?gaJQSUEbzxKIxB9gB6AS2WkU1qQFf+Zahsj8Ga/dLEl4mGNzWvnK8TaQ/KJ+?= =?us-ascii?Q?oCIMgZ+nudkddzDTKqmpmdwBRUJ1cshNPnE4NzfpOoV9oAUxYkKyvAF3Nhym?= =?us-ascii?Q?reXJB/KCNOf72rJoKvSgwo4AE9rDeDnHuA96m4/Lf3of8pFJViOXtwqdR0HE?= =?us-ascii?Q?BbajRQcyTiqQQ0vKyX+flHB7QdEP00NbmSYbyHj0+gc1zqiS7J4ZxXlx7HvD?= =?us-ascii?Q?l/wrYbpTLXOAsmM/XEZ7GRCOg1rAeDsdbpXAqMPesY2i3YSeGurEtCKSggnz?= =?us-ascii?Q?1U5MNPZ1DMPphWaEI+k=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BL4PR10MB8229.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(7416014)(366016)(1800799024);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?/ou7SJQgF80UfjveHbXosUpmzsTLvqRAKnt0tJ0AXa0FkUSSbzDcOkcakWFA?= =?us-ascii?Q?swYeBuX/LfJPigR5vJ3INEKNVw7gQrCdLBoDGQcj806bjpnyDqH+2NrPKolP?= =?us-ascii?Q?bY4htC48EDZ9wDlRQSGzV1xalrSik0cxIk64U6ycHqvsj9zYOzQBeRDOAyxV?= =?us-ascii?Q?jw8egTqW3NIHhl7aERw1BYpaVMO1JkdncRKCfP917XW2x7QY/6sbI2lnhJSQ?= =?us-ascii?Q?OPgYpBjzzH0nXmyqskVnk1MC1IOUYyOoOMrHS3VQD2N8wmzU1Ek2ZiAHvXEY?= =?us-ascii?Q?FzAov1qSvmjsF8tFW/l9IdtgpyLF/+TlD1NhPYEUE3i4kR0uH5Lj9p5Vi6T7?= =?us-ascii?Q?h7ZFbnh/wqmrXa69kFEZZv3/1/vtURJrNF12YewQI1UsuqZRAN9NYJH5m6WZ?= =?us-ascii?Q?rqD/fH6eEwvRpf5O64bs3fnrXyTTWrIns0x6fXL1ZJ7pE5nGhpefn4nwI1V7?= =?us-ascii?Q?Yziu688uV8MIhxFQindPhM+xw+82wCzHxY0yMkspf8KPL5P+675TY1DDQXge?= =?us-ascii?Q?0QnfbrWgLqMh0pbmNEEdSgudE0qgzrkYiIfa29iBeTu0qeteNg2EnJhHfDS9?= =?us-ascii?Q?/9/q5XHErIwHORA/96kAmX0RF//FHOScm5kV2c4vhyKXyty0bmRKv9WL7iTq?= =?us-ascii?Q?W5tdWvKow2yoQ62HShdqQCraDdsZLHONQ3+raLRwi4jf26uSi9Us+ih5dNTR?= =?us-ascii?Q?mCWA+BtubWsDPRBRh6NOKuJr/vk22aYH0QX6VpH9CdvgQOCd/na8+my7cRdD?= =?us-ascii?Q?BTXS9BhFD2coTCOaG/NG14x6XZesdnSA3M4rDUQMll5Q1N7Zs2713fc6tLsG?= =?us-ascii?Q?hs4bhx7gSz0ljDAm++q/XpaVUuganNjAE77QzsUTwfx/4DsNm/bcJSlCfZxp?= =?us-ascii?Q?xJDkUb7hfvkvT0rVgFdQC1aJODktHMLD3wkGFItM8DC8Gc/J7KlISN7IkOZc?= =?us-ascii?Q?xyhY2aOWFUuHohsfLj7PnoqgEU8BFqTm6+7fgqKxeENkatwTh2d5UD5YbqgC?= =?us-ascii?Q?RjkHYpc9ax6R74GmagpEWMWdedqvedGRJYAeOTpwZawX6V8Vw1tWM9oc53dC?= =?us-ascii?Q?0LWaVll+HgLqU+sv75FGg/Xw4A9TUDS+seOCauf6/M0Kt0Nc8gZP36H0LJdA?= =?us-ascii?Q?jBPaGRwYzKYPuDeIa2prcI38Am9nJY6YGWJ0yzRz30fUOGIxe8tzsEIZgP0s?= =?us-ascii?Q?8ytAhNUFfjSaFEc7UrpJc2Nu76p4krMGlsS+MXOF5wUVVBeoAI/9ZwB9zNbw?= =?us-ascii?Q?A9zo1E7T3xSEwldqWSPNhkywz+nZWWX0P0G6DHV7Exo/DJvm2oG0Idc7haVh?= =?us-ascii?Q?ndCQq74S6cYPCMnfGF29/PRwZkQ17wykfev+DndbHwsZmb1q67chn7+Kvs86?= =?us-ascii?Q?b9BXTRjCDu2McPoVmWkNk1BRAdG5S8vx6fziAyxfJOE9Kv+AGeoIUbgnICTL?= =?us-ascii?Q?3Eiuw8mVOP+Co3yoMmIPEIUjYqWndQ52SbUEyLMMg+bX7uLZ++kOqjpLiTiS?= =?us-ascii?Q?3BTE7OaT3o9xnjyoUTf6qrG0pnbIWuvmm5hTFQ0uth8WMWcak6+cehRd4x+D?= =?us-ascii?Q?/G7ZD/QSCw3AVjIs70jRviVRb+Q9EodYCST1lxgeMPrGWxk8wv6mjRLBze4m?= =?us-ascii?Q?+p0cDhiodTgtF41mXC8Zxtu1VrtQ5uGLg3GvQ8dF2w0/bOZl94on+jnA7x0a?= =?us-ascii?Q?8sH4qWLM9EoT1kvyFz1/lSRJgEx3OInqyzDd8FPSZnHPfnXcbLJGXgjZOrkx?= =?us-ascii?Q?7Jr8CEmdCfuqX4vrAkh9uEccBbEp934=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: TUKCN0X5uUFT4Vq/c1ge271bVPZuxVUZKaOQlN/fXTL9yctJVNuKlQUm3vdmlWbD6CcjfM+xnFxz87ymKpLBzhNAdjpHn6yfbF8rmmn1mlTn/eUAH35gPEdf/PkpZuWO+Znt+0XY4s7GlxSpFQ/xCNQH9FXoKqXdudQU1bji5Y08QdgFYP0AU00U7YOUJjbzm1beg5npBaOGeDsOGRR7IprNuzWMGeZQEeIANl72Ug+mkNUn94rJkCuxQc2pULQssXc/i6IS4/aZrp3+WvL5JyFObD1MT4CtMG+E9QIIxnA5hawSRlknMyGBWBd9fRJ/uNS15bKWa/pAAq5fP043qVNQmmLn5qDr/zNmcsTvGjTCuyAs91YAL6ebfWNbJDperArp3JTU1ivlh/Nkm8Wa8CdnMfw2jcbeC64LR+sE764tplonM+sIoMRadPPUdcAmA5zZty6dcrA/jJwascLL1gagY+v8v9opnkx+YlGEqoxNOlNuIBK7pxFVmXKyiFbF713OwzdW+hqwsry3FBcnOTfhgvuNHjTXxhvLUKj00gtMa5wgr44DMzknCbbAsjqldW+XBZMGGIV5JeoIBAAMNimrgOMVntnMyp+t3H5s/AI= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 4cfc8807-2356-4659-da9a-08de56a12244 X-MS-Exchange-CrossTenant-AuthSource: BL4PR10MB8229.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 Jan 2026 14:51:59.8478 (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: SGcPgGuETftlgS905pfUdR2C89a45bZVEB2NGAgpljf661xKwO/Bt3fPTDOKDjwOy8TW9gGjP6dBOmXMEcx/ttMhGxQt3AlJsf6mTzXAXSQ= X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA0PR10MB6723 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-17_03,2026-01-15_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 spamscore=0 adultscore=0 bulkscore=0 phishscore=0 mlxlogscore=999 mlxscore=0 malwarescore=0 suspectscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2601150000 definitions=main-2601180130 X-Authority-Analysis: v=2.4 cv=WbcBqkhX c=1 sm=1 tr=0 ts=696cf394 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=Pkv_mcax0HlRMdS3UDEA:9 cc=ntf awl=host:12109 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMTE4MDEzMSBTYWx0ZWRfX9TKZOhULNXyE +49n+SQ8WvrtKzdo7Z+HnQ9wO1ImpZiwpK3wxTLqyk+gwNusF632iC2/4NxZl9M/B8zwduAsW0p CT45qQbCXFo6qEzQ2GbZC7exz2/jIFYLeFJd+77Oj1lxUOgzeF/DAj0rRdIo3hVs8gRYyuxJtm7 8zXlA+5niULTWy4aQPjn2DLCnYSMXJJs4CTV6cKcrrGiJUdElyS+qVC+2X5W7d5o6KpCS0C3e9X QxV1rWLBE698PumxdTFe63MvT5r3W73WK70ZzvdxqCTFnrMYeNXH03cRJHReKTSr5YZ9cWqtGPi dsMxCGc/KFnEi8REqHd4IkaBo0qHwvsO/2w3qqnxJwKIFBjsoX8TR5DGWXDhvUcM4vEymmCRBRt iAM3IIbpvXACXayQeL049nTIihwJ+Wssix+oPF2yJrFjqvw10dWo7ISKBP04OMtf/ZT+et5Zpl3 JPBA7zOqkeSUC/0s2APZdZ9uR4TOJ6MaDOco1kjI= X-Proofpoint-ORIG-GUID: sE9BQTL556L9wJObkSwIa2CTJq8RIakW X-Proofpoint-GUID: sE9BQTL556L9wJObkSwIa2CTJq8RIakW 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 | 83 +++++++++++++++++++++++++------------------------------ 1 file changed, 37 insertions(+), 46 deletions(-) diff --git a/mm/rmap.c b/mm/rmap.c index d4e41a02a8da..b07e709284a2 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,33 @@ 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. + * + * Either src, dst have the same mm for which we hold an exclusive mmap + * write lock, or we are forking and we hold it on src->vm_mm and dst is + * not yet accessible to other threads 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 +334,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 @@ -392,8 +403,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 @@ -404,40 +417,18 @@ 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; - struct anon_vma *root =3D NULL; - - /* - * 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 (!root) { - root =3D anon_vma->root; - anon_vma_lock_write(root); - } - - anon_vma_interval_tree_remove(avc, &anon_vma->rb_root); list_del(&avc->same_vma); anon_vma_chain_free(avc); } - - if (root) - anon_vma_unlock_write(root); } =20 /** --=20 2.52.0 From nobody Sun Feb 8 11:25:52 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 E27D533B975 for ; Sun, 18 Jan 2026 14:53:43 +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=1768748025; cv=fail; b=iMH3xAbpmCQncXlO6jTpeZmQKwAgQCNl0kwoD2zo64rqEh7l21gjykktd+zq2Y+2z+M/auhoMmFVcNWK6/6gmy27gwgmyTdSUX/InNg9beKGmK7lhi8rdtsbddwotSY5odnTNB/xY2hSIlMDjJX1CnBQImH9mW0L68B5STc52ek= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768748025; c=relaxed/simple; bh=PhOrasDqd2j0kwQ0dY/X1eUnnjetbHD4aKyrOlSJaYU=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=fc5coCb5V6X3rRSzxGMkgFCsGb7OaHF1cfZBgHgVaUA+RiB3AQtPJxEMKEk2vejiBG5cIbWGoJtd4B2Fu7Kx5eCITbEb016wvvq4SfmMpz8hTWx0y99jjNgBwK70yN5jlAxKFQwO6FGZsS/RkZMTdTgll+SX22ogNj2KpoCMA6E= 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=SncjvCqh; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=FCbKLa6X; 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="SncjvCqh"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="FCbKLa6X" 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 60IEeXXQ3292761; Sun, 18 Jan 2026 14:52:06 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=RRtLxpEFT9jympsIAA1Rl7ra4eGnV5oVhGI9KAE0bI0=; b= SncjvCqhsBcSKntrs6E/3W76QepJHjswCQhR4urE3kJLQmUjDchaMSOwpDryNF5i wmbBmas3DhEYopN32FrLq/c4aOutTG1fbM5BKDiyrXd5giHAjxkl+7eyubPnhJ58 WvYe5KPzxMJgSfzqTlWsqLhrpLVCZRFLGE3ugJamL6OsvPm7nUvIW8SbJWGfThnJ kpKix5VfBWzo35NIoi9auIYuAFuRhLBJUFnoetAe8wbIETONXz2muNQLVrUkikP4 sQHTCN8rUkGfZHHoki/gM+SzbpoQJPHl/v+40ojvKj2cSkT+wXhJFJOM4hbgYQ9x V3qLjmH1b/49HI4xtz0riw== Received: from phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta01.appoci.oracle.com [138.1.114.2]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 4br2yps8re-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Sun, 18 Jan 2026 14:52:06 +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 60ICGZIk018066; Sun, 18 Jan 2026 14:52:05 GMT Received: from ph0pr06cu001.outbound.protection.outlook.com (mail-westus3azon11011042.outbound.protection.outlook.com [40.107.208.42]) by phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 4br0v7exnf-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Sun, 18 Jan 2026 14:52:05 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=Xio6HYvDFvOq4tPez+ikG3JgwSV3qC8WnWf3iMhj0UyekjKEBz80AZ2e4/0Y1P8umlKyRfsz26ZYkOuzqe7/WOmzYYyitH0fm2iYpsmkRuB82Md61THjoGjp7AQ/hD7c2G7RaYFf4cYmgM/L07iAU+CpWSpX4tUkSL3Cx4c+MbFkm4cavQ2nsCLaw38cjYnCJsL/DyDxaEEbbgrAHxhuDoolU280GrKCNp3x+zqM85BWtYVK/j7QVuIRcNsv9GRqFzsIqmJVgFBCkiLKUCG4pzBek1dRxcRPlZfP0HF7adPoeILlBrXaGEMxzcuHxKMdm6ra6QEGEallljvr83cJFw== 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=RRtLxpEFT9jympsIAA1Rl7ra4eGnV5oVhGI9KAE0bI0=; b=KPDdyuaw/KXvLh8BLzWKjgfxvamqtrnWlNFXvPGSSKXsi188pPho4nMjDVZMT52Pp7q3XHHmkFaIZlP03UJvP/tUIMtlaPTGl0/yPGTiFv8mFOUBJ9XfguOZXTD91K5w6vMGdLpmh6xJWZ4SZ7UxKbYlRld/S3Vjjag1rZVE0psGQV/2a9+ELAwN5KF085lk4uQtc5nSFfq/HV+PShdOJsKuMa6rnzF+W10CN6VPAVLRY9ic5CmiEZao8H/MbYpDpGT1g6+ARBOBL5KNnzndam4tndZY25gOn9UmPJnO6nM9way3uXx8AM8ilfulX1551XsvZh78PYcjESP2JALKBQ== 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=RRtLxpEFT9jympsIAA1Rl7ra4eGnV5oVhGI9KAE0bI0=; b=FCbKLa6XFIgifg6z2JvFa1p+mnyB3xyLSpnzmu7WdT+j7E05lI8tFLm/YEsfk453du7rcVFDIiLmO61QCASFb6uL68Ocw323kCzZc/wKvGw8xMznad0mjeta/bYPryp8Grs38/wDgnpYcrq71VxAIQlkbpgYZs6xYld0xywXp7Y= Received: from BL4PR10MB8229.namprd10.prod.outlook.com (2603:10b6:208:4e6::14) by DM4PR10MB6792.namprd10.prod.outlook.com (2603:10b6:8:108::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9520.11; Sun, 18 Jan 2026 14:52:02 +0000 Received: from BL4PR10MB8229.namprd10.prod.outlook.com ([fe80::552b:16d2:af:c582]) by BL4PR10MB8229.namprd10.prod.outlook.com ([fe80::552b:16d2:af:c582%6]) with mapi id 15.20.9520.005; Sun, 18 Jan 2026 14:52:01 +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 v3 9/9] mm/rmap: separate out fork-only logic on anon_vma_clone() Date: Sun, 18 Jan 2026 14:50:45 +0000 Message-ID: X-Mailer: git-send-email 2.52.0 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: LO4P265CA0233.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:315::19) To BL4PR10MB8229.namprd10.prod.outlook.com (2603:10b6:208:4e6::14) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BL4PR10MB8229:EE_|DM4PR10MB6792:EE_ X-MS-Office365-Filtering-Correlation-Id: 472bd1c6-315e-44a7-6da0-08de56a1235b X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|7416014|366016|1800799024; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?vaJ/samRAnmuJUraX+d5kp2oAD5ofMeJ7QdxK7j/vVIrCcVh/OKzid6/ywAV?= =?us-ascii?Q?o4Xevr01xKlYZutwT6ct5/6kCsFhSkvp9K773rKnfeRBzcmmWjman1Dnolwz?= =?us-ascii?Q?E0bn88OZ3LD3NdfpoGbe9Vp6+3GnAL5sJkAhPbWzcnZvH1CRJogwMHttTB8d?= =?us-ascii?Q?y85CNNPBYM6yL7pzQU09J8oPiDa7206m6rQfK9jEPaTn8hoywD56WWndtgaO?= =?us-ascii?Q?MgJyblkeCUncwVZZpRXUlaAdvGKqcE6gcJ2hTG0/c6LpqZXEmcs0hACE/2Sj?= =?us-ascii?Q?6rAzloDzeiMx2x51X/8Y9apxjmgLYH/6g+xFRQhbb+dATjRp6Qwn2niqjTrk?= =?us-ascii?Q?/Q9uYiTUQD6YBbtnbCk/fUjBJWbz/H7hHSIg3NCKqe8hXKfJnwQFlhHP6P4u?= =?us-ascii?Q?O03KrNSSSDDKFReRNqVDcT+OpwGiU8w7/thCusF8Mv4Caxp20DgXJ1PzwPvv?= =?us-ascii?Q?WfxfVZ9KvP6AIRBc9Sw0xbse4gXhIc50sFQRz0K4ZeWwF5cC96uCBqRW7o4Y?= =?us-ascii?Q?hMMF1PxL/Tb599LYM89KRq1dQmrPrQo5o3m/nEHGuqy9Tn4GXmHcFs+u19Fi?= =?us-ascii?Q?OHnoGQeWwLBL2yaZfy7ytU11YqeXfACfPD/ya1k5EXraznuZuHmWToTaShVF?= =?us-ascii?Q?V859d4trUdYHqcmNB/50IUydvaLfMqu1nq6NJuc2pP0uGAIEAIe9ZQN1bFAZ?= =?us-ascii?Q?G56bssuaSzQ4BUsTBTqFffvN7RuqriE6HsgqkEBYLALVFLoU7hfOWPAyRWnk?= =?us-ascii?Q?3KSshAJXORZDaVWeBzFQZ084RVCQ4Ww9xCqIqpx+oc24IO/bXiwRdsacxH1P?= =?us-ascii?Q?Cq9mUiOZJ+bfiglHww2FsMwdZAHuumxoGVLVFOlbH8+1p3lB7LgiyG/5kIc6?= =?us-ascii?Q?qXrTOzhMW7xCXPF1uzbIOEzn3KhIZvXWGeMGQiMZ6xExZ2y+JzkYEw1WU8fG?= =?us-ascii?Q?Kb3g23vkkcqmAgSYvUBBtoA5Wp74k443iA6LRn51yht8krfYUuD/rG0FhcOL?= =?us-ascii?Q?x+P9zWzOiETFpJkQuXVr9OP33zc2xeyXazWvA8fthOVl6tc5HGcJBXfUByTk?= =?us-ascii?Q?yaVRlZrn2SQod6VvRixsTKGqyP84Zmbga6egmKlxwfnBITGmHrvnupZYVRiq?= =?us-ascii?Q?+RyTthdQkFonI7ShwnVtAo/WjXttCGpJ2SvjQdo0JxtIiVSC5nZa5QxB0izn?= =?us-ascii?Q?MxqRmM8iwEtuaH07Dw0u2iFo/MZLKXEFRu/Mod4VFbYl4nbA7qrvfQX1C9jt?= =?us-ascii?Q?2wP2YLBUq8XH9AdHKeMfJ9roUzswL2kRhn9IbXXP61W1CABb5iKapxO/R/Lt?= =?us-ascii?Q?CdWEsY94qR/DdMOsu07gKQ72SThoV+eFZrZzRTNfhw06IBw0cbMLmS3vOf4f?= =?us-ascii?Q?YiLFnB7ys7aMccfyzxdiDaXvwsrOE+CFu+qA0yrNGwDDLCPmyHc29lh9lId1?= =?us-ascii?Q?bnao3hpp1GffUcB7fnPWg9FtuNc4Lw09BrabHKc+PCF6/P+FgqMoAwvaFDX8?= =?us-ascii?Q?XmgDK3Hm53O4rcX51b8whLBPVYMvnJiJihDc03kmiuGwruZpPFMWOhD/CQtN?= =?us-ascii?Q?F9ogjFFajBvXLMfj694=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BL4PR10MB8229.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(7416014)(366016)(1800799024);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?fVjZiKQXjOLjUtnyEV377TvNWOn6hSdkX91/HdDj5Ng8KCgRyK3Tm0B7Jtuw?= =?us-ascii?Q?EVk6vck+aS9XcVkexYDdz2e4uZY7SeAnPgWaEFaB3ClehCFxNgcXsnpoIahX?= =?us-ascii?Q?9yP2qdQyfGp4xBqyjDW8Wdtt/FBm+yP8kFiW2ar4jOvyiSpyzBL7MiSCI5UW?= =?us-ascii?Q?1mfRcCF77PR/zvdg0NhcW8UUhalIDcE7TmFm5cD+kMghH12lgM+DUSELSmoD?= =?us-ascii?Q?zTpo2M1e29I6MYdykoZr9GpQiYdewUUSVR0KvfAQxFQCS/+DoiTYSkj+D/Mk?= =?us-ascii?Q?i8JR9YbEdVN+FTL7ufj6sm/FQ5WLiyOOmtlm7akxz6+hf6plPn6FEvv+fHiD?= =?us-ascii?Q?xRSUwvCsUu0ty4lVnU7c92z5taDkFTxF2WBFibfH4Kdz/eYIF2d38PQD45M7?= =?us-ascii?Q?SNs4y/YYZuOSUkl9UKtKuUN6zuIjmaIV7pjPiElq98m/ULnDVhRVtnaNcfnB?= =?us-ascii?Q?j3E3umU7yH9s58anFYBsEw8ZbbTxAEq1fs6zq9QMgzAjeHKEJaZcZjuQW5Ut?= =?us-ascii?Q?LCJec42sJVeLilrkvsoTQd12UWq5BkjThHsG9Pg3v5sYXMul90DJo0MFvXB6?= =?us-ascii?Q?Vs4iPjGN44vFKdpRiDs1rtPvPA5KDWyR+G09eMAVU/3tRBv4zNpODh6ksM1+?= =?us-ascii?Q?mDAq7C5vIew9HDOocxFzuWHmui5tcb/Tn+GIY9PDxVtFg0SWH70gvdyTSB5A?= =?us-ascii?Q?FokKOd+nx1FpJwZMzm+8RPvBwweumPpMzJKE4T5jg+Y5cLwgBAm+6OmphjNf?= =?us-ascii?Q?feJS22Wp/BxqzWTaGuZF04vUhMVDQuLSBC2r2itm6WNn9/6n+jTguj3Wz71Q?= =?us-ascii?Q?L9pr/JGhh7t+Lfl23NQ+8joMu83aSF/08EecBKXsjBdiziiUsTRHX9Y4yMMi?= =?us-ascii?Q?exQbrq1mKMFBgzC4yhKt/xnPKW9pMhsYRlCP0ReguovEwg3IbzxVdzh611oA?= =?us-ascii?Q?Dmy6BCX+fpLyc+/ZQOZGELn8eFsq9hbIf60itNhubGvE6yJR/j7Y6EV1rkTC?= =?us-ascii?Q?Wrolu5JBOdtFvtek5HTQ/KaOjAS8VjaACPTyFbJEf4N+rNZIV2U5kt9R1OYN?= =?us-ascii?Q?fwzbLl7VE9gjiRuhFnf5Sf2WJvym1zx2NGHsFLFMIum0TuX571J5B9QjrrRp?= =?us-ascii?Q?M9Y2vnokPAppVsHUR4CMbvpD4terULxI/TKyBPEk8kUrrSvQ9uCwCu1c4I2P?= =?us-ascii?Q?6bnsrzCU0ZaAaV8V504WiSsLihSzsFLSyGJEmzvSm/I166mtlfkxtldHf+6I?= =?us-ascii?Q?eDY7Na7xipEt3PQ28mYBNMvBSkQU0v9FuBkmGHcbSC+TYbnWcKDeksq6yYML?= =?us-ascii?Q?a2g0cRBx6Tpgwp/Nuxf5H+tqbOyEj9XYUzPbTKN6csOKNdrsMhZV1rw3D+ja?= =?us-ascii?Q?YVfPlVoF0EeF58J9T3GQ5MwFLGoh5m2g+KXfbwmynScPy5RsWYklL1oOYvA1?= =?us-ascii?Q?/IBgOwhYXHS3n9A32CAfWlQMpOAxy2v797DeEFr+Fos3SCCl0llK0QRPGYa9?= =?us-ascii?Q?OnjpyHyPd4YmaukKeF3ZbbQuaa8xGdC2lzD4EdwgqLb3taAlYsjRHUm/sguI?= =?us-ascii?Q?8WhzQ5FEtFcaXEO06HJ9iP6Sd0L7q5vwv/n9izMxHGnLDy9sRuIdx2blAorx?= =?us-ascii?Q?Tlgubnvqa9PcPsqzroGymg2qsHStf1kFS6OEdmD5cqSoDPWYwUMY67g+1r3b?= =?us-ascii?Q?5a0iv6ow8NZIQ2t0+wgXBZAmdhenuDb7ATRRBOy+CreM2VPOFOA3MkKtMuoC?= =?us-ascii?Q?KTr7F5Q+EW3sCCEew3qnZdXQw5Y67SA=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: 0DmdjWXsMv2f318T74xUhUQBgTyB+CPpp1S7PJ9SoOF/RJI0/MvMG+ZQeb7adhYRURPKIKiVDhYxzy1rLbHbPv3SjOqk04BLLFC/aGEqS3hvaLiZUQsgMlT8q60iPI9vv0BXDssF7NwxBYagQZKOpGEW27RiFObaMO6tPX5f55bFumnpRneGfLQkJspVG4Zg6ghQ8js/EByYcpgxfiCjFxYKuWREG0S992m11Eyj9gxQMRCewmZyXt1NkslbL9FLQOL239NRjAx452G8ENiDBY+Dv89zlTuACXOWyyh0wVO5LuQkAl8JM8auc8wwCec85Ma4XyE9yK8sW7Dd1o+6+C6rwmAtvrdMoysvZcNfOojZcdVF4UQ0rJ8VxQuwqGkwwdabm62XgBPOPjGff+UdXYqlGJr1hFwEDpT/UOnckRD7N7hWgcD8gEBXQ/eRIrqcmktbBPTQpAZ8gtA1XkHMto5kX6fjUi4tG0y2LFMMMl5mCZyvf80Auw39W7+FYmvasgDW7HN51jijQUPihTR89qBa7ndwNEd1u5eerJjjNgskNgAafv/JkkELxK++H0UWmHl3A6ZtzjenmBMBLr+HjNwCtIbAN97WZ+DC/Ye5kD4= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 472bd1c6-315e-44a7-6da0-08de56a1235b X-MS-Exchange-CrossTenant-AuthSource: BL4PR10MB8229.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 Jan 2026 14:52:01.6912 (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: CqTz0/M02a0QGXT8ZqgQHlao+M1l7xV38X7gz5bYcvCea+A7E+/CqW/HlW+ie+iZJmxF7Y30XTxaCqeoIY72ZMqKP3jd2K0uAh0cqHajpU4= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM4PR10MB6792 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-17_03,2026-01-15_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 malwarescore=0 mlxscore=0 adultscore=0 phishscore=0 suspectscore=0 spamscore=0 mlxlogscore=999 bulkscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2601150000 definitions=main-2601180130 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMTE4MDEzMSBTYWx0ZWRfX5qB5IQCzlxS3 q6nsHvfDxKH0kCDZAr3dirz/KdplRVT8PsS1jUxsflsjKSgpTbUYw+ep/W0+Y1uW1rKF3IPINYu Q9T50gKJupskFRYEGrrZVOo/dXdxrSfSzrQ/d8ojZ1Q0TqvPB06wN4LDewiB/JwJbMOjoMZm/o6 YyeA8E/Dz44D4kbFi8fNYl8uMmDjyRaGp9F2f+T2T0PpxInUxgdTG3X4JIsz1t7zE2UD7l7OVD9 +K/myu8/VXkS/uYATqCcd5BOeCs8t/D+lzw2Hsh7S79sHaonGjHGN3KiboOjoJok8740i+ygueD onPlAFAUBdUbb5pPIbsoaXcQS+GolIrCz6D7vHEbuO0qV8ax5dSnfOPktssqBqTothnMFBJITJF RILY1HVmPejwvzyRNNHhZt6Pi28j2rXiBItqQMLl4RH1PtLjt9phBRmY8AhJsUPmZF4kfQQte8Z vuMy+mGOi/vz8NoBkbw== X-Authority-Analysis: v=2.4 cv=de6NHHXe c=1 sm=1 tr=0 ts=696cf396 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=jhzElPvkwTWLxKQ5pZcA:9 X-Proofpoint-ORIG-GUID: 7RIEzbCqlYZWbNxJmuNit_34BxNaHJgR X-Proofpoint-GUID: 7RIEzbCqlYZWbNxJmuNit_34BxNaHJgR 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 aac4ec53fe15..5585059f0209 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 b07e709284a2..c1ba88763102 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 maybe_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 @@ -319,22 +355,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) + maybe_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: @@ -373,7 +401,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. */ - rc =3D anon_vma_clone(vma, pvma); + rc =3D anon_vma_clone(vma, pvma, VMA_OP_FORK); /* An error arose or an existing anon_vma was reused, all done then. */ if (rc || vma->anon_vma) { put_anon_vma(anon_vma); diff --git a/mm/vma.c b/mm/vma.c index 6c458c8656b8..3dbe414eff89 100644 --- a/mm/vma.c +++ b/mm/vma.c @@ -530,7 +530,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 @@ -628,7 +628,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 @@ -1901,7 +1901,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