From nobody Mon Oct 6 19:10:40 2025 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 1E8B030204D; Thu, 17 Jul 2025 16:57:53 +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=1752771475; cv=fail; b=akCJKgYx8ycPpsTFQ0Zn7vA3bHEtHrAVBOfUWbKj+HRaueYiZVt+x2do4d9jdjnvHwtB8fl3i4rvqk7M+I5r2pyG58LomRkgmQa7eV0d9532hLytpCy6gTI1eXDzSXpn61H4QQygmzkUlnr33qz0tpJP8DpD4a269dEFBkKJHfY= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1752771475; c=relaxed/simple; bh=WwQKkDOAh/qiwRDOudxjSAdugdCyr7OGH3kvTjfZLgo=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=Z7jUarwOqm5Qp665OiH4eJkBHTFaLFEOUtT8DxF6kxCOrEjHdEo/etVtjWh3eif5/38adAgWGuj3wq/6kJSeYvu9MBQ5cZSN/h5DGeT0Ge0SUsNpYf2PvPvHbYWglf6tOYLo5YCOzgMY2jZsgGHH0sbjvSVQl+rbzK02e1Puaww= 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=Bn8xgir9; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=tCUXdlwU; 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="Bn8xgir9"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="tCUXdlwU" Received: from pps.filterd (m0246631.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 56HGC0EO019331; Thu, 17 Jul 2025 16:56:27 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=y9CKE4//OpFLczTvRiBmDNmzribfOEiuz2KDIgWSwrs=; b= Bn8xgir9xMatwpIx1F6U/6xKtJr73OR2+Y19wcVN1dHXKcaVvZiTogzF5ZLxBdX7 LV0/Qa4nCu1RoavovoTpHLj+QjCYtuhJpKr/l0lTsHR+ARe54A6R+lSOaaYZetHF lvE6O7J447WRUTbMsoyUEdZ7mBjZ9FvBFOi4aXwl08QEjxEbCgtOyYQsqVn36vnI snzUFz9CCkCt0eD9tm3fkX7Fis1jTI5co0CnZDBqC/zXUqkUt9KtiUUTzetK47pr KvkREPuT6eB9UGvemOC2AQggUGZDlibgeggGevsH2vi59M/Cafno1Z33X5KTWzoT 3iSRw52M/stmr/lyWEAJaA== Received: from phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta02.appoci.oracle.com [147.154.114.232]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 47uk1b3kaa-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Thu, 17 Jul 2025 16:56:26 +0000 (GMT) Received: from pps.filterd (phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com [127.0.0.1]) by phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com (8.18.1.2/8.18.1.2) with ESMTP id 56HGeF3k029705; Thu, 17 Jul 2025 16:56:11 GMT Received: from nam10-mw2-obe.outbound.protection.outlook.com (mail-mw2nam10on2062.outbound.protection.outlook.com [40.107.94.62]) by phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 47ue5cpr55-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Thu, 17 Jul 2025 16:56:11 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=bDLvZv3bsaSqMXyegIiIJKqrAHtONXh59V0CI0n4goC0GNFNHxk4szyBh6fn5HXogzkhCAbbAx69XNxomvU+kIJax7y16lQkZNNB+yea1nFWTGzgvsewkt7zB3NL8sQ7TiH4mJvcSNk7VALbNjfMwHtH4D7WowS68ov25eqBkP4XFlGkPuiEqjoF92HTl+aV69HA7fvUuIdC0pcKZRB5mTTbmizcoONhD6sds+OoQ0HRj4FgJNLuoEMnnbk8UGCeXYQQw88UcwAUj0akuETU6cjf7rP7AS4s3vF8jwwd4MdgdJ9DlSubM6KWuwnvwgrJyItalchiRkEN/PNSDbw0Uw== 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=y9CKE4//OpFLczTvRiBmDNmzribfOEiuz2KDIgWSwrs=; b=k4rbtlKnYXii4+AdLhtye7QfFHZok5OHQOduF2RR+aae2aqWlxva3r1vpRSgavDlr/8LjpwsJP0bNCqMa2egpohN8SoqeFJpj9p20SC8837nVXzIuswKOEGbbGQ4GWJ2FZFJW34+FGyRREno4GiOCz1QWJMG1ny7Nx3zilfOPizWgoXq+bZEAMHfnNfaNKyxoPazgNb8FPQXaKgZrU/jf/nBHXjRtyj3e6tzEhYx5F4/M8kgeD4bpZ8qy2xM/Qs2SMhQGKSEqgEEV9f2rSBckkOjAmIe0fVlsiqZ96SZFJwFUGzlHlhbsY2KFugoJxMAL2hOe6XxUGV5cMsPTxj90g== 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=y9CKE4//OpFLczTvRiBmDNmzribfOEiuz2KDIgWSwrs=; b=tCUXdlwUd/ZrGIh4neHWDoQxBYwW/DJCYKjAu8EIdwPollou/58iAqkmLluSbod+1ni3JikRBXC8d90t4lF66XIRkjSZQIKSpNCw/N6Kxj6VgsLl1NzAD0o4OZOAFXkp5bTTxm04f2U3VvScZwVGBM6rpHpqAPQQkEH+llBMqCU= Received: from DM4PR10MB8218.namprd10.prod.outlook.com (2603:10b6:8:1cc::16) by PH0PR10MB7098.namprd10.prod.outlook.com (2603:10b6:510:26e::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8880.16; Thu, 17 Jul 2025 16:56:08 +0000 Received: from DM4PR10MB8218.namprd10.prod.outlook.com ([fe80::2650:55cf:2816:5f2]) by DM4PR10MB8218.namprd10.prod.outlook.com ([fe80::2650:55cf:2816:5f2%6]) with mapi id 15.20.8922.037; Thu, 17 Jul 2025 16:56:08 +0000 From: Lorenzo Stoakes To: Andrew Morton Cc: Peter Xu , Alexander Viro , Christian Brauner , Jan Kara , "Liam R . Howlett" , Vlastimil Babka , Jann Horn , Pedro Falcato , Rik van Riel , linux-mm@kvack.org, linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org, linux-api@vger.kernel.org Subject: [PATCH v4 01/10] mm/mremap: perform some simple cleanups Date: Thu, 17 Jul 2025 17:55:51 +0100 Message-ID: X-Mailer: git-send-email 2.50.1 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: LO4P123CA0310.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:197::9) To DM4PR10MB8218.namprd10.prod.outlook.com (2603:10b6:8:1cc::16) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DM4PR10MB8218:EE_|PH0PR10MB7098:EE_ X-MS-Office365-Filtering-Correlation-Id: 8f75e6ad-4073-42eb-04c1-08ddc552d36f X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|1800799024|7416014|376014; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?+tXzERPQoTuX15t+tkcCaqQLThPB9FDIBvXQcP+7J13VuMoTustN8IK6wB05?= =?us-ascii?Q?RC38qn/suDxqtTuoVfNmOaHvqxXIpiY3l5QqKbyjXaiQk+M1X7GQz0QefTj5?= =?us-ascii?Q?oLq2aH8WorkCMUrPadMqRm/IqffhHja9m5mdFNjiH4PUNx99bw8hK6lbpjww?= =?us-ascii?Q?RGt1BF1fxJzWqXGPd5aiHgUkA+iXkcimMGox29TH2O9A866RASg2SMkU1THA?= =?us-ascii?Q?hcsSwzg4JCrjlE5za6jcRvrHE5ed4QShgMf8XiANoVvOJZUHWIAKJ6SYKqJC?= =?us-ascii?Q?JXJEF6nufAKlq7Ss6n17g/VMT5grY3U9XFcvrTkGeP02/jq68aR4OjctsVuq?= =?us-ascii?Q?HBFp7P98+Ub1uK6oTjInjDsXvb9Ifq/nff7jaTgvOMjZ1VzhI/i6NqTy6uXs?= =?us-ascii?Q?/ofEqbJ/s2kFy6Mb/r0j2RhBG4jNMHf4IxcSOKyAZXk1GLNpddChnHPAkNUJ?= =?us-ascii?Q?fi4fHCxvqkWU72D1RNOGiozKBWx+dHBZWvzJpPdGNIBnWXi7bJ3UpKFt0oAq?= =?us-ascii?Q?Enns+1XiyVSlHXe/XIdxO/Tz8QYJg2shv37e3w00cVfwumxOQBP45dl0QbON?= =?us-ascii?Q?4K9dCW4vyR2haHwEkxw0sM7pA4CeMM5wiTejYXhKMpl1IQdFtamUdKGevDO+?= =?us-ascii?Q?K1TzL201b8oaai5HKday+jDwey7syys9pm/Wb6bhBGvueDya+D9g2Qx+scs9?= =?us-ascii?Q?k3P4+ZQxJf07gSqKvnaaX48ejstfNbFGl3P+G1xawCLBRhhkeh4Gqz6RYegk?= =?us-ascii?Q?pf2PvOUQpDZ6hKJvKdkV1ZTeqOb5ir583mljzQMM8eAUZT1JvaO+htjHekFG?= =?us-ascii?Q?1Gal96vjsbQ7Clk88rTPHD52hoHSgRXvds209SSBobyPtLXBtGY9daIyOeqZ?= =?us-ascii?Q?5wkFghVKLTgOrYx0nHaBJ90z6e5BtSNnYzM3SryZtR1Rvh36bx8lTxXUEZ12?= =?us-ascii?Q?LlN0c4IGsj8WwkDC8VAJ0A9c36f5MAE6f/fP6kTuAVq96KQ6lLVw/Ldj7kEA?= =?us-ascii?Q?xrSzCNbHZ1xVtFzPF9GAMq3jhZh2PfhuGV1TSaer8diT4LZs/9BztKMXz0zH?= =?us-ascii?Q?M9zPtMqdg2Koun6iXBml+7/TqWqO2HhJQEqVRur8aSzv6EbnNFr2RQ4VjY3N?= =?us-ascii?Q?zBZR38+EQ2s0/sOLNvHNtMoM2Q0W0H6KlJnYL8wzcMgFxKre/6ABtHbajmbP?= =?us-ascii?Q?4OJHzzSx2FlQm78zqb1Ac7PzM583G/RA1dx0uuouQuS51Y7HJEWphSxVDtkB?= =?us-ascii?Q?C9dWYqhn/qIMWd2OLxiS6Sr7CgXFgKhPAxwYBsYn5Q5c/B+KBFX7+nEithU/?= =?us-ascii?Q?h8xkCsfdLM6mW1vzN0ulerH8BLWFiGrYSz8o3Pa1KHISMbqHcyG5h7ADOfYl?= =?us-ascii?Q?SxOhhHMxHzdpgOFw4RdtgtCbKQ/dTCgIEcyRks3S6TZdvrenlUdLNmSOpKQQ?= =?us-ascii?Q?6cdcXVS9Eew=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DM4PR10MB8218.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(1800799024)(7416014)(376014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?ueioz6WJGHCIF9+D/oHDm7J3RaUc54O98j153c/M7SLq5fsT6D/T7FVxRiX9?= =?us-ascii?Q?DpwUAyngY2VZIzcHQ7n7QcKJtHlAEhm1KiKsgymcKLgoqhOI8l94mQ2buqrc?= =?us-ascii?Q?i20zNm8BsmyVyRETZ50SyLjXcg9KUcn3HI3ba+wm0ymnSGxt27U/uXbLmSs8?= =?us-ascii?Q?51pJfAdj3kFTXR/pmczxO9kiUsBF0v+50V2/GC2sslBUsS9Rr88TMnR/oUPO?= =?us-ascii?Q?dibfVzXkzLARnO5dN/cOAe4u2icoPfLaLOC066DodhTF38i3jKsgB5h2IgWU?= =?us-ascii?Q?4yG8IQJnnSTcDZN9XZ5d7sOhe/donf6oH7enWHal57ahauyEzMGRROm7g5L4?= =?us-ascii?Q?g4khXAQXA/QEOJ+xrxEtaG9rO6QYa/gok3xsklwmhl/RwfHwkgPAqFK11DHo?= =?us-ascii?Q?Clp7hNhC5SPWU01UsnDjVay4P8A9Ih0u/yzG6SiElZx73A8S0LNv6xIiTs8J?= =?us-ascii?Q?txbAPyQGg0KSPAeWDL5VNzcRCic5gmzvtPK6JhIhl50KWdChjbmE7wL8n/mN?= =?us-ascii?Q?aSrEBbXlUYo3RMuleJ+1233xQFHqXKfYEdpvU7O/zwRU+3gNFzKIkbL8cvL+?= =?us-ascii?Q?z0cCFXIVnmB+VeidlD1RajGfXo7ur+LaRihcxErOzowZ2okFPdns9F6a9H19?= =?us-ascii?Q?BZCXcp/W20piz5Z0bfjGNSh59RUyrESX8+GkAQmRwUdFLYkrNcKqQlaKSHhD?= =?us-ascii?Q?PpF16UU7O/vEBUpWSdL9KOpRDT80PdlPVBS1XSsOfuS6r6l7AQxKv37zfLsO?= =?us-ascii?Q?OPEqi/zM5yapMEvyTD9++/ZgFxQZEUUjbe+uNABB55HIBeg93sCs0sdplFaP?= =?us-ascii?Q?lUpJWcx+VEabQQ79yyBQbYw/wQdV5BuKwgn7iDVgvOYz450TZMfj572dnu2L?= =?us-ascii?Q?qI7VZskmA2d0yXVLzaRCYQqrA57Kqm85JL+DZZtuy7L2RY/viHub5b9bcWcs?= =?us-ascii?Q?DdKaYyRScz0tTKy2KCXWZpmDPIkegI2j7soNtpIKaGuxrN/XP0RCufa1c/n7?= =?us-ascii?Q?pr8InsGqnBaGLwwoWIzXrM+K77+mSPVK4kcmWyGxGOfW7kZkpxI/NX67DrIN?= =?us-ascii?Q?CBadE7p4UHJghTmEi/yYnmY11h/BbnCsWX4h/t85g4YR45Edr3tM9srJ/m1I?= =?us-ascii?Q?KwFihuuk4SjGcol1FE+zFn3pUhRzrreKXxd80fve4qDfpNsvuU7vPD0T7oqN?= =?us-ascii?Q?RnepJmTmr74rhd4wNEeVcntYOr3+3KqtQZpfxyEyvNm8n6sV1yfZ7nMkjpR4?= =?us-ascii?Q?G8+DaVguE/mx5Rya5FOZL2zUPhv+MMDCeMp8/gGxmyZmmghHuUIhD8BiQv+m?= =?us-ascii?Q?z1Qxb9shgIUh8KPiQ+ZzV+MUCpiiwepUDbf5KumKFWoPRzgvCm7MjpWiLcLv?= =?us-ascii?Q?SFOYzcvx9Wa2ZZroj6vuK6jJwaWHWGITVe/10zwZTpyxfx4GWHLfU3y5nIRS?= =?us-ascii?Q?Blb6CAvWtMFoDhYvLc6QsoOZ+m8EQgK4lsngBiNxPbFkjwY8sbA4AgkpiZ12?= =?us-ascii?Q?7qLbXzKlGMtla7oDSAhLWpW3fS/gDU2m5XjD/LZoywrEsGcJuRGeFOTKE/Td?= =?us-ascii?Q?jlX5g/eEaM2cL172w0puvMPNy6FnAxCu9rxT9hW6U4x2duBjjdtqBzybDdx1?= =?us-ascii?Q?Kg=3D=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: fSrMFDFRIF+DgvUYAstiva4GJK6Usrp5MIulsg8vsmaupntZhp+vPVTnh/jKXQYsPMYGluM1qyUDmnyvdH2fK8dHH2M/C/zGyM0AnkKUUC9RwVfyFQqkdCCZ/51ZtkOUe/h1xDeHjkUWHbVIr5yehpe6EqDdZGMfSSsQid5MwHJizWEhKz7q0QNUH0L0qmoJNl8Y1mTe3hJkWIpBZWM2IhBNIlOuUGhepa3h/Jr7uCpLWAmLdP5ptZCZhTrX4UWMjbfU7cQn3L8Rz6BunMwB8hvWjQ34Y9ZmyPb+KhjnmeUb6TATFLyBunvPkW5ZPWn+8KODWA8fV75Ri1sUt74bD3Bqi8d6E8diy4weeNcB2jcMuUbEAy3p6A6CPkU2njAed0Q+TO4b1mh2xRAIdUjPZc4mk6l5Hu8az5b3WdmA6cStvNyavGS7Nw40of/xlsb/8LBlvpHOYoDutZTD4nqh6a6bQtcI7QeFn6H3Z0ITWaj7RvRA2HP4FrCR5DIsiUNJovFn0bp74yuaicMzILwtpOuOttPrUORQHqmK87VEF4Q+rAKDzEyxkgjlLbISh1kcy6HF4eZiq/gIHKERWS3ulWTS7QihbPu7/HGksi9srz8= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 8f75e6ad-4073-42eb-04c1-08ddc552d36f X-MS-Exchange-CrossTenant-AuthSource: DM4PR10MB8218.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Jul 2025 16:56:08.2447 (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: qOH4jY26NQxsz8i3FR0+hwDI0XSiavZNi7MKmu/8wRt0iKzgxrjK7ABonWSG5ghevAwUoo20dylL/sacmwA8zYEhCshglgGFMrgJbk1NXA8= X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR10MB7098 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1099,Hydra:6.1.9,FMLib:17.12.80.40 definitions=2025-07-17_02,2025-07-17_02,2025-03-28_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 phishscore=0 mlxscore=0 spamscore=0 suspectscore=0 adultscore=0 mlxlogscore=999 bulkscore=0 malwarescore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2505160000 definitions=main-2507170149 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwNzE3MDE1MCBTYWx0ZWRfXymDXwxdFD7dD gOEmCOM4t1fgflXtyBTXsrR5GZz9WKIS/HXetglz0uEdy1/ibLJUOek4ykYZ9okUwhxf2sP4M/T vLIf4i6oywXnbhmsfh740FXuysRQYfHXdarRw5AkdBX+NEBtEIccjQBhTCsVteY9gGTm5Pi9a/l gA//XwAyyXBaadkuzg6sWqhcS0tBfgNIQ+TRMcaW6Ia1fb3NV6BIn6j4zpcQxSHO1uO4VhObbxz y/ub3ALKUz3iMVQ1u9oyWeTjmEqvgW+n/mPYuH0xb1zoCPI7PbiWxazRHjuB+HBRsaN7Sfo9aaE DsGZHlBFrcQmrSKYPR5JqZ8mFXpTcs2EB2pf1eqCKliyxlIvTmrYghZ0LnoBMaBju72VI9/vq50 aNCD1ZwxRn3w/VlQpLyD6LRvKt+cVJ2LOOFWko2LYjxgBlt+IWzV1qpBjKi8GT3242aKYmx8 X-Proofpoint-GUID: fGus6e9G_uGtfIBNUnj3qdlcnljAdbLl X-Proofpoint-ORIG-GUID: fGus6e9G_uGtfIBNUnj3qdlcnljAdbLl X-Authority-Analysis: v=2.4 cv=J8mq7BnS c=1 sm=1 tr=0 ts=68792b3b cx=c_pps a=OOZaFjgC48PWsiFpTAqLcw==:117 a=OOZaFjgC48PWsiFpTAqLcw==:17 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=wKuvFiaSGQ0qltdbU6+NXLB8nM8=:19 a=Ol13hO9ccFRV9qXi2t6ftBPywas=:19 a=xqWC_Br6kY4A:10 a=Wb1JkmetP80A:10 a=GoEa3M9JfhUA:10 a=yPCof4ZbAAAA:8 a=-y-8OK93jEFqfRmHsx8A:9 Content-Type: text/plain; charset="utf-8" We const-ify the vrm flags parameter to indicate this will never change. We rename resize_is_valid() to remap_is_valid(), as this function does not only apply to cases where we resize, so it's simply confusing to refer to that here. We remove the BUG() from mremap_at(), as we should not BUG() unless we are certain it'll result in system instability. We rename vrm_charge() to vrm_calc_charge() to make it clear this simply calculates the charged number of pages rather than actually adjusting any state. We update the comment for vrm_implies_new_addr() to explain that MREMAP_DONTUNMAP does not require a set address, but will always be moved. Additionally consistently use 'res' rather than 'ret' for result values. No functional change intended. Signed-off-by: Lorenzo Stoakes Reviewed-by: Vlastimil Babka --- mm/mremap.c | 55 +++++++++++++++++++++++++++++++---------------------- 1 file changed, 32 insertions(+), 23 deletions(-) diff --git a/mm/mremap.c b/mm/mremap.c index 1f5bebbb9c0c..65c7f29b6116 100644 --- a/mm/mremap.c +++ b/mm/mremap.c @@ -52,7 +52,7 @@ struct vma_remap_struct { unsigned long addr; /* User-specified address from which we remap. */ unsigned long old_len; /* Length of range being remapped. */ unsigned long new_len; /* Desired new length of mapping. */ - unsigned long flags; /* user-specified MREMAP_* flags. */ + const unsigned long flags; /* user-specified MREMAP_* flags. */ unsigned long new_addr; /* Optionally, desired new address. */ =20 /* uffd state. */ @@ -909,7 +909,11 @@ static bool vrm_overlaps(struct vma_remap_struct *vrm) return false; } =20 -/* Do the mremap() flags require that the new_addr parameter be specified?= */ +/* + * Will a new address definitely be assigned? This either if the user spec= ifies + * it via MREMAP_FIXED, or if MREMAP_DONTUNMAP is used, indicating we will + * always detemrine a target address. + */ static bool vrm_implies_new_addr(struct vma_remap_struct *vrm) { return vrm->flags & (MREMAP_FIXED | MREMAP_DONTUNMAP); @@ -955,7 +959,7 @@ static unsigned long vrm_set_new_addr(struct vma_remap_= struct *vrm) * * Returns true on success, false if insufficient memory to charge. */ -static bool vrm_charge(struct vma_remap_struct *vrm) +static bool vrm_calc_charge(struct vma_remap_struct *vrm) { unsigned long charged; =20 @@ -1260,8 +1264,11 @@ static unsigned long move_vma(struct vma_remap_struc= t *vrm) if (err) return err; =20 - /* If accounted, charge the number of bytes the operation will use. */ - if (!vrm_charge(vrm)) + /* + * If accounted, determine the number of bytes the operation will + * charge. + */ + if (!vrm_calc_charge(vrm)) return -ENOMEM; =20 /* We don't want racing faults. */ @@ -1300,12 +1307,12 @@ static unsigned long move_vma(struct vma_remap_stru= ct *vrm) } =20 /* - * resize_is_valid() - Ensure the vma can be resized to the new length at = the give - * address. + * remap_is_valid() - Ensure the VMA can be moved or resized to the new le= ngth, + * at the given address. * * Return 0 on success, error otherwise. */ -static int resize_is_valid(struct vma_remap_struct *vrm) +static int remap_is_valid(struct vma_remap_struct *vrm) { struct mm_struct *mm =3D current->mm; struct vm_area_struct *vma =3D vrm->vma; @@ -1444,7 +1451,7 @@ static unsigned long mremap_to(struct vma_remap_struc= t *vrm) vrm->old_len =3D vrm->new_len; } =20 - err =3D resize_is_valid(vrm); + err =3D remap_is_valid(vrm); if (err) return err; =20 @@ -1569,7 +1576,7 @@ static unsigned long expand_vma_in_place(struct vma_r= emap_struct *vrm) struct vm_area_struct *vma =3D vrm->vma; VMA_ITERATOR(vmi, mm, vma->vm_end); =20 - if (!vrm_charge(vrm)) + if (!vrm_calc_charge(vrm)) return -ENOMEM; =20 /* @@ -1630,7 +1637,7 @@ static unsigned long expand_vma(struct vma_remap_stru= ct *vrm) unsigned long err; unsigned long addr =3D vrm->addr; =20 - err =3D resize_is_valid(vrm); + err =3D remap_is_valid(vrm); if (err) return err; =20 @@ -1703,18 +1710,20 @@ static unsigned long mremap_at(struct vma_remap_str= uct *vrm) return expand_vma(vrm); } =20 - BUG(); + /* Should not be possible. */ + WARN_ON_ONCE(1); + return -EINVAL; } =20 static unsigned long do_mremap(struct vma_remap_struct *vrm) { struct mm_struct *mm =3D current->mm; struct vm_area_struct *vma; - unsigned long ret; + unsigned long res; =20 - ret =3D check_mremap_params(vrm); - if (ret) - return ret; + res =3D check_mremap_params(vrm); + if (res) + return res; =20 vrm->old_len =3D PAGE_ALIGN(vrm->old_len); vrm->new_len =3D PAGE_ALIGN(vrm->new_len); @@ -1726,41 +1735,41 @@ static unsigned long do_mremap(struct vma_remap_str= uct *vrm) =20 vma =3D vrm->vma =3D vma_lookup(mm, vrm->addr); if (!vma) { - ret =3D -EFAULT; + res =3D -EFAULT; goto out; } =20 /* If mseal()'d, mremap() is prohibited. */ if (!can_modify_vma(vma)) { - ret =3D -EPERM; + res =3D -EPERM; goto out; } =20 /* Align to hugetlb page size, if required. */ if (is_vm_hugetlb_page(vma) && !align_hugetlb(vrm)) { - ret =3D -EINVAL; + res =3D -EINVAL; goto out; } =20 vrm->remap_type =3D vrm_remap_type(vrm); =20 /* Actually execute mremap. */ - ret =3D vrm_implies_new_addr(vrm) ? mremap_to(vrm) : mremap_at(vrm); + res =3D vrm_implies_new_addr(vrm) ? mremap_to(vrm) : mremap_at(vrm); =20 out: if (vrm->mmap_locked) { mmap_write_unlock(mm); vrm->mmap_locked =3D false; =20 - if (!offset_in_page(ret) && vrm->mlocked && vrm->new_len > vrm->old_len) + if (!offset_in_page(res) && vrm->mlocked && vrm->new_len > vrm->old_len) mm_populate(vrm->new_addr + vrm->old_len, vrm->delta); } =20 userfaultfd_unmap_complete(mm, vrm->uf_unmap_early); - mremap_userfaultfd_complete(vrm->uf, vrm->addr, ret, vrm->old_len); + mremap_userfaultfd_complete(vrm->uf, vrm->addr, res, vrm->old_len); userfaultfd_unmap_complete(mm, vrm->uf_unmap); =20 - return ret; + return res; } =20 /* --=20 2.50.1 From nobody Mon Oct 6 19:10:40 2025 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 0B43C2FCFDC; Thu, 17 Jul 2025 16:57:24 +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=1752771446; cv=fail; b=F7aHrelaegeCoWZaTFr01BLXjODBhOThe+aSA8afOhH5VLs/fho2b5QY2NogpKYSLNFALNJd+KnLFlx2cWQu56AQt3lwChXmpxb8j+FB0kh+bXyv+jihDsGRivdFWTKFUauXIMDOiq94wfsCwrMGlbfuTE95lk6chpFajPSq6ZQ= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1752771446; c=relaxed/simple; bh=myxjXRNtsF2ObIzZxRmLFiNVJVKHjmEOhT22GdYZ7xE=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=OKculoEccpmsxH2Puq0Da84B51XqUefo7xIfHx8IeYwH+8MBMkyj3ym5f53isg5rZb/EPkv8q7oT/b818p7C79jkf6Sj5UanvQOdapB25aR5KwqkwVNFoBZCWAClZpCsiU3NezLNkXfL3T91B5q3PPL1IKahEZYnY92TirF+0gk= 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=AJSIEnrK; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=WkmIzhR8; 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="AJSIEnrK"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="WkmIzhR8" Received: from pps.filterd (m0246617.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 56HGCSTE005754; Thu, 17 Jul 2025 16:56:18 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=pdb1wpw54s8wwl2mv0ErlIiBdZ2FUydxJS142NDlmAY=; b= AJSIEnrKwa/eFtwGKAg4e9NjkOZXJmV1Ua51B65CyA6Oyjo7F8/xQ6RdJPMAFy5e CFQio/TqZtce3CYBdabHBKZXkgvCtvDzYWLusR4ruydnwCL9BSgU9CSN7wsc93pR lTy1lGx7qd6T9NR9sKb8hWD6HWh6Y9cBO6ZaaFWBBiQWWM6CaHyVZWcm9CMAcCdW d00G6d9PTw5gASHtqEF6KZBIveNwViaUwp6BhhvDTlPZT7Y/sbWdl3TuJUFR1YTu dVbVAI459eCG/+CNGiWRnPzEuBh1+wQtJA40q2Bh8yMm9WZiBnuafLOlXxZSKf1G nv+fKQFOND+XP4cUCUqdvQ== Received: from phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta03.appoci.oracle.com [138.1.37.129]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 47uk8g3mwb-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Thu, 17 Jul 2025 16:56:16 +0000 (GMT) Received: from pps.filterd (phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com [127.0.0.1]) by phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (8.18.1.2/8.18.1.2) with ESMTP id 56HGjnju024098; Thu, 17 Jul 2025 16:56:13 GMT Received: from nam11-dm6-obe.outbound.protection.outlook.com (mail-dm6nam11on2057.outbound.protection.outlook.com [40.107.223.57]) by phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 47ue5cxyg8-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Thu, 17 Jul 2025 16:56:13 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=tn3+D1dDzAglXxcVoo02KNtnLWrFgda1tVWubG62iT4AqBEwVNLt9cEljm0/kVp18akqVp4UWJwdSmsuZsCQulcCgG+Gn5CZULVxM68P0NZRXhd3Dy70TzbYsY9Zy/B1rdVFaBPoSJAaIfwIX++K5FDMllCwcatZD8W372WNugB6IFp0cdvp8dDtFNHvCxRXpxMrx5R28DGaqB3YydMw8lcNkaqBLoXDxchQ36o0V7gMKgYfrgl/xZpYNztE9sI2IKxhaeLdWDcXw6D6gh8uhnDmYb9GNjuT1y2YP0hlL5yhD056QemGUyhc6dou808D9aJINUJSbuA1FMSjYb4TuQ== 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=pdb1wpw54s8wwl2mv0ErlIiBdZ2FUydxJS142NDlmAY=; b=eXhmKN4eDKBT+cXJLdNVOYj7XhN5OQWRz/owSDdsIdy1mQD5tnKZzBNSiN/ZjfR8frAGiltVberWWTiUjqVz1On3B/9ESq/AhpLh1azHzD7HJYH+c6Y4RmHhURCqcaLeA9f7A6uvNfWRaZY+qjk/e0xp7zE1rfQBQvuznxlBPZdFgqeWBA2/wyCmntjJGrjyQwUHnzoqigkCvqMTVot5TpzVceALShg5AW1PjJ8+zcI96Gxn6QtMGXEDqxX68nmRb2GlSkFbWknws9VkupcL06IhKIvFOvi6ZY8jbFEy624+zsfKqmE6H+rLMOTM//cvAPWaXNay38Bvq9zynyyjHg== 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=pdb1wpw54s8wwl2mv0ErlIiBdZ2FUydxJS142NDlmAY=; b=WkmIzhR8nN++k+YG5MDzaSLBNux6IeOC/LFBtxbs+FLhVOH8RRAzi548/cUODpip08+Q4B3kGoFpwojXcJsdCA8mRajYJGIFQZbPRXk0uh/dHC07LsLaAaZa6PtGrGjTXIWpqu8Hiprl7PgGmbCZLDTc+WRe9OOn7AqJPPu4RBM= Received: from DM4PR10MB8218.namprd10.prod.outlook.com (2603:10b6:8:1cc::16) by DS4PPF66324196D.namprd10.prod.outlook.com (2603:10b6:f:fc00::d22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8922.39; Thu, 17 Jul 2025 16:56:10 +0000 Received: from DM4PR10MB8218.namprd10.prod.outlook.com ([fe80::2650:55cf:2816:5f2]) by DM4PR10MB8218.namprd10.prod.outlook.com ([fe80::2650:55cf:2816:5f2%6]) with mapi id 15.20.8922.037; Thu, 17 Jul 2025 16:56:10 +0000 From: Lorenzo Stoakes To: Andrew Morton Cc: Peter Xu , Alexander Viro , Christian Brauner , Jan Kara , "Liam R . Howlett" , Vlastimil Babka , Jann Horn , Pedro Falcato , Rik van Riel , linux-mm@kvack.org, linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org, linux-api@vger.kernel.org Subject: [PATCH v4 02/10] mm/mremap: refactor initial parameter sanity checks Date: Thu, 17 Jul 2025 17:55:52 +0100 Message-ID: X-Mailer: git-send-email 2.50.1 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: LO4P265CA0229.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:315::18) To DM4PR10MB8218.namprd10.prod.outlook.com (2603:10b6:8:1cc::16) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DM4PR10MB8218:EE_|DS4PPF66324196D:EE_ X-MS-Office365-Filtering-Correlation-Id: 2b707bb0-816e-4fed-a47f-08ddc552d4b2 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|1800799024|7416014|376014; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?E1VaFlwDijBBCDLXc1WD3tacgHrlKDWFb8DvfQS+CcR8DdGkq0eKIatd1LXQ?= =?us-ascii?Q?RyMr9LXlDNNYOAxjE/3AeAoH8hSQHRF/pl5Y+Z3cSJzg1ZjsO7+pK1OhOAyu?= =?us-ascii?Q?qqSUu35/J7LsAu+A5z8BvM5OBkc6NjUNU/12pbwezmSmVNnYPEzYNPDhdlmJ?= =?us-ascii?Q?g1r+RwQU6L4j0I5Bj+9lCzInAfhZpBNaqVaeOJlHbLsW+7sPjescAiK4goo+?= =?us-ascii?Q?tjRMPb4GjxERujbdLu1regzIYROeHwC9CouirSED5lBWpQvTVp3BRintwExy?= =?us-ascii?Q?WCr1y/tvqjXAL33x/pmpQyYxDosefCK4N98sn82tjDhg8dBc6RzSB/Sy4kS7?= =?us-ascii?Q?bhqPgZeVejIjvv2YbiQM8Jsh+7WVoQuTM1wMXizRAQ3zUoAY7cgRrnY0GTvL?= =?us-ascii?Q?UUB1nKPbJy+mGteVGVNG0HnApVzsUzjnfMnKyJKAt41TD4gA3qMFfX6gJ/se?= =?us-ascii?Q?sqKmCOlinWg6UnrxNRsEAb6ToFNzbJwcJY4A92vOS9gHyYay4pD/NyYPkbgP?= =?us-ascii?Q?auXAByu/SQKpjXvzvqoyPLTeQFuldRp6Gs2YlGumm/vDUyRjohc2HcRcK4Jw?= =?us-ascii?Q?abu/tMuycFo7nQIcRm4cL5xqF8BkRuVktRSAEZfDPW6niMsx3rY+Jc+SWkuI?= =?us-ascii?Q?BN5x0ZAuTgYTPtLGS6luv72+uhp1YAx1LVonb6VrhQiqHxLk9ug24P4PkVLc?= =?us-ascii?Q?WYeijwubwdS8d/s/U38/nBEmaUnuZ73BAkXtTFJI23hHLK6ZaQEBZAckNsBm?= =?us-ascii?Q?cG457XRBpGk9YW6Wn4oB4NUteSMLipQW+JuxBvdzhMZtk/Zv4xQWhTcgUFPQ?= =?us-ascii?Q?nHhYfKWjKfj0tEQGiBciUIscrGBF91V6+dPv1BAAVXd6sT9lzbqBPZK49i0w?= =?us-ascii?Q?RWNpE9WQAA73sC843+NbR6GDr49t/eMHsyraC+rIu33o/0HYRCvbqm5d5y3u?= =?us-ascii?Q?MninfC4ZppUsww2XGT9/Ih8e4MzSyf3q/i8Z4iy58D8uTPXrMjt2B3ECvZTY?= =?us-ascii?Q?aJkeZtXCXomeYjST8fNDF8jo8Jj8jcdvyjM6nUh/18yCmVi4s6pA0YnQkKRq?= =?us-ascii?Q?2QJFMHSNx+XN9mdTAS0TTv+esk6UskRg8ZdUPFpzVK2PBfJXJWn551/mpJOr?= =?us-ascii?Q?mDaV9Srh6a5+X3T27JMJunvUBjJoVLDHbgHM8pDqbNvCUQtG6P7YcRC45WxD?= =?us-ascii?Q?jcqtKQ3I0a/aCWkN5r0BCXTP7nrrpS3KdAjs5qYRrlLjPofvUujFW4uZ8X36?= =?us-ascii?Q?26GbAMMMH3o79fRJkH4RLglqlrbAa8L89iMDo3BfHXlb+rVoCh7EZPwWkAmh?= =?us-ascii?Q?leqZ57107KWODgVy5HMdu2BCoqNsCa3w4ZMl2Dr8BP07dWppKmftnVJf1lUw?= =?us-ascii?Q?2Sfbp2zr5lIFkFOzlNsoiZDPrpEom8h7unK/rc930jmVGu/ulAbOzwe7ROMZ?= =?us-ascii?Q?xuojxK1UBW0=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DM4PR10MB8218.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(1800799024)(7416014)(376014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?IPF/yPU6lDuj7RBAK0z3BDRsrcRLTUXFJXgBrRMCLvqiUsrEJkSRejMveZRM?= =?us-ascii?Q?51NE5Beb/3irYmp4ZWU5C7fVVQ9SrXFNBGIo4UV75X52udnkuwOu0dR85WyI?= =?us-ascii?Q?Dm6b5/PFYcMTwjUqMees6jGOWuk87O6r1dC4UqpkWwbSqZVlW9JNEaXcNNtX?= =?us-ascii?Q?FvqdtMRP1a1kB4qZPizfy04JPp/jf3roYCMIRyBtNoYhZfNu2Pv6LG3sHE/M?= =?us-ascii?Q?RqNMC576n63ueBk6R3YZpUHHeIb8z3IZCmIEH/5vfW/4q64kC74p/SZlG2BK?= =?us-ascii?Q?0UNuWNw4LlIuFsh8pHpD71KiLTa+Whf44EeegZt2Vgpt6MqNuCVow93N+CeK?= =?us-ascii?Q?lSIdlMzB+lMnBlbLzOZvtVz/qNHlzd/Ds6+3s99VjGVtQ/HClruFEDHbRyeD?= =?us-ascii?Q?zmcyy7c9GJ58WKCo22o/IquHfzEg7vsFZyQlZ+Ixa9Kf2fvQid+p3gIknWg6?= =?us-ascii?Q?C3zX0ww+3IDDvEocWkzA1MIf6uyZWXrg9u4u6tiYrzxbB8GojunphWBMd8ht?= =?us-ascii?Q?/o/cyVFiBaL+Bw6k9j+yW043k+x4KNKgv7rKNJ/175eFkLKEqbOx8MxD6YR1?= =?us-ascii?Q?a7TTb/oXzkys16hJo8uIWdf6rYeuSBgRbT6EjYtNl0vojWX9xLGkvgGiSUXH?= =?us-ascii?Q?ddmFRIUwm2OO7C3oAyFc5b2dOHxkfueadZFn1Y1V1jGaKj5stbtKN+wKHmyd?= =?us-ascii?Q?bA83hjoft8DVprPifdAju1Qiv9DnxhxjqxFXY/AsJ3kjPUBl7RPqVBLWCAOB?= =?us-ascii?Q?MJni3EUOjFT511qmfGIPhkjEAJ4uBFtcVq6u1hu+Ccy2k3b6yCPUOkgdGiou?= =?us-ascii?Q?C8uEQWqwTjqR05Wm21IQFNymAZKk7KIdnLRp50zk16cHpEuyNbqfp3rMdlLz?= =?us-ascii?Q?MmRtT56PNUwy1ti3eEniuKnaviurhzRclFZb2P8PdtD+t8nm7Wjzj/eMGgS6?= =?us-ascii?Q?p4/U507MN/QMCqIUlmwHtbVymbqXFaDsamBPWKxts5UTwwD99QmspnHDSo2a?= =?us-ascii?Q?oS5GMvMBQPRXZwUx/PSQPcOIjmjfISk60YUYYxo9mZr54b7okvTOEUrjEd6U?= =?us-ascii?Q?vVFsNFi2NFNzdHg3r5P2SNWogWhVWDRyhPLXxcF7TQeiVQOoFGJqyabTcowq?= =?us-ascii?Q?pjYiiUdT/yn3L4soKLxchf1xuZhvT9TiASrrFkDBWFXSrNDkxEr3UwFG21Jf?= =?us-ascii?Q?CKp7YgdtGm+OoVqQ3BoFE2TPmkI+O4NE+e1DFk7YSufH588Law/Q85wacMBE?= =?us-ascii?Q?B0tatwywge1j10cEGHWafcChXs9pmZW1iYFsPwJtEqyVMH96UXJVyyvu/D7x?= =?us-ascii?Q?usAIo57Uf5kXwJZ+9VLmmrhkN5BriPwcG0JbTka+cTYhM77E8NBysHn/54Bi?= =?us-ascii?Q?8jjBoHclpVdegvMbOmhKo5v2Vy/nh2wK4m5m5PsmZ3lPVSD38yPgHI324yeX?= =?us-ascii?Q?o3d9lZnqyBLBtSISbGSTeZI187t4FG+fN1vl8lwLTwdftxoEpJiUM5e9JUOl?= =?us-ascii?Q?Fxh8IjbMxGLxbLOyOj2CixkvMETcDh2Nu3VuZI5vEsp+an31UMnqdvJ91uYl?= =?us-ascii?Q?fBj3t0++Eb8SSWkVs3pqEjbrQGItFJvG7iCru3irokwxcDtFMw43HhgI3LM1?= =?us-ascii?Q?/g=3D=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: iR6yvnzePEXl4LY7jr0TQU17MIGv2XGcjpW40QRHHvSUuSSFPB7UfEH0bRZ2k1H1aHmtZLBkolgd0KmZCMV3TrK6RUlROX7t58cXpZeT3e7LWMWkrSplaS9zSsduF5+bL2wwANOJ+fIoP3WRO6zwkFSGQXwiqiJqlY0FcS9RLZtRRbybFEHitlwijy8Tw6KOgDvH2+ZWknGu1prl1NVl1+R+2RdpYHmXYLi6zyf3p5pqAr7+IKfmHwG9r6X/NLWWhfF0GnHuvaXLeG8fW3P8jwfpzl9b4Jrc/NvjfqqgNKZmt+pcqKejQcbxaMXFYy9hx9cFm17BVUx4xXV/ZQDCl6CXmC1BHj7Iq5bSbR8vEFWG+Q1gS+7VW2qZ/8hdx71yyUrpxj0DJz1F5I0F9oJ8qh7b5PTXtfx6X71jy0ksGj8r768al7HryPJorUGSpDgnxqUu+TEh6+8F4H97M02ag0tR9hQdUD0P9qbogdvqq6nY/l+7eElXxCpH5PGKkfMbI+XnfUIl7XnpWbQJbh7AW8FYrKgJ8xo37T2RfkZxiAEo3+oNu062DBIjtTLx9nl+NYkRDx8t1MTIFOoD/nkYe4+R7+yGMyIpVbR3C/V++QE= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 2b707bb0-816e-4fed-a47f-08ddc552d4b2 X-MS-Exchange-CrossTenant-AuthSource: DM4PR10MB8218.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Jul 2025 16:56:10.3662 (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: 3ptAv2gg3Wkdof/6LOEHo35f2DROGFPT5713fIOJrIzZkCaIDgsdfrjQt4xL9cS8S3KT+PkycwAn7VR5AZyTXoiqvBKldeg3v8DjdfbFWsg= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS4PPF66324196D X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1099,Hydra:6.1.9,FMLib:17.12.80.40 definitions=2025-07-17_02,2025-07-17_02,2025-03-28_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 adultscore=0 phishscore=0 spamscore=0 mlxlogscore=999 malwarescore=0 mlxscore=0 suspectscore=0 bulkscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2505160000 definitions=main-2507170149 X-Proofpoint-ORIG-GUID: jxsLn6SxItdqvZlf47_MnEqDNIuAKPfy X-Authority-Analysis: v=2.4 cv=Of+YDgTY c=1 sm=1 tr=0 ts=68792b30 b=1 cx=c_pps a=WeWmnZmh0fydH62SvGsd2A==:117 a=WeWmnZmh0fydH62SvGsd2A==:17 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=wKuvFiaSGQ0qltdbU6+NXLB8nM8=:19 a=Ol13hO9ccFRV9qXi2t6ftBPywas=:19 a=xqWC_Br6kY4A:10 a=Wb1JkmetP80A:10 a=GoEa3M9JfhUA:10 a=yPCof4ZbAAAA:8 a=44BLHjD3IfhdABlFFWYA:9 X-Proofpoint-GUID: jxsLn6SxItdqvZlf47_MnEqDNIuAKPfy X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwNzE3MDE1MCBTYWx0ZWRfXzZGtk3F5ZVGF yO0ZxKoEolrcQq/sJ/K9j8Zr6ykk3qe/52oJrHkQ+bmxsk1qVh15bGwT08p6XmUQ5iRJ23gGzks 0kSExnk5altWpOVQE+94fbX7ATODbJZlcQ+rVvLBkGB/CgursPm4MA0DFNpydrRIdSvILtvz25G 2Zd80GSMoq8y6zPcXb/9cBKbY93VAqSMmcpFbSQLY04Ry+JhsqsQYEassGLDvya3QDNl2MZC1M9 yn4T92FLjyIFDvoOYEwB+Yx5ZuorSyavQdtdjega0ELFakfaotb6QcXEqgvsrHpCF/gIj89Hl2H 61LhqbX3GZE/a6wf+fBPCOu3HtlmfCLMztx/kCL8U5eM9Q4b4lYrR7+DB2B8yMo84SsnObeVKXm +pTzlYA9wg+NxwOizQX0SqYt7lOIqKI5KwdX+AFLPypNNQoXMBzTfSVQPEjOLfwUAyrlmJPI Content-Type: text/plain; charset="utf-8" We are currently checking some things later, and some things immediately. Aggregate the checks and avoid ones that need not be made. Simplify things by aligning lengths immediately. Defer setting the delta parameter until later, which removes some duplicate code in the hugetlb case. We can safely perform the checks moved from mremap_to() to check_mremap_params() because: * If we set a new address via vrm_set_new_addr(), then this is guaranteed to not overlap nor to position the new VMA past TASK_SIZE, so there's no need to check these later. * We can simply page align lengths immediately. We do not need to check for overlap nor TASK_SIZE sanity after hugetlb alignment as this asserts addresses are huge-aligned, then huge-aligns lengths, rounding down. This means any existing overlap would have already been caught. Moving things around like this lays the groundwork for subsequent changes to permit operations on batches of VMAs. No functional change intended. Signed-off-by: Lorenzo Stoakes Reviewed-by: Vlastimil Babka --- mm/mremap.c | 29 ++++++++++++++--------------- 1 file changed, 14 insertions(+), 15 deletions(-) diff --git a/mm/mremap.c b/mm/mremap.c index 65c7f29b6116..9ce20c238ffd 100644 --- a/mm/mremap.c +++ b/mm/mremap.c @@ -1413,14 +1413,6 @@ static unsigned long mremap_to(struct vma_remap_stru= ct *vrm) struct mm_struct *mm =3D current->mm; unsigned long err; =20 - /* Is the new length or address silly? */ - if (vrm->new_len > TASK_SIZE || - vrm->new_addr > TASK_SIZE - vrm->new_len) - return -EINVAL; - - if (vrm_overlaps(vrm)) - return -EINVAL; - if (vrm->flags & MREMAP_FIXED) { /* * In mremap_to(). @@ -1525,7 +1517,12 @@ static unsigned long check_mremap_params(struct vma_= remap_struct *vrm) * for DOS-emu "duplicate shm area" thing. But * a zero new-len is nonsensical. */ - if (!PAGE_ALIGN(vrm->new_len)) + if (!vrm->new_len) + return -EINVAL; + + /* Is the new length or address silly? */ + if (vrm->new_len > TASK_SIZE || + vrm->new_addr > TASK_SIZE - vrm->new_len) return -EINVAL; =20 /* Remainder of checks are for cases with specific new_addr. */ @@ -1544,6 +1541,10 @@ static unsigned long check_mremap_params(struct vma_= remap_struct *vrm) if (flags & MREMAP_DONTUNMAP && vrm->old_len !=3D vrm->new_len) return -EINVAL; =20 + /* Target VMA must not overlap source VMA. */ + if (vrm_overlaps(vrm)) + return -EINVAL; + /* * move_vma() need us to stay 4 maps below the threshold, otherwise * it will bail out at the very beginning. @@ -1620,8 +1621,6 @@ static bool align_hugetlb(struct vma_remap_struct *vr= m) if (vrm->new_len > vrm->old_len) return false; =20 - vrm_set_delta(vrm); - return true; } =20 @@ -1721,14 +1720,13 @@ static unsigned long do_mremap(struct vma_remap_str= uct *vrm) struct vm_area_struct *vma; unsigned long res; =20 + vrm->old_len =3D PAGE_ALIGN(vrm->old_len); + vrm->new_len =3D PAGE_ALIGN(vrm->new_len); + res =3D check_mremap_params(vrm); if (res) return res; =20 - vrm->old_len =3D PAGE_ALIGN(vrm->old_len); - vrm->new_len =3D PAGE_ALIGN(vrm->new_len); - vrm_set_delta(vrm); - if (mmap_write_lock_killable(mm)) return -EINTR; vrm->mmap_locked =3D true; @@ -1751,6 +1749,7 @@ static unsigned long do_mremap(struct vma_remap_struc= t *vrm) goto out; } =20 + vrm_set_delta(vrm); vrm->remap_type =3D vrm_remap_type(vrm); =20 /* Actually execute mremap. */ --=20 2.50.1 From nobody Mon Oct 6 19:10:40 2025 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 4F1FE2FD599; Thu, 17 Jul 2025 16:56:49 +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=1752771412; cv=fail; b=amv6JwbteVdrdR9W3oZCue0O9jOim1S9AuEFtrr0mZT1j8cPyrYWPUOIyEoQV2h15VMDrsbuvZxplOAyOOr8Rq3xtui7Z5b4RcY+0lpQzk8JEgH+f2A3ME0IZrH4g1aq8Yp5Udf2XpRorffe9R0nVq9w+FadRv6sR2ViWoXEZ0M= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1752771412; c=relaxed/simple; bh=NBrT1Od29eBbfxjcaH2a0zs6Sy/iV0NDAMrC5PAcrNY=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=eqpliQj4uUGQ4dGkuzXBXOB0KcSIdJnG+mIm2tZCoqDcu0OlNlD3RdF3odkUxQPthRX6KjgSwMd3e+T8D/2nBL8SX0cOJNXnTPxJjMX47Xjq933CgxgBCbfTk8KH2QIG6pGHY9+qZtL9Q4sFOHJy1yfyz56kD2GRukZDB+EcPMg= 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=ZN7pjjLN; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=vQLqYmIN; 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="ZN7pjjLN"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="vQLqYmIN" Received: from pps.filterd (m0246632.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 56HGC7OY010970; Thu, 17 Jul 2025 16:56:17 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=0X5s0Gy0EuWbHF8uqiSSwLL8tE5t8Xwe+P+OfrrxOaY=; b= ZN7pjjLNFUbJNtjFOxm7N2od7ffFKEPqrsbU53bsSsbsjRkZmk1rxBK6DBZBga// VF5bxF9g4Jh8GHLZiELeuGqqSa5lPd4nqzyW/NfD4nUzGC/o5ongNBZIP6JOMX38 qzf6OSFAWGM0DgtxqBV3ZSjlUXZ2nzpcxiRRhBzPGVPCTDKn3zrqV0aFU/5Z3wyG WHpKCmtNp4oGX6DJWd+4GT/KRHaQ9kxPmPYEYrFjwByXuLHgYJ5XG0X5zhQhJIqy 18qRjRb8m/YF4DLrkgRhSRaM/idy72aPJS8UvHjcbNAyAEwqdiCmQJR2FBwihk1S kw1POLG2Z8Q+3lNaVeEBww== Received: from iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta01.appoci.oracle.com [130.35.100.223]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 47uhx83smn-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Thu, 17 Jul 2025 16:56:16 +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 56HFGN0C013788; Thu, 17 Jul 2025 16:56:16 GMT Received: from nam12-mw2-obe.outbound.protection.outlook.com (mail-mw2nam12on2081.outbound.protection.outlook.com [40.107.244.81]) by iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 47ue5cgruj-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Thu, 17 Jul 2025 16:56:16 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=u6pF0/dvT4itaVC86HRSeL0DPVLWOX3hyhAXZ5/UeF/Jr+WrXPvsKSoZlRGdQbCQz+o17ZZx17nuD5ipgcK5FjUGL1PhkweO6Yxir6n2XULQWX0OUWm9LSe/6xUPVseba4uw8CwyyoYI/+D0IR1fSnTrAg13uqQFRtAorFMgxVKyOgCl5ttSaUbzjCamIngg3YAJZDl2QkwkknhR99OW4fXTdMN5XS0Z/R/dssA2opHfqXzcwrvG02U+3KNFSaEy9zOuFh1KlZyKQz4EZVeDneGDf5tgdMLXFTXd5tvYB2fHOPPfnTPpyJbQ2pW/rX7hgjQxTvKzf00N4x3/WBjgaA== 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=0X5s0Gy0EuWbHF8uqiSSwLL8tE5t8Xwe+P+OfrrxOaY=; b=l1QOmFTKk2FiOhlVySJwOlieGxdWO1Sqf5YH7DnsEm96H5t0nURbnhi9/azuqmthdEmi9mNaZS/yjtCV3hQneCe5rzTWvm/d5hRg2uQBR4InJcYKtFqn7yv10J5LHggk2sFkJnwdmkJIIMvY4BP64ZiAUdJphP+5I7D3b315vxunLElQzhQUwJfRdDJ8Wnmq9Dn1CnMRrsINUKD/WvqZuTGgmUlP19BDduaieWzmeBzTTOHFyp8L9cPdgy1sdbB2V7kE9ziil4nI/afBJonwUTp3xIM0dsDY9muuWFflyW6QgVvyjeK5/hKJ+BVin/QETOtCtddrGyUwfNI+KarPJw== 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=0X5s0Gy0EuWbHF8uqiSSwLL8tE5t8Xwe+P+OfrrxOaY=; b=vQLqYmINMCX+EXetPbeJVqGsCjfso11GvxsXEs9GKYKik7JKZrS9id38O9JFNeR5UpUTqvomCMTmMNffBupNvX9W9DERZtsEFCPaVZK9XAp+ytYrgtlPIK+aIv6I3ggRWy+tq7Ft1hrMFXj1ED0y+CDF5nko7yGrM/UlgD6ZsXo= Received: from DM4PR10MB8218.namprd10.prod.outlook.com (2603:10b6:8:1cc::16) by DS4PPF66324196D.namprd10.prod.outlook.com (2603:10b6:f:fc00::d22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8922.39; Thu, 17 Jul 2025 16:56:12 +0000 Received: from DM4PR10MB8218.namprd10.prod.outlook.com ([fe80::2650:55cf:2816:5f2]) by DM4PR10MB8218.namprd10.prod.outlook.com ([fe80::2650:55cf:2816:5f2%6]) with mapi id 15.20.8922.037; Thu, 17 Jul 2025 16:56:12 +0000 From: Lorenzo Stoakes To: Andrew Morton Cc: Peter Xu , Alexander Viro , Christian Brauner , Jan Kara , "Liam R . Howlett" , Vlastimil Babka , Jann Horn , Pedro Falcato , Rik van Riel , linux-mm@kvack.org, linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org, linux-api@vger.kernel.org Subject: [PATCH v4 03/10] mm/mremap: put VMA check and prep logic into helper function Date: Thu, 17 Jul 2025 17:55:53 +0100 Message-ID: <15efa3c57935f7f8894094b94c1803c2f322c511.1752770784.git.lorenzo.stoakes@oracle.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: LO2P123CA0078.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:138::11) To DM4PR10MB8218.namprd10.prod.outlook.com (2603:10b6:8:1cc::16) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DM4PR10MB8218:EE_|DS4PPF66324196D:EE_ X-MS-Office365-Filtering-Correlation-Id: 81b9dc34-6f08-4209-8341-08ddc552d62b X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|1800799024|7416014|376014; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?/JvltEUBo2x2voFcJHXb8yhzLq5SdBRLMUgEl4MpQJt/1XEQKoVECqXTOJsV?= =?us-ascii?Q?XUALCSqixpNEMTRrI2qeOnDjDo6CrahM+orFOztW1SW7EMtfPdKWp2fbMalo?= =?us-ascii?Q?gS4hyIVKmF7gC+/QdqKzbTvxu1CHQjoCpVms52iRfuyS38OniS+ISDSlVNOR?= =?us-ascii?Q?UtkgVvGCVvxBv67+DwZm5tSW06x5hnKzb5vqoQReVHP0R83FptRrjGhNGtGX?= =?us-ascii?Q?lXLyX5HwtQIdkf4+DgnSxj0G48lA9aIn2KyUAK71ciQNaTDikzCcPa7mXQcT?= =?us-ascii?Q?RLpiB1eo5+OXMjTmITyWfxk5yhxmY5TPw4ss3+qR2h1w6wnFR04Y+aGqNdO2?= =?us-ascii?Q?+QePNPnM69VSlbbqqyT6wTPwaNdmVRJGMaldQ8H8cbnxBBmn+aVEazWtdCZB?= =?us-ascii?Q?6v+TnViQeSb3H2x/pn6EL/vgCuWjkq+NAFVTIMjh7ASPhmuIMnkhrh16ynGi?= =?us-ascii?Q?V+QKFSTXKu5SJVOxmKfKRpP9aM+GVhIXiVOtG4RBxUx0OSN9o7ZKstMtZ9T7?= =?us-ascii?Q?Dc3I13mGgrPolTE5IDz5tHQ+8IywoUM7nkt56/0hdbXL3fpDScJll20Q4/XY?= =?us-ascii?Q?H36PFYPhISC2ouljhX04dLdvPUVU8rrw4PdVSe9bzvCkHdVCG8lVIckaEmVr?= =?us-ascii?Q?gPtz7xi/pvjWymCWUbsIhsoqOfS01vLc7Qnrbxz9CqLvVQ5/XFVYHhs4fYXT?= =?us-ascii?Q?rbKK576CKSXWB1eQpNoHkTd0LSa4bg56RqFAJXXXHXv+FSOGtWgsC7n7oWaO?= =?us-ascii?Q?bhNhLBayv5LSVZmBHrSvGW5nAJvnCIRtgBf43DP6mZzba0aj9nZ/9GyWXb7n?= =?us-ascii?Q?h/HV7BKLFdt//7DPJVK4Am14o4FERZk0KxU/9H0t/avH/pUInCKjiu4Y9+nf?= =?us-ascii?Q?kT1uyZk5Ig0c6bBaTsrvDJeNSw2SOR41S5bGxm0OIKDx8CZSz2xsiXR5h8hU?= =?us-ascii?Q?JNHmKm4lICwQ7dOkFo0yXJ/o1Ma3PT0CNx2ZherD4xQKY1lawW6fOUfQ1n6v?= =?us-ascii?Q?7ha9+XGXuYI+RWh2Ed8yTmhWLO0IgSkyZ1gtpz9VDQnzQ3D3B70Qkkp2q1C2?= =?us-ascii?Q?bF4FULpuIsh2Of+q+t4eVVDYG1cAA663zUF4FPYahAImWMlOGOGmw9l2Kowl?= =?us-ascii?Q?H2fiTUOMP3rtFY4T2ZXH4y2i/crsfWWxe/ZSlekAylW737tJZdVKEVRN2bR6?= =?us-ascii?Q?t3DRmvAfpuN1hxxysBj4TtN7Wvh2Qe7NFFj0sPPtyxBZ4O3doHR9RX3IwiCG?= =?us-ascii?Q?rkbFD6a+2UAny+GzAGk3wbw3GMT4n4ceRgRk/SbmADuGwFp8hY8ITOWMhEfK?= =?us-ascii?Q?YWrLe7Za4lIH7PDw+Zo/dyy4iimErw7+ZYOoJOKax+5eyVVmfoZ3ZIjyc5gp?= =?us-ascii?Q?HG68oGZ+WSq4PKRjFpNdjJkZCfkb+d6TU8+ipnMOls2pvFxV8k6qmyaYcto+?= =?us-ascii?Q?HNXJXVpM9I8=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DM4PR10MB8218.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(1800799024)(7416014)(376014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?pEKr6+AZx3RxHJMdw0zkuNSyfTXzrMkYC7U42dTo+oChtvyf6KLav7WtNKha?= =?us-ascii?Q?/R7vYr95gKZgXeIJCUT6Bt347U+rjwb6+4qhsM7UbqLtx3EarZpFjf1Cww8m?= =?us-ascii?Q?tiZcMOzOZsU+H3aWUcwczmZ+RfzmQ0Wp3A8fyBh/IT6HeRJYukRcNC5qJo1v?= =?us-ascii?Q?fij0c4tQH3ZNY53K1nEL/gMiSMpvMNxzPA0eP4NxbBbqVsZxs4gDZED57xdv?= =?us-ascii?Q?s4hYen/HI4yqZ2Zuj3bF1zpqaxR+HYSTI0tL+qj5NBg6ZgnwBmFJ+tka2y33?= =?us-ascii?Q?kdbFfST8TtCxa6yJ0Fp8pgS6yLSqskULV1AYhbwYIJQVY2mbvepNTtleaAfn?= =?us-ascii?Q?1nhHQKuh+UulqxQ7fkTJvjv8arzkY4sSLr4prUpdbljTrjVpmqGAfPbLO4Ry?= =?us-ascii?Q?11cpi4l8w6qzWQzqj/l5n3q3CW0S3awhOtni6xau9ptcCYYFNIwJ6XS/Krzl?= =?us-ascii?Q?gyuOnfbaBTD2Z//nEdowEoCQYvUmhDAar0JCXTIehTO+cLF75fZAD/EyEI98?= =?us-ascii?Q?KmP+M41MGeD3lK87ahUce/gNuP12n7cgV44jTnd8aqiRMZnLkYamcEwCE3tD?= =?us-ascii?Q?msM9LzEZg4Dqb9uo74d8h4mlZDicpXjfySGwmMDxziWWKyUHThlgExeuEVMb?= =?us-ascii?Q?yUpy2W6Q+barbsNi9XtA86+S8LkEYv6RNaqtBwTdIoUDu2C8YkVjx8PnTUHo?= =?us-ascii?Q?5qsCOUnnGxMYhvHtV7OJaINgfvOU4LsbS82qPgyqBPZCjPVnY1F0bsV+nGT7?= =?us-ascii?Q?vk/g8aV1HihxEK4sdb1JoNUm5nx2sdaS42//bZLeo1SQszX2kH8X9pZag1I9?= =?us-ascii?Q?dKlDYCcHgtbkVEg/CfGpBDWIlT3HjWuavi7+93Qn8GUyf+LA6tne4lbKWTdV?= =?us-ascii?Q?aWciH7FYaiB7/lpKAe18GTfHW8VGpQrw7Z+zSUoJKrcxbvENDwKSl6EVZs/D?= =?us-ascii?Q?Lh79QOnsHyRzdIqC3MsFLLUvHwFR6qQgIvGYsiX9/p2L16lffhwiqJDrHF6n?= =?us-ascii?Q?JEaCNdjPvEvAS1Ot6xalk+uvDTi5yJPX3c737JjrBsE85W6nbSNwlr7AADjH?= =?us-ascii?Q?MWGiJinQLHXUtr+YQ3lPRw1EwdUrUjA5M5Qhhjqk/smRyOXBcIFKcylw8K/H?= =?us-ascii?Q?wSyjYwK4IzliWVqo7rGBx/2oW8PPb4LSnhGqmA6x6WKI012kB/t/AM2+MMkl?= =?us-ascii?Q?cwWsF2dU+2MolNxv8ynZN2n4ECglBEMVq7mgLOzF75/M0pp6mDqjzlc1xjFY?= =?us-ascii?Q?QLCYUcTioPLispwgpLg7Dy+ni2QYjU4iuIatl9TTCjpCCaRUoDcY8Yr6VGw7?= =?us-ascii?Q?WvVc8h8LkqBcooWwYGfcpbTdAnIKNGG9ERw9z+T8nSVeBfKE9Ii4fCkbmmSi?= =?us-ascii?Q?JG+WCOfFfAEWz26UQGqkxm6PeYUgtsts5tfJ+UuRtza5JEMCqmHgLBK6Boj1?= =?us-ascii?Q?q0KFc/dQs0NqGnHb9APdWiiiBJXdpM9SNnKWkYx5JYFD/LPUqCSW+jPdtore?= =?us-ascii?Q?NGoxYfm6vvswGGijR/J8t7x6ym9rPq6OgNEsvm9HNPjWojyjGZ3YoHkpY7GE?= =?us-ascii?Q?EOY/zxpy7b1iEfEFFMwedMyEfkG+3bWtK7WrqbqTfkE7LSpu/yKtSN8TnzI7?= =?us-ascii?Q?/g=3D=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: Eil3n306kByLWoGBl1sSgEB+SLgKy8X1Wo1UeViGbOswOda8pzhA+zyxvcjUhF6Ezw4ptQIFMC+NtCC3y4XjHXVG+j/vt4ew1R+xSIHGUlQy4BtyIVAI3u6QlfkRghfXeH50h0f0eb0a9VtLXFDtAt1Gpy1dJDFw+FpfM4fYe99qNSuGlEbzAxQw1r2dhXbZvYyl/kAj9OY38UVX/HbNvBiZnchJq1087UvqraiObeDQaKiV4ihx+tCd9zVtJInfUxJMGLjA7Bqvo5R3qSHlWdyjU+yvOCDi3gksCFfkvjg0GeOg7BRbDUNuQpqThOfc+5HLvvNFtqhilcFItDOPz7wPdLhSvmio+0+J6LyMiO/C3NSque1K6zMOXZhTFjBfcDTf1Xekess2HGO5x/+s3g4CiSoOIFe3igZE/SA8cRixSz7hKnIpvyieMjOi2obT+UIbFsfuGLEYFubYtsGI8YdGuLmjywSsI7J6ral5NbKRIYZN0M+HcrsUYuu1K8ogQQItCEco2RjHZkC8FZhDy4msaHYH+vcjlIo9kvm7zxBW0fpM+LWB17JU7k/IrEaGzulictn3XffpcRtof225YgjPV24TSTc1xOsGj848QMc= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 81b9dc34-6f08-4209-8341-08ddc552d62b X-MS-Exchange-CrossTenant-AuthSource: DM4PR10MB8218.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Jul 2025 16:56:12.8203 (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: HtVqHFJLA864dqYPX2Am/HWGLd4a3M6to/TgVNMHQoCdN7h4/JJaYbcV4oARGHbVMln6U259BjJyY5d4kc9mB9ztSt1ZZWMfUxxkWl/xSLQ= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS4PPF66324196D X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1099,Hydra:6.1.9,FMLib:17.12.80.40 definitions=2025-07-17_02,2025-07-17_02,2025-03-28_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 adultscore=0 mlxscore=0 malwarescore=0 phishscore=0 spamscore=0 mlxlogscore=999 bulkscore=0 suspectscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2505160000 definitions=main-2507170149 X-Authority-Analysis: v=2.4 cv=auKyCTZV c=1 sm=1 tr=0 ts=68792b30 b=1 cx=c_pps a=zPCbziy225d3KhSqZt3L1A==:117 a=zPCbziy225d3KhSqZt3L1A==:17 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=wKuvFiaSGQ0qltdbU6+NXLB8nM8=:19 a=Ol13hO9ccFRV9qXi2t6ftBPywas=:19 a=xqWC_Br6kY4A:10 a=Wb1JkmetP80A:10 a=GoEa3M9JfhUA:10 a=yPCof4ZbAAAA:8 a=iY89YN1uBm8AvMjWrUYA:9 cc=ntf awl=host:12061 X-Proofpoint-ORIG-GUID: 6ZDFOisNltkhtHU7025rxFElSVUnJlmm X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwNzE3MDE1MCBTYWx0ZWRfX66CfiM81N6QM sRX3loAK+PgppU/logIQWiHYdB6nG5yZMIXBrbUrPbpbQNlJtynZx/+3aGWsevWSdZlIf45BA3I GBRQF1YYflxWWekRV5Qj26nN2+kryTlHCW+fTQ9B7dIVGok/eVMsuiGXvsGQbZ8R1U9Wzpx+ANr ic5ImvsF6nb+cfJv0FP/jTGBTO/VrT9FcRaq9AjMkrcy4FTyU4O6mIXxCzZPoGt8cHXaUzqesXP g8fPrRLEB8rTh/OiDkpVvMbyf4m+TVczMmbveUjzsDGDhg8WXFRuf+vWmSSlC1z1dFAaeISHvPM AxM/XqeWUZ3lGEZixjMnM57siMO1G3G+1IThBYahSesjZTwjpZZTcs6uw5ecv2BRQRuZ32VWgJG BUEL7nNWJxserxH5m9HBRlH96uh0hIM2hHVEnARFOqj988hiuwH0zMdKZIbHgDtOnZEIqlCi X-Proofpoint-GUID: 6ZDFOisNltkhtHU7025rxFElSVUnJlmm Content-Type: text/plain; charset="utf-8" Rather than lumping everything together in do_mremap(), add a new helper function, check_prep_vma(), to do the work relating to each VMA. This further lays groundwork for subsequent patches which will allow for batched VMA mremap(). Additionally, if we set vrm->new_addr =3D=3D vrm->addr when prepping the VM= A, this avoids us needing to do so in the expand VMA mlocked case. No functional change intended. Signed-off-by: Lorenzo Stoakes Reviewed-by: Vlastimil Babka --- mm/mremap.c | 58 ++++++++++++++++++++++++++--------------------------- 1 file changed, 28 insertions(+), 30 deletions(-) diff --git a/mm/mremap.c b/mm/mremap.c index 9ce20c238ffd..60eb0ac8634b 100644 --- a/mm/mremap.c +++ b/mm/mremap.c @@ -1634,7 +1634,6 @@ static bool align_hugetlb(struct vma_remap_struct *vr= m) static unsigned long expand_vma(struct vma_remap_struct *vrm) { unsigned long err; - unsigned long addr =3D vrm->addr; =20 err =3D remap_is_valid(vrm); if (err) @@ -1649,16 +1648,8 @@ static unsigned long expand_vma(struct vma_remap_str= uct *vrm) if (err) return err; =20 - /* - * We want to populate the newly expanded portion of the VMA to - * satisfy the expectation that mlock()'ing a VMA maintains all - * of its pages in memory. - */ - if (vrm->mlocked) - vrm->new_addr =3D addr; - /* OK we're done! */ - return addr; + return vrm->addr; } =20 /* @@ -1714,10 +1705,33 @@ static unsigned long mremap_at(struct vma_remap_str= uct *vrm) return -EINVAL; } =20 +static int check_prep_vma(struct vma_remap_struct *vrm) +{ + struct vm_area_struct *vma =3D vrm->vma; + + if (!vma) + return -EFAULT; + + /* If mseal()'d, mremap() is prohibited. */ + if (!can_modify_vma(vma)) + return -EPERM; + + /* Align to hugetlb page size, if required. */ + if (is_vm_hugetlb_page(vma) && !align_hugetlb(vrm)) + return -EINVAL; + + vrm_set_delta(vrm); + vrm->remap_type =3D vrm_remap_type(vrm); + /* For convenience, we set new_addr even if VMA won't move. */ + if (!vrm_implies_new_addr(vrm)) + vrm->new_addr =3D vrm->addr; + + return 0; +} + static unsigned long do_mremap(struct vma_remap_struct *vrm) { struct mm_struct *mm =3D current->mm; - struct vm_area_struct *vma; unsigned long res; =20 vrm->old_len =3D PAGE_ALIGN(vrm->old_len); @@ -1731,26 +1745,10 @@ static unsigned long do_mremap(struct vma_remap_str= uct *vrm) return -EINTR; vrm->mmap_locked =3D true; =20 - vma =3D vrm->vma =3D vma_lookup(mm, vrm->addr); - if (!vma) { - res =3D -EFAULT; - goto out; - } - - /* If mseal()'d, mremap() is prohibited. */ - if (!can_modify_vma(vma)) { - res =3D -EPERM; - goto out; - } - - /* Align to hugetlb page size, if required. */ - if (is_vm_hugetlb_page(vma) && !align_hugetlb(vrm)) { - res =3D -EINVAL; + vrm->vma =3D vma_lookup(current->mm, vrm->addr); + res =3D check_prep_vma(vrm); + if (res) goto out; - } - - vrm_set_delta(vrm); - vrm->remap_type =3D vrm_remap_type(vrm); =20 /* Actually execute mremap. */ res =3D vrm_implies_new_addr(vrm) ? mremap_to(vrm) : mremap_at(vrm); --=20 2.50.1 From nobody Mon Oct 6 19:10:40 2025 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 D5E522FE36F; Thu, 17 Jul 2025 16:57:32 +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=1752771454; cv=fail; b=RjBCAq+SYX8wU64E313eT0MrfV0wUwtZWeBlLBMKDLg9+kBTmJVM4qg14iBCJcr1J1CqM6O5ZZypAR11PtLe0GIiPrmasUQdRK26wHq2JInD7twTN18bFS23N2qE0UTwl0bSl3RqxAji1LqREf+1g9M/dvh1iZeKQLDPyg/3ZXQ= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1752771454; c=relaxed/simple; bh=qCep204zmBVCCIP/5AfSh9GQcL+Zn/7pBtr+LD7pSAw=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=IezLJ/jP+N1sAMIcvhS0FwYBof6GabL0outmEcbzqDQTqX8xBtRbp4jqrNH4cmc2D7r744rMQ4EmNuYaOHLpAQ3N6CSOFFPowKKQKuwEliJzJDfGmGsJdw7uPlMyd591TwQACgk97+Jt++Ok7zb43NV7BiLHQw78KyDsfazXR6o= 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=pKW+bsuC; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=ZQWL6yGm; 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="pKW+bsuC"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="ZQWL6yGm" Received: from pps.filterd (m0333520.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 56HGBxMn001337; Thu, 17 Jul 2025 16:56:19 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=oJ02dd50x8VP7VKdvyP+45azUpfpgVwNcuOwMYqGXk0=; b= pKW+bsuCZZ8pQZU0N8gA3gG7rYUNXFCaPNJ6mabdELIJBbN14PwWLhE9cH1/wB0r 1DvszBUjEUgUgbTRfpQDrfngn2a0ZMb0fdEUGxIZrvTafQtKiDesWSFkGsDahta6 8ixkq977vWJwHwTi7vv7WPgIHZgZ7iOmzVMe2qpJARPPaewLB4k382adE6ffIWTb 2NGFEnjDQ5NUpvw063WJJhhulcmOil943LLKLPMAGyHMSF6usEAr0rYpF1HLYiy/ PqQUz25kclSkQnkKRRNOq3l85wGEUGmeSPsgOkM+2UoC6xgss5I9v+8Rxrptqbkj yk8tI7K74dlCBGDWFq2YfQ== Received: from phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta03.appoci.oracle.com [138.1.37.129]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 47uhjfc4ey-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Thu, 17 Jul 2025 16:56:19 +0000 (GMT) Received: from pps.filterd (phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com [127.0.0.1]) by phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (8.18.1.2/8.18.1.2) with ESMTP id 56HG2Vrr023735; Thu, 17 Jul 2025 16:56:18 GMT Received: from nam12-mw2-obe.outbound.protection.outlook.com (mail-mw2nam12on2060.outbound.protection.outlook.com [40.107.244.60]) by phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 47ue5cxym4-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Thu, 17 Jul 2025 16:56:18 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=GQboV6a1EeIEWqjZb3hn4tqORQe+lVaDpr6eNcrIPuq9M+AT4G/pR9BoFY4Ya7c097olcvdUjJEJQtG37x70rlWwZbbhLKs/bugMiiui02YGt8Sp+z3PhGXGXNSKlV8vb65IVK72u+m03cN1NsuvURbwENJs5lZR7hwr4h8rhNgpkOBYlAK8Qt/wOvBMrCN6gThE0tzKFpOmSDGjr34O+1oLktLbgAcHa36TinNs+s1V56skpvqkkXYUj4V/mlx86XaxHJV6XD3iTUuhS5ojaLb9zV1V36Jrz/UO127lnceNcbHxSKIbv5e22GdPjiXA8CbuOMTBJ5dDC32TOpKcng== 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=oJ02dd50x8VP7VKdvyP+45azUpfpgVwNcuOwMYqGXk0=; b=rJA00ej2uDuV7nja3lIVZLhN/MkU0GBt8QY1LDYsNRqcFJXQ9uKQ0rh5L3ZkcbmB0/Qz9vBQ3ytxFpXJKmc8CZwmvddByMg/AbVxIRJZsVLjI0//LOXTjNGgjPji1KWLNrGMF9cZdBRiDeLQyB2REggoLrYzBEI9retS0tOzd9ouPLu58I+OoJj5y8vdqzLvpcXBBZeNBHcfduWEpezmn6wd0H+tIqQmfEZ1YZIQShLEGQTldYVeXyQPUFnUUD/ArGaPNPbeRa9fpMqH+iR+2Vf9euBHLPR/jfAkIvQ8Jup8BqDv+xURxbsVm4fw3qdwW8fEOIn+t7bkTYjzRBaCUg== 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=oJ02dd50x8VP7VKdvyP+45azUpfpgVwNcuOwMYqGXk0=; b=ZQWL6yGmZfQTzy7itBUCH7ekJaKWV849i12HYfaM8TKSPmSHgb/nm2al4M6Ov6dJ9U8N3D2Ou745wgA+natRDLSBULOJ0hV67zflD06VsNJgd4fTegYNFu6kn+X0jLyPd4gdAsoxMssoxOlNt0XLqSZ+bUxk0ljdUTizIFO1tRE= Received: from DM4PR10MB8218.namprd10.prod.outlook.com (2603:10b6:8:1cc::16) by DS4PPF66324196D.namprd10.prod.outlook.com (2603:10b6:f:fc00::d22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8922.39; Thu, 17 Jul 2025 16:56:15 +0000 Received: from DM4PR10MB8218.namprd10.prod.outlook.com ([fe80::2650:55cf:2816:5f2]) by DM4PR10MB8218.namprd10.prod.outlook.com ([fe80::2650:55cf:2816:5f2%6]) with mapi id 15.20.8922.037; Thu, 17 Jul 2025 16:56:15 +0000 From: Lorenzo Stoakes To: Andrew Morton Cc: Peter Xu , Alexander Viro , Christian Brauner , Jan Kara , "Liam R . Howlett" , Vlastimil Babka , Jann Horn , Pedro Falcato , Rik van Riel , linux-mm@kvack.org, linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org, linux-api@vger.kernel.org Subject: [PATCH v4 04/10] mm/mremap: cleanup post-processing stage of mremap Date: Thu, 17 Jul 2025 17:55:54 +0100 Message-ID: X-Mailer: git-send-email 2.50.1 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: LO2P265CA0411.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:a0::15) To DM4PR10MB8218.namprd10.prod.outlook.com (2603:10b6:8:1cc::16) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DM4PR10MB8218:EE_|DS4PPF66324196D:EE_ X-MS-Office365-Filtering-Correlation-Id: 2b703e32-dd2d-4110-83be-08ddc552d79d X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|1800799024|7416014|376014; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?t7BanIjZV9qTt049cI6UGTOmqbEb3KJcDvjM1rZlqaPCPBnswT5xitWRcdZL?= =?us-ascii?Q?zwX/UlfNCE3BpGF+bzz6WZ4leb2BWdtR9VD3gjJbXHII7YOdE6VVvh+8mg4I?= =?us-ascii?Q?mvFu8bJOVvXRzIlN7zH5+9HRqOUHZ4VsADnCeKOlTBrXWutd8/xXVksaQzS2?= =?us-ascii?Q?o5YegrzMf8ziTLpklCsb1EeWy7/e1LEWu2JeR5t1D/7VMpSGbTNkpcFVApkq?= =?us-ascii?Q?WOnlka3NHwsB9SKynrMo31pqEbDos4RohLjidDy3dT2cUkUzvBWWZcqGm7EI?= =?us-ascii?Q?IDBKk9NxAnieN1xUURFlwIlkB3LS0nXi6CroWFyxNDJXCzlC09/9PcjyvtpF?= =?us-ascii?Q?6HXEB5nVD8qnLFQy7efFrEBcHIv/NmII3Ik9TBd8qJ/h0NRGFCSq26EUd3XC?= =?us-ascii?Q?wh/8WleYwvznYZUTIESI5+3HjHfDNYIjFqTUZVFuvv/knjGQLC+s3fAq3lGF?= =?us-ascii?Q?QewQhC1erjpXjOdyRVbdsyyy9dqoiQ4oNRyShxq8yA3NNru6aE6crcJFau63?= =?us-ascii?Q?2RSqVpBqFKHQLicroKSgSnByTmq0yReo91wZ6Ix80SpWEmydCvN4QVVfHk/P?= =?us-ascii?Q?8bKP3Mbqy/wDCK5gWRhotakLG1tNU2zFM5OWUcOJhbh9N5AryxG9BCj0LUnz?= =?us-ascii?Q?x3vaM0ipZNbxs/xW8fXvvmZu0vai79KHuYjvoP3C40bfOAm5WYVhJcuHOX/9?= =?us-ascii?Q?+05U/uGQVkj2mPUrP3SoVuIcjTgn2nLHsNOjI2sXvJOHFysaUTp9wm+2b0Cb?= =?us-ascii?Q?tzzBiSBhiAPQ/7aWrqEwjdrC88yzgM8M/0ZhLl7mAjbmub8+BkS2ZUpld7zF?= =?us-ascii?Q?LTHTUqlMWNr5FigcNgxKI94kI/Mc5Pcm8+TvnQuFzP2zqyTVqJ+5id/2WopR?= =?us-ascii?Q?qwpAcMm+1CbZakH0ZuyW2Lvn6RlLVitPvbk0SjzAjq+ZSy2JN/qyVnOQMVye?= =?us-ascii?Q?B701PimpC4i6TgUF9GnxfGSqlN3WTd28/qKAxE0Hq6YxOPLVT48pwzbF/eWJ?= =?us-ascii?Q?dkMFZjOlnGAMuZH4D24P7eob2kek0kV+CbBad4AmHO2iNwv16nvW+taKC4BI?= =?us-ascii?Q?xuTi+2qNG/W2vUfNe2q9GLZ0W4PAiObWKsCRgRt309VYo2+jC9iR7RAT/hfy?= =?us-ascii?Q?z9QAwp8soYvI/VHZW+/3txCtmOTvamjZC3rngOIHShL2sT5164wphCfBX2P4?= =?us-ascii?Q?HtPXSvldkKPSTmWGk09F6nkEq6nANt9v/D60dWiPO8QOFHw+4pvft3yKOATN?= =?us-ascii?Q?t/+5XeGSDOuntOy8c+c2WJ6jOEuxYRzp29wGfO4Ew4DrGE2fDlmW93tvFBD2?= =?us-ascii?Q?Y4gqUcXDpTTUkQS2y6OhuOlTM3DWxHZd8rmcnK+HlxnaewDkK093HwZ31iJ6?= =?us-ascii?Q?SCSbkKSjOlWBFkRo4+u4L9SDL9hkg573nmTTSDqEyuq6IBWOWZ12AoOibkVc?= =?us-ascii?Q?WnhghPqPZbY=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DM4PR10MB8218.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(1800799024)(7416014)(376014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?joSvn5mGcFsHFK4n0bbtDj+PCOREUHXPzPXbH8qofR2dSAmkBw3xwJWs9PC2?= =?us-ascii?Q?hra3Vu00gZyf/wze3mlJ36i+y169QFdXU67PWo1vyopsA4q5YfS0tDyWd360?= =?us-ascii?Q?3gVOrAky5v6xlp2BDK97mJnRt9gfQTvPO2kpI0QJMJ64a/s33gjju+4UcLXV?= =?us-ascii?Q?7TyUcR67LnYjbtUClTnUxeW7ks2c7IbF1o4IB7fuwkBtmGdsyXRVvFuWjGx/?= =?us-ascii?Q?olJe0aGVxLDxlqtLZ1kGV7in28CZd1VdCm3qqRPcD0/s3eFwpVh9L2/nCuZ5?= =?us-ascii?Q?iEldOR2yGo0Q7FZnsq2nHIijTlC0Md6XEOXV+V9srN5f54kE/YTSYdvuaUlm?= =?us-ascii?Q?uTayJUSAyJIKj06OCqbkIxWuypm/w4NdrpwFTLlbDBnyAIBQWXi9UdGBTSnU?= =?us-ascii?Q?+1l1krYcvMHQd3BCkFLtsYGZE48vwbCcXfplySQORslkG+4rQTmEMqmu1rC8?= =?us-ascii?Q?FOTaCoeojagsPiDID4geNOvAv8o2oR4B/UqzL9apEEaK0rqip1Km8gExs1hr?= =?us-ascii?Q?CM+1VX4tcn/s6RTdROJSsbbNIOGmsBotAwc7Kw04CSTlfda3kMOpzRqCqS7Y?= =?us-ascii?Q?nJMmkiSB8GnwpqXXBaJjZG9oVlduK63Aa5nTEuleUs++tSqmSxDcxAJg8Xap?= =?us-ascii?Q?fX6TZAB4Bek9LnWKb06rumHkjX8SU2mXGjmoSBA/S28Tysj7RPFY0ILV0zBz?= =?us-ascii?Q?aO/jD/Uxr06zVRO9CBsuwC3/KQmxOy/cCw5rqP3VVoKp7cjBczA+oz4Be6gm?= =?us-ascii?Q?lOFvqBk4nFe+SPUDvm1oZc4KoDnwPnqRwyuLFws97aC4gYwNUo4DAMKVnU1Y?= =?us-ascii?Q?Sl7dkJhjUHIHCRiwhxJqucPXYGjUPHvZKopPKGC+tbZiDw0i72NK03UwqPCb?= =?us-ascii?Q?ku67YsnOXDIrmhr1YfOsusXR0oPgElOI9JUWb2wNYycKyK2ZnDa5sDcMQwGx?= =?us-ascii?Q?fcYKRffnBY5Lh5uqgWrlSet5EGNT5cURzsXsFhRXghp72K4EsrVvj1eF7lS7?= =?us-ascii?Q?hlg2tjZOwifGrIDgfcaNx4SxAAxbpW3gssYx319h01JjzH6VfUG/PxoYRpWe?= =?us-ascii?Q?n63me0FlRDlSFhl7wUw1kOijw6vWcs/WVLj++2NV5WEGvIkjObLFPerNGNRY?= =?us-ascii?Q?8u/LBd5/lPJBRHEW7eyECUDuYY32dvqnyzIBTlWvp2DiiEVSVCMgyj/XW1lf?= =?us-ascii?Q?4XQw5TlZT3aojUVrsT6SaLI7fUwqBzWJrtyCdIEDASimjlRtPvlcwqZRikV8?= =?us-ascii?Q?c3V6MtMcu3jkCz2tzKhwiu+dW2Kjb7dR+VBnF7OU+u7X2WLgI/bAz91pr6CM?= =?us-ascii?Q?7MfUfv7mNxYVlXKDxGElxDhv6iz56sA0gSI9rdh0njI5hU7bbYlWF98e5o8Z?= =?us-ascii?Q?BD/2idUPGRb9tZJ3cwAPCxOTHB6p0D7+UQlAmdJ85tlhyK1NOsVd6ekHnjSM?= =?us-ascii?Q?S3TGj2vVe9nt5FLMRve76WcetG5GRaOhzr/vx4oUlHchm1axFRcs4RZsT1BF?= =?us-ascii?Q?un9D7ZCw0y1ukglydITPaW87G51EXwW48WTbHbn+smPw10f3857+j2OKRAeO?= =?us-ascii?Q?S3sfVRCCtsc3tM0LvXRmBnJwoCW3KGtuu3QXOJ1obEmM0YR+3DGRylNKW31a?= =?us-ascii?Q?RA=3D=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: jvuZkhnpTIVcJAYUebQqUb0g3bYnTlmzvX8v/57dIOJ8Y9Y6YHPSfqSogSFULnFDemGZTnY/CjlgNdkTvNgwzw0RIuhwAGypp/rrFXzakELGlazlACV+jSQN7m3zS+HDFcgDEIeNdJwUx5S+lZTs1kz6JBM5kALvyufb401rRA8kw2Si2+Psq7adry8QXP2nDUWb84eatsUoSq6XCIVk6I5bYUT3/PAmPrssmYHb/TnMN/z9iSoL8wOb0QGvvRCXOGvFGQACl24PzLVjSfCwdyM/j55fC2vtD3RIn2Uw3UrMQDci5Zl5lCWGhHitnC/RtsAsXl4eOGxnJPihvdSq+mkTdm7i3zTjMld0ak0fSaLsygoe23Kw87eNSqVMcA6pS9W0HqLhE42CJofnoLcrvOwvPgj3ltsM14BYDGXyYHrHIhQOjLX7C4JeaWemBBG3cilOiv9Ta7TktKsLxOMzL0CJ87jPl2acBjlDJOwdj0VKzVUP34qJzzP+QS88Zt4H0Mxl8k0VKADf+mARTiXkfncRI4VDHo2NMkDumtWgZF8ehdIOjtsF65WbatUs0lDeytri4VR8FP/VT1YfngC49L2JvQHvPYl7XPY5XrgklV8= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 2b703e32-dd2d-4110-83be-08ddc552d79d X-MS-Exchange-CrossTenant-AuthSource: DM4PR10MB8218.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Jul 2025 16:56:15.2599 (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: VEywfrnCqhQfevDmW9XjKdGYxGMuT6jYAGKsMgYaUlaBAui7cinxtEuR+cGJBJWQ1U8GNO7I+54lJcY/LvMPaebDB7aFTZYDgrE3+AyoLkg= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS4PPF66324196D X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1099,Hydra:6.1.9,FMLib:17.12.80.40 definitions=2025-07-17_02,2025-07-17_02,2025-03-28_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 adultscore=0 phishscore=0 spamscore=0 mlxlogscore=999 malwarescore=0 mlxscore=0 suspectscore=0 bulkscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2505160000 definitions=main-2507170149 X-Proofpoint-GUID: dcCPwSgXGpPRZzhZm0I8Bkyb3gBSkJS4 X-Authority-Analysis: v=2.4 cv=O6g5vA9W c=1 sm=1 tr=0 ts=68792b33 b=1 cx=c_pps a=WeWmnZmh0fydH62SvGsd2A==:117 a=WeWmnZmh0fydH62SvGsd2A==:17 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=wKuvFiaSGQ0qltdbU6+NXLB8nM8=:19 a=Ol13hO9ccFRV9qXi2t6ftBPywas=:19 a=xqWC_Br6kY4A:10 a=Wb1JkmetP80A:10 a=GoEa3M9JfhUA:10 a=yPCof4ZbAAAA:8 a=ULdmrcW3YHslXA7JyQcA:9 X-Proofpoint-ORIG-GUID: dcCPwSgXGpPRZzhZm0I8Bkyb3gBSkJS4 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwNzE3MDE1MCBTYWx0ZWRfX5Nnak0YGD8mp ACk5LzY6/Td60+P4Jf9RCSafyVrJzBlxzITa+bz+bLT4Bhr0xrctF0APfg+ALXcaeEhdlmvuvBZ Cqy7Y4+aERSjBRX2R7j6pmMYhMHXzJmdjufhZQsliEuI5NUsUOIMa9Pg7AZJCxxvUrnDDqsZhCL +YEyI2qG62lkftAOYZll1KuAkTdhPsOHJfvYWJqNu6bLsYdTdYGSSUmWbIh8fa9X99DV9lo9Lce RGxHun22bDtxqa+f81lyR1rmSx3wFA4AhlDnNyQ2h7vWOi13lthBbt/8JFbyAZ3FSZ1dTRiKFoV 5/babAMKytTO1tW+KZ3H/8iwRvf86L5oxSI24sFyDShhLlkx/T3qbdexbvDGjX3FrprTDLotDB8 grFgc7lGZr8PynHgkDncRwlf0cxhnVAGwMgyv2cEoHPdTEFR9h22LBK4Jfk37sokHcLO5C0r Content-Type: text/plain; charset="utf-8" Separate out the uffd bits so it clear's what's happening. Don't bother setting vrm->mmap_locked after unlocking, because after this we are done anyway. The only time we drop the mmap lock is on VMA shrink, at which point vrm->new_len will be < vrm->old_len and the operation will not be performed anyway, so move this code out of the if (vrm->mmap_locked) block. All addresses returned by mremap() are page-aligned, so the offset_in_page() check on ret seems only to be incorrectly trying to detect whether an error occurred - explicitly check for this. No functional change intended. Signed-off-by: Lorenzo Stoakes Reviewed-by: Vlastimil Babka --- mm/mremap.c | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/mm/mremap.c b/mm/mremap.c index 60eb0ac8634b..53447761e55d 100644 --- a/mm/mremap.c +++ b/mm/mremap.c @@ -1729,6 +1729,15 @@ static int check_prep_vma(struct vma_remap_struct *v= rm) return 0; } =20 +static void notify_uffd(struct vma_remap_struct *vrm, unsigned long to) +{ + struct mm_struct *mm =3D current->mm; + + userfaultfd_unmap_complete(mm, vrm->uf_unmap_early); + mremap_userfaultfd_complete(vrm->uf, vrm->addr, to, vrm->old_len); + userfaultfd_unmap_complete(mm, vrm->uf_unmap); +} + static unsigned long do_mremap(struct vma_remap_struct *vrm) { struct mm_struct *mm =3D current->mm; @@ -1754,18 +1763,13 @@ static unsigned long do_mremap(struct vma_remap_str= uct *vrm) res =3D vrm_implies_new_addr(vrm) ? mremap_to(vrm) : mremap_at(vrm); =20 out: - if (vrm->mmap_locked) { + if (vrm->mmap_locked) mmap_write_unlock(mm); - vrm->mmap_locked =3D false; - - if (!offset_in_page(res) && vrm->mlocked && vrm->new_len > vrm->old_len) - mm_populate(vrm->new_addr + vrm->old_len, vrm->delta); - } =20 - userfaultfd_unmap_complete(mm, vrm->uf_unmap_early); - mremap_userfaultfd_complete(vrm->uf, vrm->addr, res, vrm->old_len); - userfaultfd_unmap_complete(mm, vrm->uf_unmap); + if (!IS_ERR_VALUE(res) && vrm->mlocked && vrm->new_len > vrm->old_len) + mm_populate(vrm->new_addr + vrm->old_len, vrm->delta); =20 + notify_uffd(vrm, res); return res; } =20 --=20 2.50.1 From nobody Mon Oct 6 19:10:40 2025 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 EE3AC2FE32C; Thu, 17 Jul 2025 16:57:28 +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=1752771450; cv=fail; b=BLsj/4dFYNdIa2OIorutGGUrzkiTn4AnktD392XEL0ezasuS/spKAOpjA4K76sP/895CDqKkaFRBbZO6YwQTyiL4tW//LVJ2Ok234FvEnyxkNFI16gGlV9n6XxM/RWSQPniev/LTo74cyqgJOEFpeVsiQbaTEwwJi3LzAgmbHN0= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1752771450; c=relaxed/simple; bh=McCBi+VvqX1Zxj5L7eEFT8ZX1KapoxNJK1jIiEzqvwI=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=CtB9uCBkdcEMZmOBjBbkgwNyV/TLnx4QUQjXRP9sdD1OnhBrdao3pWknCw8fnVpmCCyqVjwbXJNDtYYdyCRrHYsnbXmKhu7+RswMCLrs5hhJRr00Vp6WkCzhDjZzei8/dzcjF+aI5vKMTTBc5NnPM2AMWgs6+LqN17PehXK7F0I= 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=cn74VHv6; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=bkQJNV6H; 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="cn74VHv6"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="bkQJNV6H" Received: from pps.filterd (m0246631.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 56HGBxpl019289; Thu, 17 Jul 2025 16:56:25 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=kQsSArn56jCkB+0sWd16+BoPi7MhkHz9kw0i1cLUxeE=; b= cn74VHv6BcU2LRygTYXaCwOqY3Kbpl1HYRZAGcAm25E4QyYfo2ToQdKv1SBnOswu Ms4ipzKIp+9YoUjYiByzdaHuq+BNnPyboTZHneVO22OnwtADpEssvGULU3wU/xXg SpnXEHJbHgHgFtPpGRiv6F3v2OKAeFzY64PY52RwHXLHb6BX0gjSb5z0aT6zj33y gBkwUAkAgC0o0kGVObQgMT3iabQ7Duz8zQ1SDa0xuh49YHrFdET+XMUv1aw5vwHQ s8aJYRu/w2dOHgjrJfSsUoeu/tUAltc8zdyKtp0S5FXZCibEXnh9x9mnXs8Ms+6w Mb6X60NkOBZ6dN6VPfSzhw== Received: from phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta01.appoci.oracle.com [138.1.114.2]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 47uk1b3kak-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Thu, 17 Jul 2025 16:56:24 +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 56HFvfDP029665; Thu, 17 Jul 2025 16:56:21 GMT Received: from nam11-dm6-obe.outbound.protection.outlook.com (mail-dm6nam11on2078.outbound.protection.outlook.com [40.107.223.78]) by phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 47ue5cxe7u-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Thu, 17 Jul 2025 16:56:21 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=NddIKeF2tcl0O173/E4f/Ylc1+kM+jPmDhm7fQg2xzohMpI2bekJJCjyGuHUnWNWD1DKRewoApoUlm1c40L/uZtj9GXdExrU9cb2Eo8vS0o5eHENwLVGfNa0Z5AlWz8e00IzsEqc5EumxjPoBwzPsniSfzAi+uTmJh8HGdgLwCYDXAkID8qaOXEXymClVNyUQX34/cNIZA8i5ZuMzgTeVTlJcYI8grGwYS/jlGo9jhG29Gm0wdfwHI65ISCrf55inCQ1QBiFyoqDnXPAuXL9f81ZBYXRGelAci6JfSWuRV7VYtV1mZTZQoj34TEQntPVtVeKy/RrmUNF8a7opgtUiQ== 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=kQsSArn56jCkB+0sWd16+BoPi7MhkHz9kw0i1cLUxeE=; b=VnKF6yAj97LwyhR8uA1EXarss2XzShhBy3Te/haTQoJ1MPB8IN4QFVwBvq93p890Qazw1yCjCU4HCE+xoQj0hx29v9DQ1mUbioA5pPyKT+HV7aRS2lpt28CDrhquUGXhwq7pXohhrPR8AezQ9zNIaWFErsiUcUvSjTFlWxyaR+0o7Xv7ZunToE9+1K5pLSzHxMQgq0SD2sgTr0FbsFVLGaob+grWTCVXY7HcM3+KIET7ehO63vLJVT3sw4cZj+vgMIfdEppwQ1JGeHywEvK+yGgUuQMG9b/PZcYyO8+YUBzKaHalhtB8luRadr0pbpp71phxw1Dig/oYW0XaHyyouA== 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=kQsSArn56jCkB+0sWd16+BoPi7MhkHz9kw0i1cLUxeE=; b=bkQJNV6H6Sei3Z4c14bC81kDv4xE/igPbuX0ZoUJ+P6kVZrYqa3aBzsx5zwwXP6of8jyLfvFCDaSDyBRqXURabnF3IhVNcYpAJOxyq4kGuHLgqOrx5FsNQ1KoZ68QCWr37fsVTd2H3H6fvcPgPrWp2NARRxFrY+WGNRnvfv9+3E= Received: from DM4PR10MB8218.namprd10.prod.outlook.com (2603:10b6:8:1cc::16) by DS4PPF66324196D.namprd10.prod.outlook.com (2603:10b6:f:fc00::d22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8922.39; Thu, 17 Jul 2025 16:56:18 +0000 Received: from DM4PR10MB8218.namprd10.prod.outlook.com ([fe80::2650:55cf:2816:5f2]) by DM4PR10MB8218.namprd10.prod.outlook.com ([fe80::2650:55cf:2816:5f2%6]) with mapi id 15.20.8922.037; Thu, 17 Jul 2025 16:56:18 +0000 From: Lorenzo Stoakes To: Andrew Morton Cc: Peter Xu , Alexander Viro , Christian Brauner , Jan Kara , "Liam R . Howlett" , Vlastimil Babka , Jann Horn , Pedro Falcato , Rik van Riel , linux-mm@kvack.org, linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org, linux-api@vger.kernel.org Subject: [PATCH v4 05/10] mm/mremap: use an explicit uffd failure path for mremap Date: Thu, 17 Jul 2025 17:55:55 +0100 Message-ID: X-Mailer: git-send-email 2.50.1 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: LO4P265CA0006.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:2ad::20) To DM4PR10MB8218.namprd10.prod.outlook.com (2603:10b6:8:1cc::16) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DM4PR10MB8218:EE_|DS4PPF66324196D:EE_ X-MS-Office365-Filtering-Correlation-Id: 45cebbdf-2df5-421a-882f-08ddc552d9b1 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|1800799024|7416014|376014; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?lWMBbQVHBtaPgqb3JYGt6EZdhe1q6+VVm/T33enO9No2LCcqfUrZRFfqqU9T?= =?us-ascii?Q?Ad8RB/Cfo/kLxY4PE7CqljL+udCQwrm0eFJB2uO6Aair6/TJoHB7EtKbMYAb?= =?us-ascii?Q?BOnZCZzSxookwG7bVpye/f8CQVWgansbDl2AewOkUyS5Ysn4nJ3xrHWcKhuU?= =?us-ascii?Q?c2nfBXeDRLMTWZ4HeyB6xexgVy9yvr9vEYGuuYgvDU0IvAF1cLFnXutPYYE1?= =?us-ascii?Q?JDhXn2FTPNJ4JH25C83HasOcviZKIdYWttQWaBKsjeFEGJUPK5Zf4yvluvAX?= =?us-ascii?Q?VuKdNWQEcgXExJ34pExbWJdESBRj9Uell0AzTf/Kte7ny1FM8WV2UUT5hT7q?= =?us-ascii?Q?3MkVTvq6CmXA/QNtDL1VpKZPvJHwcmrBEsiyMpET22gxzSeKsPpkc7LGvGDf?= =?us-ascii?Q?VD7yJ2GkXgG+SIZUyB3IS7xYzIbAwwSSDGYVrGb3/vPJYFHNX2ClZIth2l2n?= =?us-ascii?Q?IMotqYiZAkV5oZDqJEzYbzT9LNcDQZnzFC/IHxHBRBVkM4jozAU/n8GOHTmg?= =?us-ascii?Q?6+bp96wxLpYJ0vGd1+DOTjOFVpLIbFzmaeEObVEXtwwwGRAoY6tsvE0g/fe2?= =?us-ascii?Q?5cN31oKXl2wV1c4PU7Fq3qZUvTRiI2ofGFsDrFLas+Q2jZochkJw3V9SPoqo?= =?us-ascii?Q?NXfoytLigJG6h6bH/rQNANWtjLraNNyOoqfpoKnCI9LtdYAtUHYRlSUwfD9u?= =?us-ascii?Q?AhMZ0R3ZoXK6NOleUgp5yNrYAONvNUGU/hQxk3ukK8GS56SwgiGjdkZzjzAW?= =?us-ascii?Q?1ic6P8xtsaDymBOW9IBxCyyvSRXmfieooJuUIJ3VIThb5LOXH2Nj7F95eq+8?= =?us-ascii?Q?wZluquF9Hc8EDBHzEYsPFUBfOi6bh+I73TUzhL6hGG4aUo3J7woFtYNMxlV7?= =?us-ascii?Q?m8yibhDlnyN6OTqwMgjyM9Ec34UpkpbY25Zww2/UIHk0GbLwDsKWXuKx2bo7?= =?us-ascii?Q?sD9uWH2GQgk9eBB/YeFlGIBiIaNPxbcfNQnFhdYCpFdXTGmpfLbGTVB4n+3Y?= =?us-ascii?Q?n18PiKKJ/5MS5JPOum4/H/+hnr5Ghafc/+90hOhnzDivwR+JZ0Pujx+Op/Jd?= =?us-ascii?Q?c3bd2ka4RT85tka8OxmtquGOyx9+1VRL4qWVhQsT/b6tcmh4lOulnhinFJ57?= =?us-ascii?Q?6l8DaYygUU3pwVEPikeurs63UEnzdmQwBjC/YPb+RfwaGwiqrIN7UQ+Zr50y?= =?us-ascii?Q?zsH9XzNH9FFcsliXcKqcMNeg5qLme36olB5c6EzHU+elrkq+bWIye0P949z1?= =?us-ascii?Q?ybODJk6g7o0VB6WvDgRVDGJ0zjOGAFco6GTswtm83FlJnheYTps6oaV5Np++?= =?us-ascii?Q?4+SjSr2HhkLSTJ5aRKR5dkUCE4qE2XTHbi/jdza+8wEHt7EH040FrIy8ojdR?= =?us-ascii?Q?6T9z7u1srYxZZvTSHvFfaL9uoOVbdx3xCF8dCJanqwYYDmV9xwfwdwayPQVp?= =?us-ascii?Q?errkPIoF/L0=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DM4PR10MB8218.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(1800799024)(7416014)(376014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?6b0cK90NZdqM88C6Eg0oPlAnj24MrdntM9GJXwRx+ehGdKT9Qu9CvRMDUQ/G?= =?us-ascii?Q?CajAPuGgAJeP9wfa/6yJ9Amou4VKb5elhC3u1FXmLnuFxMh3ZtP940Ir4f30?= =?us-ascii?Q?idoMIaZyQTK9a0MroHL4UoFY3/tjPgDclbbl2WEfeBRFoHCb/bleZuaVxu6H?= =?us-ascii?Q?5k93M3lVZSeo4jJ3bdG4ugVEJjXpG/IBPI9W+cXPxWsNwysby+o4he8JxCjA?= =?us-ascii?Q?UHs42T50uX2HN4X64UTFoy/PtXDTzX0Akhl/8Efwlk/DeMCB9Hiodw30u/y5?= =?us-ascii?Q?cBDWIJlRB/RP7Iypwz/lvLzDSwtO8Oa53zZmc1mwQ28ftfMT65QLbcl5KTPt?= =?us-ascii?Q?HQSqA3tdWup9z0JrL05BYNiAdDvtleodfXnVLDJWdRyvZlvVCuERgDLl8ZK5?= =?us-ascii?Q?XX8QFTRPkFxMI6z3uydAGYWEvf1Rfu8FJ6zR/etAmlWWorMuBR3uhnUwNpLt?= =?us-ascii?Q?z6bV4Ud5pTRFBNrXfM2ziLUniEYqvjXtmVEF7a2ropKG3OKhp7Xu5dpELQJC?= =?us-ascii?Q?8jLTIWirmt/WjCgoczz9xx3tTDaF6Tu31Qd2UXnB/2YKiWrxZE1gVdZkJr3y?= =?us-ascii?Q?ghyVXLihYUGMz/hg8yt/JcHb/uRpOP8UNPmOTGHY7jBYEb3WlMGqf973YYN0?= =?us-ascii?Q?CBNv84PdfSgP17MMZp0du9Lqb/sxMG+ASotCf0cPFb9Fwr5zxxNm9WhDkJXX?= =?us-ascii?Q?MCI9WHWcHi5oypV80cGt1Jcv9Pi2FMHTS/D1iVcn7azn72niNErUqqbtSivU?= =?us-ascii?Q?YhkskhYRmSCO7JdCof+xcuY4lllF8PaLiP35EzUmyCvsHrbZT5utPyJQL+B+?= =?us-ascii?Q?Rvyaggtx9p7tcCmt1+cyj6UJEqq5qST4pOZzH4lyd+sjq0OD489vcG2yPIY+?= =?us-ascii?Q?doI5FNLiHJ7hqJLsiQa+2wKUgUd7Mpa2wNaGRGn9kO2R3c7pqFE+0rviMPia?= =?us-ascii?Q?84s2AVpOKGigdesmr6G7aQl2ko3d+6KE6ifZjT77KSVPQ7VHC/iTXrfk7khL?= =?us-ascii?Q?0xwZ2l8O0NliSpM+5s4YA1neP0WR34YPCn0P6hcupta7SoORODvHNtp8gVEJ?= =?us-ascii?Q?rG5vNgyYqHxzJV+SIRa24sS+FVjr7LjrBdbNW0qgVN0d+2DbkeoTz1Ip4tvz?= =?us-ascii?Q?mUmHIHkEx65/IY+V2i482LTjzyAGFCz4iEE+ckh2FQpRTSbKqD2noAdhWXQ5?= =?us-ascii?Q?JRctYz4AOAgUJwAAyQiFdmBVLKsqOLVF/p4bNYIOumjm8nhlBqUoBwCRD5lN?= =?us-ascii?Q?7ubWC7GWTN93FjrDim/WR5G2wA/zwKDu7gNtLj9PsL9Ee4Tu1i8aUSKg5c2y?= =?us-ascii?Q?bgmv7eqTCrOn3kdJtDElnQoDmPJm1hsm/wvUG7d7t+FPUSXqJzgaFJnQOCrk?= =?us-ascii?Q?5HdX7ri0D+gr0+agbIadzPgubhHxDZwdaB4p5hB7dgVz7YVQeAeTfqYiF6Hi?= =?us-ascii?Q?Q3xScrQSvj/VxwNx5hHwyJbgwgCRa6jXIbLg2466WNu0Fyz3JUlPiugYrx5+?= =?us-ascii?Q?nnFOAMlhKLOZ5tBvgB3Wb7ELaTgtAzNkcQo1uft6LmtTOduXVd6r5ZiUkXj7?= =?us-ascii?Q?FPFCt/0uP+4IT9hll0NTGCymi+i5ESNRBK+Jd3jLaGnIlGyq5TFt5ghfWP7G?= =?us-ascii?Q?QA=3D=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: VWvotsu7YjFMK9iUFK4XK+hu90RWMFNGwpAFsIVxFc+8vYXNMZvS8SP5j6r7r+ffxmaCc6wfxp6KAWsy5fG13/5E2TPAHJsT4Km2vkIaHTEL9TqSJa8ehjX6rJjqjqzGs3yIpCyxkMiCyjkUHzKQ/ScqSetjI923X1ROJHhGiazx+M9LKeW9D1CISg9WfAiCj6zhn7mSnZJ7l1feZHvYeVo5/bReEzlFh08kw/neX9gVWP299BNvGO+LtoJikN0Pi7Ns9YABxD4K3Ku8Z5lOkvKaXjpwPEthimfPuSRcr19iJsFdTeRJUWLqGwYtfB7Yaxgt1/YqYN0YmeG3I1+GnOQwWNj+p6MHTGHDBETMTe0vy5Vr2JBYlPmVdhsZzd2EcijoyFh6ndw83baAo7ac0Zv+a3ITZ5418Q19RynS+7R1GusLc5hr369tIqt503qAw8XoAk1mlJ6J1QV3fjZE1K/n6uf1NBGZDBUOzq6qZamOrBMdMXiV8bmLVeyiS/gDUebRm8Z/SDnEgtGvb0PgICZ+xusNSsehR/4XdZbq1w4JSTplqw5Or67WscDqT3CwX+8WZ+SgHV1WCfjXIggrGh5T0pr0gAwsRAbB/b+Tm4o= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 45cebbdf-2df5-421a-882f-08ddc552d9b1 X-MS-Exchange-CrossTenant-AuthSource: DM4PR10MB8218.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Jul 2025 16:56:18.7361 (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: kyGMHycV/alTLWnaKq1Sl5UUvO6BqlUItHEv3YDW9qo4LXh+B/JV3OOWILHHLfiU528i3HCYeqlw0bvtx7wPl2E3DsOvlgUnLw2J04gAhVg= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS4PPF66324196D X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1099,Hydra:6.1.9,FMLib:17.12.80.40 definitions=2025-07-17_02,2025-07-17_02,2025-03-28_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 mlxscore=0 suspectscore=0 malwarescore=0 bulkscore=0 adultscore=0 spamscore=0 mlxlogscore=999 phishscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2505160000 definitions=main-2507170149 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwNzE3MDE1MCBTYWx0ZWRfX5HF2QzRCWkwH uIRUnbhUpUALrL6JgckrKsmS0oUYqO3v/ZIBx4f9DgpTL/1fK8P4AYU6JBHyi3EjAyirNyNlH6j aeTzUtxP+0WLUwI8CHkzqzj/nF5zyjyasT/i1GazN8WuWOyqEhR5QXFa03tZOLD4jXQlMHZAdNM UqdU6JLdBOa23bP8ryJbeP0tDcnuo3bGFXCU2DDsxQhwMacB4ryOjZz2XvUtqITPTuQVbmb694B 6gBSIQS1qKjoCn2y3oNx1mHdJ+DmMD2nS9UHS8XdoKu5yWL/foZ2LRcbbRt9jAQGOpIrK9Vghyf kTWp0PwaSVJH2+Z+n5tN10yGT8t2UlSVqZ7KzJT9Z2AvAro/TUvOvzLp2kfA8NE69G1Zgte78An +wg6m/o8kMYZiiKtdtIaWYfvjOX/hsnsQfVSHKgaWVQr3BwDYKorw38DMuKFdNXDQFuMEnE2 X-Proofpoint-GUID: rCheRdin7uny2tczm2K7rFgjxva_WsO2 X-Proofpoint-ORIG-GUID: rCheRdin7uny2tczm2K7rFgjxva_WsO2 X-Authority-Analysis: v=2.4 cv=J8mq7BnS c=1 sm=1 tr=0 ts=68792b38 cx=c_pps a=XiAAW1AwiKB2Y8Wsi+sD2Q==:117 a=XiAAW1AwiKB2Y8Wsi+sD2Q==:17 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=wKuvFiaSGQ0qltdbU6+NXLB8nM8=:19 a=Ol13hO9ccFRV9qXi2t6ftBPywas=:19 a=xqWC_Br6kY4A:10 a=Wb1JkmetP80A:10 a=GoEa3M9JfhUA:10 a=yPCof4ZbAAAA:8 a=bndKLP8RKODzzNnHxwIA:9 Content-Type: text/plain; charset="utf-8" Right now it appears that the code is relying upon the returned destination address having bits outside PAGE_MASK to indicate whether an error value is specified, and decrementing the increased refcount on the uffd ctx if so. This is not a safe means of determining an error value, so instead, be specific. It makes far more sense to do so in a dedicated error path, so add mremap_userfaultfd_fail() for this purpose and use this when an error arises. A vm_userfaultfd_ctx is not established until we are at the point where mremap_userfaultfd_prep() is invoked in copy_vma_and_data(), so this is a no-op until this happens. That is - uffd remap notification only occurs if the VMA is actually moved - at which point a UFFD_EVENT_REMAP event is raised. No errors can occur after this point currently, though it's certainly not guaranteed this will always remain the case, and we mustn't rely on this. However, the reason for needing to handle this case is that, when an error arises on a VMA move at the point of adjusting page tables, we revert this operation, and propagate the error. At this point, it is not correct to raise a uffd remap event, and we must handle it. This refactoring makes it abundantly clear what we are doing. We assume vrm->new_addr is always valid, which a prior change made the case even for mremap() invocations which don't move the VMA, however given no uffd context would be set up in this case it's immaterial to this change anyway. No functional change intended. Signed-off-by: Lorenzo Stoakes Reviewed-by: Vlastimil Babka --- fs/userfaultfd.c | 15 ++++++++++----- include/linux/userfaultfd_k.h | 5 +++++ mm/mremap.c | 16 ++++++++++++---- 3 files changed, 27 insertions(+), 9 deletions(-) diff --git a/fs/userfaultfd.c b/fs/userfaultfd.c index 2a644aa1a510..54c6cc7fe9c6 100644 --- a/fs/userfaultfd.c +++ b/fs/userfaultfd.c @@ -750,11 +750,6 @@ void mremap_userfaultfd_complete(struct vm_userfaultfd= _ctx *vm_ctx, if (!ctx) return; =20 - if (to & ~PAGE_MASK) { - userfaultfd_ctx_put(ctx); - return; - } - msg_init(&ewq.msg); =20 ewq.msg.event =3D UFFD_EVENT_REMAP; @@ -765,6 +760,16 @@ void mremap_userfaultfd_complete(struct vm_userfaultfd= _ctx *vm_ctx, userfaultfd_event_wait_completion(ctx, &ewq); } =20 +void mremap_userfaultfd_fail(struct vm_userfaultfd_ctx *vm_ctx) +{ + struct userfaultfd_ctx *ctx =3D vm_ctx->ctx; + + if (!ctx) + return; + + userfaultfd_ctx_put(ctx); +} + bool userfaultfd_remove(struct vm_area_struct *vma, unsigned long start, unsigned long end) { diff --git a/include/linux/userfaultfd_k.h b/include/linux/userfaultfd_k.h index df85330bcfa6..c0e716aec26a 100644 --- a/include/linux/userfaultfd_k.h +++ b/include/linux/userfaultfd_k.h @@ -259,6 +259,7 @@ extern void mremap_userfaultfd_prep(struct vm_area_stru= ct *, extern void mremap_userfaultfd_complete(struct vm_userfaultfd_ctx *, unsigned long from, unsigned long to, unsigned long len); +void mremap_userfaultfd_fail(struct vm_userfaultfd_ctx *); =20 extern bool userfaultfd_remove(struct vm_area_struct *vma, unsigned long start, @@ -371,6 +372,10 @@ static inline void mremap_userfaultfd_complete(struct = vm_userfaultfd_ctx *ctx, { } =20 +static inline void mremap_userfaultfd_fail(struct vm_userfaultfd_ctx *ctx) +{ +} + static inline bool userfaultfd_remove(struct vm_area_struct *vma, unsigned long start, unsigned long end) diff --git a/mm/mremap.c b/mm/mremap.c index 53447761e55d..db7e773d0884 100644 --- a/mm/mremap.c +++ b/mm/mremap.c @@ -1729,12 +1729,17 @@ static int check_prep_vma(struct vma_remap_struct *= vrm) return 0; } =20 -static void notify_uffd(struct vma_remap_struct *vrm, unsigned long to) +static void notify_uffd(struct vma_remap_struct *vrm, bool failed) { struct mm_struct *mm =3D current->mm; =20 + /* Regardless of success/failure, we always notify of any unmaps. */ userfaultfd_unmap_complete(mm, vrm->uf_unmap_early); - mremap_userfaultfd_complete(vrm->uf, vrm->addr, to, vrm->old_len); + if (failed) + mremap_userfaultfd_fail(vrm->uf); + else + mremap_userfaultfd_complete(vrm->uf, vrm->addr, + vrm->new_addr, vrm->old_len); userfaultfd_unmap_complete(mm, vrm->uf_unmap); } =20 @@ -1742,6 +1747,7 @@ static unsigned long do_mremap(struct vma_remap_struc= t *vrm) { struct mm_struct *mm =3D current->mm; unsigned long res; + bool failed; =20 vrm->old_len =3D PAGE_ALIGN(vrm->old_len); vrm->new_len =3D PAGE_ALIGN(vrm->new_len); @@ -1763,13 +1769,15 @@ static unsigned long do_mremap(struct vma_remap_str= uct *vrm) res =3D vrm_implies_new_addr(vrm) ? mremap_to(vrm) : mremap_at(vrm); =20 out: + failed =3D IS_ERR_VALUE(res); + if (vrm->mmap_locked) mmap_write_unlock(mm); =20 - if (!IS_ERR_VALUE(res) && vrm->mlocked && vrm->new_len > vrm->old_len) + if (!failed && vrm->mlocked && vrm->new_len > vrm->old_len) mm_populate(vrm->new_addr + vrm->old_len, vrm->delta); =20 - notify_uffd(vrm, res); + notify_uffd(vrm, failed); return res; } =20 --=20 2.50.1 From nobody Mon Oct 6 19:10:40 2025 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 2AAC62FEE05; Thu, 17 Jul 2025 16:57:38 +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=1752771462; cv=fail; b=EwJsNS38X2FRF4CuCA8vcaKXmX+01SvlZTM9rO66KVDBir6ipTO1Axu8+eT+ty7vGVT9ToE2NWbeXrdtFKmS/SG4T04LDUCSfA+r9/xeq+oaksTD0uOnchzyWhDf27D1yW72QdPVSOrzeCNYPZP6RmeXic8crIcMjdKwd2yUqxg= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1752771462; c=relaxed/simple; bh=p/Xs8QiRkto8MHKl32VM4U7cjn+x6HMWztQAecAgWuM=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=iwgGhj3owTzs77+lkmFj7bjFk2WshWmSkT/fHN3/2THyOX8TvcHvBAok53NLHmiqo5qj3BY0J9L4MsMsxK8kJsTWY10kvnXtrkaB+04In3h01k6R9WqPiuGDUtkgYjnIymJGLO/YPcmIHY6pYDaz0+wXvKORht53hoX+O4V/D0g= 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=o6H0Thln; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=AFUTAZhP; 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="o6H0Thln"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="AFUTAZhP" Received: from pps.filterd (m0333521.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 56HGC3Og009331; Thu, 17 Jul 2025 16:56:24 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=cc :content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s= corp-2025-04-25; bh=2lun/Fhcj2yL9GPIcpJfHamMkFSztgQ3iAqjuiMZdjc=; b= o6H0ThlnIsz0XObNQreLLf1LLsvs/+3QQ85WFc2VNWTiacCQlj3tHC41WXY0F3+7 buOIZFNlbzfXIQKjKczTdVXC5y/MNbyZJxb8LOICiozs1hyKJhqEIHdS0Cl3g6Je ARR6wo5dlFq4bPEL9GLShXnvr0IRU6g8w8CYzVYZTXC+rbI9FchdoWzawvWML6H8 MoHpQ070UyE+DMR7w62nXBeK+5Z1UfgnsEq7eikJNIsOVr0ou8NdYKq18vn4lLtv LlHawJRnN2LwPqC1M7q40Ew7f+E073A7rtB5o28tr7Ezwdvu3H6nCm3Ui2xEmBF1 rC4ZpBjn0MRE5FQAmcralg== Received: from phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta02.appoci.oracle.com [147.154.114.232]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 47ujy4ugyp-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Thu, 17 Jul 2025 16:56:24 +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 56HFvioo029654; Thu, 17 Jul 2025 16:56:23 GMT Received: from nam11-dm6-obe.outbound.protection.outlook.com (mail-dm6nam11on2085.outbound.protection.outlook.com [40.107.223.85]) by phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 47ue5cprdf-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Thu, 17 Jul 2025 16:56:23 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=blQj+bmeD4W3RCdlJIFpJWV+7A9be+IVW5lNp8tfaMiOlX3yJUOIN5ycm1UJ2+WCTV2x3GP6tJCeDRZSIQcisTx2Lh+/yLs20ChRF9JoKe4B88dU/eK/ZUHbPtOv9bEiFwmlOgA3IZhqPX0aa9WuDwdh1pzotouuznEE8QLkQa90c4OkuJJUdIA72oqnGoFhZ/IfBToQlS1hyQiaqqG2QUdX/t+NpLu2NDWtnIC9xmVkNM2Hv0swVtxJz0AnwMfc8B6fssCuK9I8s+XEanPkfFZXBBhZTnruICHZJeibGlsfxDRv4RQxmSkugoBwVujDIsIaZqlS5zt23Up8ec1XZg== 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=2lun/Fhcj2yL9GPIcpJfHamMkFSztgQ3iAqjuiMZdjc=; b=A4Po4bfsxpHqe2A3kvZIO2BDM0xmYJfZMbp+bPNin805vChy5oyY/ZYkpuqsI0V7rnNgIw5HeeIEtNbc6MHAGuIjPGZ9Sp5UJHa1xJ2dpuvsFcF7acSHFOgOxgrmFKo+hSbum0FzJq/8AYfSAU9NbZvJXZBbeMnUm+sOzG12yJEuwXvEVVEdhd8TceuQotLC/A9hNLPvbgWhLPP4w0BsdqCOFUC9i5gRlpi6RLWuu5khskacobJv1MNuHWcKmCl5RaTxnBdqHsjwBHrhG+c4VDBsy/tb11mfC5U6inFrqbEiYMb2ywaKatrr311w0u9sWaHx9W3nE2ZXFHtpimjsxA== 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=2lun/Fhcj2yL9GPIcpJfHamMkFSztgQ3iAqjuiMZdjc=; b=AFUTAZhPZka1VQpV1P4u1QhvdajMK+oTAvw+NJaka0m0Qekorr6PBgsCJfDYQ5bC5dh6q41q2tSVymlrIp2oMdw4YHemNrji5BVa93PxdbJhyXGmcjZTPOmj35X1t6LErLWAEOWHlP6n4K15z6fL6rpxVIPe5iG4JXLKJuW5SNw= Received: from DM4PR10MB8218.namprd10.prod.outlook.com (2603:10b6:8:1cc::16) by DS4PPF66324196D.namprd10.prod.outlook.com (2603:10b6:f:fc00::d22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8922.39; Thu, 17 Jul 2025 16:56:21 +0000 Received: from DM4PR10MB8218.namprd10.prod.outlook.com ([fe80::2650:55cf:2816:5f2]) by DM4PR10MB8218.namprd10.prod.outlook.com ([fe80::2650:55cf:2816:5f2%6]) with mapi id 15.20.8922.037; Thu, 17 Jul 2025 16:56:21 +0000 From: Lorenzo Stoakes To: Andrew Morton Cc: Peter Xu , Alexander Viro , Christian Brauner , Jan Kara , "Liam R . Howlett" , Vlastimil Babka , Jann Horn , Pedro Falcato , Rik van Riel , linux-mm@kvack.org, linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org, linux-api@vger.kernel.org Subject: [PATCH v4 06/10] mm/mremap: check remap conditions earlier Date: Thu, 17 Jul 2025 17:55:56 +0100 Message-ID: <8b4161ce074901e00602a446d81f182db92b0430.1752770784.git.lorenzo.stoakes@oracle.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: LO4P265CA0285.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:38f::19) To DM4PR10MB8218.namprd10.prod.outlook.com (2603:10b6:8:1cc::16) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DM4PR10MB8218:EE_|DS4PPF66324196D:EE_ X-MS-Office365-Filtering-Correlation-Id: 4013466e-007a-4a03-8f8c-08ddc552db0c X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|1800799024|7416014|376014; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?/iJX/T6DSmd50a+8lNSKv1NP93CO6i8G+zfwhTmRJN0gw3Q84smY47DQfg7S?= =?us-ascii?Q?hQ+Wm1BFpCUsOLV2JDsmiotQ8GN6X8Hap3/Q3oxdBpCWau2eZUQOjKUQHESD?= =?us-ascii?Q?ygSIb4EhU3Iq7DY02JBgkxZLN3/9EksZZVoY3Q1Kw2mwS5KtO+IDolGKbUZa?= =?us-ascii?Q?U6sRv6VYxA20G3ussKVM7ce8GFS2AaeQy0FpsA6xHOIT2kUCkZx4TFNYYMCP?= =?us-ascii?Q?b0iDN4DXwVMway3AgZLxWJ3pjjsrOiR2tk8DjULUxCwZ/9hosDbLcMCk0+RO?= =?us-ascii?Q?1wK2d2lKUzYAjskvhHuu3BNzISo1pTOaGqwxCH3DfObSqsRBzhY/5/SwXkO1?= =?us-ascii?Q?IuqHNvOoQ+Xn3hEewqMfQ/DuKXvOPD3ONLZ9b7BsHEDjrwDXm+gI0Amh24Yq?= =?us-ascii?Q?nVZQyFIohHMy9AGzMOr14E/eLF2zVhLlSe8wNklRMyS2qPTjevCRUMByQGO5?= =?us-ascii?Q?GEuQ5BcQ7LZUBt8UtbIx4zhy+nsJqNaQ9RmGvcP6vmJf+oVvEIRscYRCcEhy?= =?us-ascii?Q?xfGO1pyabGmN8j+VakDse/kn5ZoUcYCnr7rxO16lQesreL2zkWoRuKRTLBYy?= =?us-ascii?Q?mUByhHZ7DVR/iS4+6kD/I1z/hVkt2mML4Yb71ed+gyjuIUKzAFRb+lG86yeu?= =?us-ascii?Q?42Esek/pFwXWISCR/QDzd8ZufbK+xYud62oMvYums3V7HIqEgkgXneCUClPD?= =?us-ascii?Q?IAPHd6JwYluGYYhhr8rh+JAI/ApK2WWMJ7M+iFrD6AbMjw950wdL4DhuGZ58?= =?us-ascii?Q?qfZhrg3Aqk++Agq2IHEF+9TCr1FmflGUujldjzTjNTfciGqKe/SqkMRISrjJ?= =?us-ascii?Q?INYVPtDXUANm/tTZM+cbEvWlp+F/DPEne/Bw6eBuWdk8szWSLikrqzDcHoP7?= =?us-ascii?Q?Ksvch/QAZ0Q5/7GHs/kVuujb0jWd8lBaEHTmcPkeGD+NAVvWrxr5jec1xH+r?= =?us-ascii?Q?f96c1JM6Q494kX5JB3ItaGfCLycvRoxlNDS01NE34G+MbeJNEGc6txsfCwm5?= =?us-ascii?Q?MtX3NOD/nK3+WsfZ8xBw66Bol+VUm2vCZAact35mDg1HtrK6d8vTD+4DU+ze?= =?us-ascii?Q?0/LbruGo3X0Z0THElDZjoLSrJDqE0HbbWm3W+40i9kHwlH7/2Ci3ZyRzZ8V6?= =?us-ascii?Q?iDIfYiBjRbL3JcfnpfhIjNhW7HbamAvkG1Hdht1J+7o+bVf26eDm2Rsxpu/R?= =?us-ascii?Q?ALuM8BsXstC9WcJn0YT5dEczmIFFPh27pcvc833gKCpxfB+QexytnpuZ0zxv?= =?us-ascii?Q?wOQYAmYgAB+03EYRhg4ReP2djn7JFy5vAn9HGhQsiwTCCbfugnu49Gs7TZHT?= =?us-ascii?Q?hTGBaULe0ecval7b7F+4rixnEJOvVepDkiCqouwAxcFnkyhzjrrKvCe+9fNh?= =?us-ascii?Q?iMA6s2QIGhboSmJHhnRzVt6BlnGdcTb7I/fU6dwixSdTPUy1qw=3D=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DM4PR10MB8218.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(1800799024)(7416014)(376014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?9CO8LOHP+vLOXT412Qk6Lw6E+o9REMZVhPjN8KwD2U+SgLhlCT2RfrYehATM?= =?us-ascii?Q?WLJ2wNOdVCqL5rdFw210lpX+TGkx+Pd8ZsaPzGVEL/vuf34RK8wIqY98pDty?= =?us-ascii?Q?9OvuE15+TgQNGIPCs6g7pPJDgwzfMRd5nd053VnyzIytAEUEPvEV1W3Nj4kr?= =?us-ascii?Q?Kz9EwyKpxjdtTiqCcKxWqsyHQ5i3ih1T6+nGbquPfbn3YU8CWO81Y2Ci91gE?= =?us-ascii?Q?su7EBrDE2VDyurQ0A+x3xiIOSKixMWETdSknyQJ4t4N/c96rEEbo+Z/EcbNt?= =?us-ascii?Q?9tttxgU6bjuABzBFlErUQ4cPKYxxYXvo7hv5aHuao2DB/HuYxquoZ1oM2lkZ?= =?us-ascii?Q?kT7KJCGCKdJfHeV8dyZv77p2TTcGMUryxxtOJodpO8meummOyS3mO5Ucmie4?= =?us-ascii?Q?lm1e24NGrGJUtXfelbruUBKTuVsuoDpmSU8qTz92zg09seALRHr3tLLSF+7v?= =?us-ascii?Q?hDM9r8Tx9guVBJ692J2083e01ZgUbceJFWjfOr9J8hOB3eFZRdLD4uJpMWtU?= =?us-ascii?Q?pHarsBkTkmebU+WLAsmEepamVzDMO6dGNmf9gZ/nhZFvHEXIcBDNxSQv0AKp?= =?us-ascii?Q?es7uL1XOn2jqb/J/NjPUtpb19ZGXlHHcbz6ssvVcDxvnQ0JOzyHKrFEE/1+8?= =?us-ascii?Q?QCc9XT1vZwnNj+a6+QJGUCvPB9k507natJSHq1xZhqsT/MoMcXy7xHMPszb7?= =?us-ascii?Q?qTEUn+zqfH3YG1sA4YtS6vKdd2hHMsdZpaDf94QgGDysr8CU7v9MVuKEW2Vh?= =?us-ascii?Q?UtXKowZkbGwk3QFa4SsGzDng/njVsTbOLKpmRYfdueZoWM7R6vJ+ejjUIp+0?= =?us-ascii?Q?lXiFbPpowznZfdRkoGNqbe1dI+xoy2OwtzRaMRmtRDMEmP9kqFDgGLuZNxre?= =?us-ascii?Q?lG0J8IgETyE80jYrgwz5nt1xu0C7o5Cmrdgrb0H8mO8+LsdnN+8Z3wNDj85c?= =?us-ascii?Q?Pg3vxELdSsMZFWTHAYxjhRH/ccDu9rhMZeUVCpJ1TR4f0QgHA8WpM5tw2wCP?= =?us-ascii?Q?kvYJxFAbg+b294GG0+70J7mKzUQVbyqSBjNoJBccrJntSSA5v4VcJ6SjKz8K?= =?us-ascii?Q?xmWHaGlkk2qWXX/L67M7YPiU1vxMZlNJo1h4fToz+MbN1rZfO71wEXF6Mgxh?= =?us-ascii?Q?Qx1mG1rOK+FlXMIv47bHNWuDwkwmQFrWXV9XAlwC5rarXyBHYi4fq2HnndT+?= =?us-ascii?Q?KAYO6dOEQ3iJzW1Uj3blCo3pss54r6pYUlXtmfxCEiGocFNRc2ygX0JdhSBJ?= =?us-ascii?Q?DLoPZXcinJR3L/qGXmXWFviwjaNNccDt9jg+nF1qKwTc5aYfnOTHy+aTEkim?= =?us-ascii?Q?DNtva1kipBih/FWnc3aL2jBVl/HhuvcToWebIcJ3Lly3zb5NsiNKKonCAKTZ?= =?us-ascii?Q?tYuabvXR8zcvwvDWUOSzMPUt+Km7wrhDx+hMt3sMiWE4yn58a0r3n9kwnWw4?= =?us-ascii?Q?Audj3VQP+YdGnsvn0jlYTsgtA1FMuWDWZPv3c9RqSH+AP9ft4LtLLwe1l9cY?= =?us-ascii?Q?h+Kp3RlXmZuGzfgElKrU139Qj+4tPO3r7GHd4jzz5OjJXhV4pqUgD0vsQjwx?= =?us-ascii?Q?BdGkLMEYMhP23glZWUPdxX7JoWaqiifIIUJMnVM2bYKmblyT1+7oKJqHfzG0?= =?us-ascii?Q?Ug=3D=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: 6kcBJbCxJfSXyERzA9g6cXYxbwujZt2TrP0rkZy4BcHHLzzkApNzGlANkHDl+coLKNIi7jOSr+iKT8TP+lbsFxhY/ImxKIgQd9acm634mzRg2L8QSz5iS6oKeTYSDX/5odEjXIHka0xPexChqJ5eEySRUj5995mpM8zfgxQW2RXw03frK7dk91HaDFCNSBkH99yX890NntYqKbCoqL/V89P2S6DVfcUHan0xEq7vbL9kjTQvlihUWzYMU4YC1YNKmcjuW46OiJGFvvHqiWz6mArBt+H1NwvEx+K731eVQ+2Y9uZyIjNFjDCnJMl16u/0cPO6KgAa/ztvHLRz7qRBRy0h49AJxrLtlbmAYqPzPHBvRqmDEC5bq1+K0LDHV3XB0x5LTOtGMqVS4tNnSkk9q2fzEeoyG7ObcDMdPWxz0yc70vThrXmcvvRFlUhRkbQU4oFa2c3TkVGzN/uhouiPVEK+OVj1ek6jg1Pg8qUF4ixsuRmqs5nEyY8oa+3Y0i2M9rNcvud2kymjvhGp3CqbKmGOU27pQPLmYtyjL44SYmRUP5E1RgfBkEGUb8BVpMsxjoZ0Ncg3K5+M9ySHU63JJDGcXKbLwFibBvj8Zb0YXhI= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 4013466e-007a-4a03-8f8c-08ddc552db0c X-MS-Exchange-CrossTenant-AuthSource: DM4PR10MB8218.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Jul 2025 16:56:21.0109 (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: c5rRnqvcgtqLpkH9Xsft5+yDSyJgW3CBUNyUMhtpp2H2Hrd7aRVd4ObGTh/I+/gR8BM/sFnuHgTfPP9XPTzQHiv5gouogQG00Ee/u/MMIFc= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS4PPF66324196D X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1099,Hydra:6.1.9,FMLib:17.12.80.40 definitions=2025-07-17_02,2025-07-17_02,2025-03-28_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 phishscore=0 mlxscore=0 spamscore=0 suspectscore=0 adultscore=0 mlxlogscore=999 bulkscore=0 malwarescore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2505160000 definitions=main-2507170149 X-Proofpoint-ORIG-GUID: YZEO8TqNtkOnxKzQDnhw0XB6aEHi8-e6 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwNzE3MDE1MCBTYWx0ZWRfXyL68gVWN7EJJ NkMpAUfYqHS9So6n+f06xB6vG7UL+UpWJudQWmJGDloOOf3VSosI0KzM0mQF/ZtKSLMzhFTTdqb /5W8Wse+3McFfnTxKqFuYrV+WFJumTmzWdj8sw81GdLYB4t7thKkS2S/6YUOENEby269WscLSjv KNGp3Qii1zz5rqcTATV+F0l7m2eF+oBxiwFTVNEUPJwdvTFpaoQekzRNWurkjDVTPoMBCORo1hg gt2/vmoq47lrffziGLZUgFS6bY8Gxjej4LQrW+bHv1/LIsfJY39WDG9uC7829KM0NGl9GXLyV+9 eJMTO9/B1zBsjonfCoqy59gjUZVYT2PmPlu6oOZLJM05bBgtoZLlGibQfxV9KocLdlCkvKPLtnp NMojdjn0cxIxHhWdqzyMjEydDDePIfLt21pyEvc6xUPauu0fZWWs/5eez0Ax9Pvd5YCRiyqC X-Authority-Analysis: v=2.4 cv=Xtr6OUF9 c=1 sm=1 tr=0 ts=68792b38 cx=c_pps a=OOZaFjgC48PWsiFpTAqLcw==:117 a=OOZaFjgC48PWsiFpTAqLcw==:17 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=wKuvFiaSGQ0qltdbU6+NXLB8nM8=:19 a=Ol13hO9ccFRV9qXi2t6ftBPywas=:19 a=xqWC_Br6kY4A:10 a=Wb1JkmetP80A:10 a=GoEa3M9JfhUA:10 a=yPCof4ZbAAAA:8 a=QQFbvnUwB9Dxs2rSiigA:9 X-Proofpoint-GUID: YZEO8TqNtkOnxKzQDnhw0XB6aEHi8-e6 Content-Type: text/plain; charset="utf-8" When we expand or move a VMA, this requires a number of additional checks to be performed. Make it really obvious under what circumstances these checks must be performed and aggregate all the checks in one place by invoking this in check_prep_vma(). We have to adjust the checks to account for shrink + move operations by checking new_len <=3D old_len rather than new_len =3D=3D old_len. No functional change intended. Signed-off-by: Lorenzo Stoakes Reviewed-by: Vlastimil Babka Reported-by: kernel test robot --- mm/mremap.c | 28 +++++++++++++++++++--------- 1 file changed, 19 insertions(+), 9 deletions(-) diff --git a/mm/mremap.c b/mm/mremap.c index db7e773d0884..20844fb91755 100644 --- a/mm/mremap.c +++ b/mm/mremap.c @@ -1343,7 +1343,7 @@ static int remap_is_valid(struct vma_remap_struct *vr= m) if (old_len > vma->vm_end - addr) return -EFAULT; =20 - if (new_len =3D=3D old_len) + if (new_len <=3D old_len) return 0; =20 /* Need to be careful about a growing mapping */ @@ -1443,10 +1443,6 @@ static unsigned long mremap_to(struct vma_remap_stru= ct *vrm) vrm->old_len =3D vrm->new_len; } =20 - err =3D remap_is_valid(vrm); - if (err) - return err; - /* MREMAP_DONTUNMAP expands by old_len since old_len =3D=3D new_len */ if (vrm->flags & MREMAP_DONTUNMAP) { vm_flags_t vm_flags =3D vrm->vma->vm_flags; @@ -1635,10 +1631,6 @@ static unsigned long expand_vma(struct vma_remap_str= uct *vrm) { unsigned long err; =20 - err =3D remap_is_valid(vrm); - if (err) - return err; - /* * [addr, old_len) spans precisely to the end of the VMA, so try to * expand it in-place. @@ -1705,6 +1697,21 @@ static unsigned long mremap_at(struct vma_remap_stru= ct *vrm) return -EINVAL; } =20 +/* + * Will this operation result in the VMA being expanded or moved and thus = need + * to map a new portion of virtual address space? + */ +static bool vrm_will_map_new(struct vma_remap_struct *vrm) +{ + if (vrm->remap_type =3D=3D MREMAP_EXPAND) + return true; + + if (vrm_implies_new_addr(vrm)) + return true; + + return false; +} + static int check_prep_vma(struct vma_remap_struct *vrm) { struct vm_area_struct *vma =3D vrm->vma; @@ -1726,6 +1733,9 @@ static int check_prep_vma(struct vma_remap_struct *vr= m) if (!vrm_implies_new_addr(vrm)) vrm->new_addr =3D vrm->addr; =20 + if (vrm_will_map_new(vrm)) + return remap_is_valid(vrm); + return 0; } =20 --=20 2.50.1 From nobody Mon Oct 6 19:10:40 2025 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 967F92FD59C; Thu, 17 Jul 2025 16:57:40 +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=1752771462; cv=fail; b=tqbwpjEcE7ebs3mYqyuUn13nWDnv1rwTEs1oQEcbbFsoe5UZFL0xQLkunbIaTykI62DoY+S/fBYikHmp3pf9iXAsdcx/TalgVdPdx5cyLwCzuFYP1o9PcRwVelXPBndEQLvlNnlCJ4xMN26i/O7cyNJJ7I3P4m0cIat7+Yj2pa0= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1752771462; c=relaxed/simple; bh=+v/OgkLMWKqVsBsGua+0aEe2mdbNsFGqtAeEsXpDpFI=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=i5HqDSgUORwuzhk69JKJAKFUJGiIc/GYNAVvhog13p8s8J06TdncWfUY36xkHFhipBhlWPbMD7aczhn1ZD2mt9a7uDRBkaOYPO/lBc3uidtaeQabM6ToRXPCiMNx6D4okdqn/bqoWHS9GORZIVcXj2vqVSp8QjyNGRIoj0kdykE= 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=NeT2eYH1; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=xrYOg1fH; 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="NeT2eYH1"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="xrYOg1fH" Received: from pps.filterd (m0333520.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 56HGBxaa001340; Thu, 17 Jul 2025 16:56:28 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=cc :content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s= corp-2025-04-25; bh=dAG89gukQEwo2VOlxn41My9GaXocu3Pj5b39ILPto1Q=; b= NeT2eYH1g7TwA9Pl08Dgk8jjS8ATL4N3R64G4udaks/eulH+qBF5Sctl55W3pPGO prP4tNqckABTzKSyfnXmzjGMi2mC4bWoWm06uHH529FAVZl5qikM2yWHrrvra4IP HKTRzmxeI4hJMn6LPhgpVDDO27fzQbFYClRvkTnKmA+3Zzd0SHSTo020ru/1UPuS Qr5ndVbcoGU6pQcrFdHDSZF45rQ4nBguSBqkO4JVr0R0yTqEe5jH1vEYqD2wnKpd BuhdcGDw3RiYwoN2dhqr1GVUDGdMMJdC8NQVp2mZjeroJxCMy/T9qkTO1Z79wksI VdyMwdJCd6M7l8dbSk9zOQ== Received: from phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta03.appoci.oracle.com [138.1.37.129]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 47uhjfc4fp-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Thu, 17 Jul 2025 16:56:28 +0000 (GMT) Received: from pps.filterd (phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com [127.0.0.1]) by phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (8.18.1.2/8.18.1.2) with ESMTP id 56HFedQ7023999; Thu, 17 Jul 2025 16:56:27 GMT Received: from nam12-mw2-obe.outbound.protection.outlook.com (mail-mw2nam12on2041.outbound.protection.outlook.com [40.107.244.41]) by phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 47ue5cxysp-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Thu, 17 Jul 2025 16:56:26 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=k3gJFySccqWieOQ+pvhfdGB7h6vci2qYmEWDQlIzg7HictYyDK7eg9+hP1uIfdXnMnsVga+Xtdiv3QG+fBtO6y4AXDTfr9n2V8TROIQSFDn7VdSnCOvmbgZV4IO2tlV81/aDSXjTK46sAel6FabTHoFnimulk7mU82UFGxb5VMfLSglricbo9WoKo+BXXkYHQp4cRg00h8NS1c72g1unApyWvnY7EcC3lNcV6qRZMdSE6K8ruCUJnoooJ9HzkHsMdFYDrCLCx6JSn9vJhVw8bPldV+Z9jLFZ1mEI5ip6kbft8hNyuYX/v9he1rNCpBeAMmNbJdD3lgfbynY7zlrSNw== 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=dAG89gukQEwo2VOlxn41My9GaXocu3Pj5b39ILPto1Q=; b=dG5Ct3a+aR/xH5ENbdE9TiLm0yhDF6/QIXNPYGXMt56nCadelnnhzj52fD1Cu+MVHgdFyh3lUcrlWJ62c/ofw3uLhzZY5Gng/27Fc78H9VsQhZFBV4TWZAbBJqCfYNoXE6ukKkhCsN9cFI3doqsQbsLvoi5yr0f8LRns0eDlZH3ksRzrhuBDip6eZfu56iSEbG8o15xraJQn46VAzZTatAvWORaPgWF7VWs1/wSN19CJayrLY0gcJexjPSiOoRIE8ybsI+YCOT2yanx6yd9BRuBZ+FMPAsTapLPfLk9Nw/PEEG+eQJHNUCAD5ezFJineUvURcFL0RH39IdRtTJrtXg== 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=dAG89gukQEwo2VOlxn41My9GaXocu3Pj5b39ILPto1Q=; b=xrYOg1fHg8lZMYq7bQf8I+QXoyMhmUQ3ZkZfn50/AKrbGB7AHZhdkNCkczuKOapnLxf3rIzJ+F2HDpEIQt9Cer23gVqbD1oayjyad74LP1xBBOQcY7UZcpePv9rh/DXQMy6169TZ2YrnhW0TfgvGxYfL7HkYJvkJoaodKeADDHo= Received: from DM4PR10MB8218.namprd10.prod.outlook.com (2603:10b6:8:1cc::16) by DS4PPF66324196D.namprd10.prod.outlook.com (2603:10b6:f:fc00::d22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8922.39; Thu, 17 Jul 2025 16:56:23 +0000 Received: from DM4PR10MB8218.namprd10.prod.outlook.com ([fe80::2650:55cf:2816:5f2]) by DM4PR10MB8218.namprd10.prod.outlook.com ([fe80::2650:55cf:2816:5f2%6]) with mapi id 15.20.8922.037; Thu, 17 Jul 2025 16:56:23 +0000 From: Lorenzo Stoakes To: Andrew Morton Cc: Peter Xu , Alexander Viro , Christian Brauner , Jan Kara , "Liam R . Howlett" , Vlastimil Babka , Jann Horn , Pedro Falcato , Rik van Riel , linux-mm@kvack.org, linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org, linux-api@vger.kernel.org Subject: [PATCH v4 07/10] mm/mremap: move remap_is_valid() into check_prep_vma() Date: Thu, 17 Jul 2025 17:55:57 +0100 Message-ID: <4d0669c23531629d8ead42aa701c6237bd6bf012.1752770784.git.lorenzo.stoakes@oracle.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: LO4P123CA0621.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:294::21) To DM4PR10MB8218.namprd10.prod.outlook.com (2603:10b6:8:1cc::16) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DM4PR10MB8218:EE_|DS4PPF66324196D:EE_ X-MS-Office365-Filtering-Correlation-Id: 2ed4b9bf-59bf-4338-0389-08ddc552dc58 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|1800799024|7416014|376014; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?gHQa6Vqi2vPWdymCkB7/ZsCIbfCds3L7AtoKoLapeKIIeldwKASS3km+REpc?= =?us-ascii?Q?RaVcPFUoVdiaCbTBMDNMwTgU9CEo8NmWWw3E/BWbi7khZ3MdcrrfA9uPmFfP?= =?us-ascii?Q?LEU3xddQD/zO1+8hxQpWQP1s7VWZvgfBH5YXpiRKELp7qU9HmdBXT0NSkQFx?= =?us-ascii?Q?XDTesR+JW9pKwQkUQYmJkOPOKYvK2o8OYVRnpk3Q2Q7+CkvMuFD4qx/7SbK3?= =?us-ascii?Q?BCJdldhxijcrRIQE7Z1D2JpcsAXKiU0Zr9TSTlEYWNkXSxNDE3Cbn1Dav5Sg?= =?us-ascii?Q?BUAjFYilRJQ5h/BLO0mnmQnuUZeGroPSrAfdljMJzbmTnXDhuLKg+Tsk9aig?= =?us-ascii?Q?2+Qr6Zlwjj+kgy2CV5dZOeWhDsDizkxZeMEXsuQlHNWB8PIIAkw1mKVoYCmJ?= =?us-ascii?Q?nm1TyBK6S658CSSlBofAoAcjAFuLc8lrNheU/qhORPwG3vKNw4noSb15a1KK?= =?us-ascii?Q?lDxjbmY/am5s1KXV6LRNFVgkHmGMdLB/Y/+Mv9g+R73mfh2N7Qt22cpHXL3P?= =?us-ascii?Q?b+pZ4xbcQKlOElqJJszXh7477oIL+3mNggrSLeAjCe6Wl1wntWz28oRdU/4E?= =?us-ascii?Q?x8q4hGeUPPpaFPyB+D5zrDSouKn7AZFwj4EdD3QHmaTGl4XFwp2f/ElqXFwS?= =?us-ascii?Q?1tQ9hZu8q9N8Pi9R12MZf/pLVXtOjJkMBmlSCFZ/pMocLHoKiTE3uO2KmV04?= =?us-ascii?Q?xz4MwDv5t/2qvfIqJA5dF8Yv/L9fydSuz9T4K87JoHJ+hmfa0nXKFf1fVYAk?= =?us-ascii?Q?+jsHNYNaMqap/32Ic3HOW8gE0rkLMRNhelHtEscoGlY8RSmu80NvBqnTMhWx?= =?us-ascii?Q?Mma7Um3sbwAgZlQCAH67lBpOCayaB/cuNXcLcXFFWqaRYErYFCqKPpvKEmSq?= =?us-ascii?Q?9noI52qAbjTFbj6SUKRTBZbYB57BicsgXLn6YYLYIfnShplzFQL2A/LA1Jrw?= =?us-ascii?Q?yIzPOLTLekmGz+URfhm1SwqvtZ5foQC1HeibxgRRCvRSBC3s2jlVVGaNNHVW?= =?us-ascii?Q?VgB0ThPNucuobW4w8qz3AEAkmJB3PeF7ZtIU6AhMHjUKIwnG9qHdGM+8x88D?= =?us-ascii?Q?DENAT2QSSsK+PJerua9ir7E/nUYoDhI0O5YLrWdJyD8vsrq2xIruQ6/UgN/J?= =?us-ascii?Q?8W8nmzXNH6iasAw/KIEQyZ7AY5fLG5+PP6IXTTSiBAubeeTOlpLnAwEk1XkC?= =?us-ascii?Q?TLh+Z1AlXWzgwuntyb0RmgGLR51iu7JeCNuYFX1eMOAUquRzlN60YaQ16dkO?= =?us-ascii?Q?HmKmqauGZkLNP3+8qxNlwHl4/hDTtQKtp8rarPDK913DMmV+dvNv8feeQGof?= =?us-ascii?Q?cPH53llACniEVFx2tdc91Oa1zrSE2JxfVb3sLBjmmn8OrMFAq181R0kiFUZS?= =?us-ascii?Q?GWR6qoT2h+Y69v7JI9uk+hqX37t8u4chDvHlPZanPxZfLwY3asY5D3qfS+cj?= =?us-ascii?Q?qf9C2ilM2jQ=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DM4PR10MB8218.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(1800799024)(7416014)(376014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?41SUjccdHVVOry/Z21lPZdS6BSlion4HTbc/BKlY8VCdJrkjZwaMqnj1uPo9?= =?us-ascii?Q?sv6e8skhD5+wISXHs+Sxm2LqFboWuDEU8NWlXq8T4YzlcG4QAyaIonFA8V8v?= =?us-ascii?Q?m4Yu9x/SMjHe/ICQr6gtC5q4WLYHQlA/zS5Lyl3U6EioNtVaST02m3xGt2Bu?= =?us-ascii?Q?pCmTNRp/gIBP9/xtRvD40hILL3GZlinCQzLoqiPBuS52F/j2dDVQB8EZ378c?= =?us-ascii?Q?fSL5Cch5jnOrCx54rb2JlTF6465l/7zXjbHTlafLhkz5DF7xX0MDEuNINBgz?= =?us-ascii?Q?3DaDKnYuyRrAj4pVAJ3QnGhQfxfoUjzD2mWwaE64keNvwa1pQ+844e1ZLvKU?= =?us-ascii?Q?l3per0srsWzFz6M98Ih/A0yi7Jprq5cWHiHa9rkH52cjJx8A3JBzmnJrsVCQ?= =?us-ascii?Q?OFnoRyTS7sAyxa7oFWN6rjdrZb6KLjEXnMPl7LwNqePPEo7KgPw6EFuA/HQ/?= =?us-ascii?Q?luek7fK1sA9yuJEhhVizvGSK23amH3CEAn50n8Vw++BkS7W0CLX5I3vieiXj?= =?us-ascii?Q?+P+VUOoKEaeGDU5b5pYW0c4h4jMCwKCfEhlFi18HhzfI4XOouRj9AvXLm8j/?= =?us-ascii?Q?xa+MgCLXJbKbI+kgNkEKRRHweVMoebJUCgSkfyv5urOZFiTlGxlC8A50OFG9?= =?us-ascii?Q?Wdasnp9YTLdyihMZc2v8gyU8q6EyQUfUJ141LDtgda6+gyX+z9sL7WdBuqeg?= =?us-ascii?Q?06nd3UGs7I+sSOshg/u/2SeFhpyyJ9a4Apu8xCcNvVKtKEOOwgBk1VO0LxGV?= =?us-ascii?Q?FQvuTvcuq/KuDI8fnEn195fu4GYFNZHcFO+0iLJ1CeMAbE+v463rrYRWS53c?= =?us-ascii?Q?DP0XfwV/XMhAnQnYT9G9FAPsW1CawKuusQk5ESvuDQNvJFuc4VxBJCXCEffj?= =?us-ascii?Q?C+48w7uUGHwMav/szFUxnUHkcmHEBoQ0Xfs/cGVdhVvt7huV077j0xLXhXiQ?= =?us-ascii?Q?pcsHXGiltp+2Aq4hzG/SfxqDievujRIJMvXcgXyiOtYArfPr3LccinOMBrwc?= =?us-ascii?Q?2vxR9ZiPOuKhIJh51v0RuDu2eK5CKS9NxLqvjxmVsCp3ePyDj53bQOPwuVlB?= =?us-ascii?Q?As8ThKLDQQ1DO6iI7f4Y/nyg6FTU2r+YC2AInAVB9YPa1GUOUke8e1QLs7QE?= =?us-ascii?Q?eQKMfM8O+I+7DEBKVbbJDzng9hsTesec+ujOVplcbqHjD3f/gMR21Xj2Xg9I?= =?us-ascii?Q?s+WQoG9r4oT1/aGpGwR/GeFl971Y+O66ag5hIDPaPjK5QUO3lwneoxZV1Cd9?= =?us-ascii?Q?TOeuPoGSaG2DDqenEGal2TRWjNZflgUly2Wk4XWNN/L51wFg7lA8kRWMBJ7n?= =?us-ascii?Q?KVpwmw6kVAhhOFYxPhR9MjYnkaqXp1GvZTrBndlOoA8V2e1xxA0bZbvtQVGX?= =?us-ascii?Q?W5DlLhp5YM0pZGWwFIilNCZlJZnEeRKxMzXJYv7BuOyLXjbiklJnse7tZ78L?= =?us-ascii?Q?MV2A3YPo+pmue/5s8BMCJWyGaNA+nBZzSCxr1p4B18ex0PsC0om1hBSXM6qb?= =?us-ascii?Q?atn2Q1MYLO2WvVoNKk2BTu6xJGUxAlnOSHVmpmV3JBc5lBjyhBsYYTmCu/+x?= =?us-ascii?Q?qkD1SQs1J26j0S7vtRnw8U41c4fZ0UtxA97EU93UbMn7kuy+SLA/c5ZMsyS8?= =?us-ascii?Q?BQ=3D=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: NlAgGMOdIqe2JFLojQ6Z/57s20GAbY4PdxTPnUiAOj2EJprOZwdAq8aOzpOrzI8mypXM3kinqr0XBWdNGypmle9gOIIHcBqIVYOhPJuonXNKGz4CM8MF/xptSZt6akcfr1jQDPmWSNgnPQ22nakxm1GwDBcjy2dy4/BtefL4s4H4w48ESnuMj6pyWMSR+3cI7IdvQUw7P+fkdtc7H+4cVlfCWo6Xv7e/GaKK2vjfGvsw8ePe2AtD8IsLr3jtxP+DPyHxyZoX04EcUGAOjBIZiWdL7iCqeNYmTrlo2i9JMWkbcBtZSXDkbt4VRgCRbDvh01Uyrc3s61rSGkcTohnNaYLMtfoXDboX7uVqxuAQ9Hfn88cHcTnhxHNW144SpwqXWAqqvkGdeLHhfT8oHeP7ryy2Grc7QgiHRWfuqXTqejUAvYTwrXu/Kr77PnIcVL4/MiVclUPzvQTch045cjuHlTPXuHDhVVII90feBH7YDdJiSmOtdyDMrR+ZmNwcO8DQsBhC7p0IABA/lSVISGqPI0WmXseXP+CcOl03FO+CKkYPW8giQ3rHMKrYQOS7q1FbkZ6K4uDlgVrgmnWK5gRXQhBpHEc1dkssfO2qmttZ54c= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 2ed4b9bf-59bf-4338-0389-08ddc552dc58 X-MS-Exchange-CrossTenant-AuthSource: DM4PR10MB8218.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Jul 2025 16:56:23.3014 (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: y44um9pLyjC4knw7dXyi4483/PN0RvDXcG/e6+fVSlGSHQ57F5D29ycGTVjpchSUUaLFIQF/HlEoDbDzTo7BeTvn/MRjCDfq2S50t+dH5SQ= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS4PPF66324196D X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1099,Hydra:6.1.9,FMLib:17.12.80.40 definitions=2025-07-17_02,2025-07-17_02,2025-03-28_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 adultscore=0 phishscore=0 spamscore=0 mlxlogscore=999 malwarescore=0 mlxscore=0 suspectscore=0 bulkscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2505160000 definitions=main-2507170149 X-Proofpoint-GUID: YR2rv0KGEvMTrqmELX-smq10i7PiAiRb X-Authority-Analysis: v=2.4 cv=O6g5vA9W c=1 sm=1 tr=0 ts=68792b3c b=1 cx=c_pps a=WeWmnZmh0fydH62SvGsd2A==:117 a=WeWmnZmh0fydH62SvGsd2A==:17 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=wKuvFiaSGQ0qltdbU6+NXLB8nM8=:19 a=Ol13hO9ccFRV9qXi2t6ftBPywas=:19 a=xqWC_Br6kY4A:10 a=Wb1JkmetP80A:10 a=GoEa3M9JfhUA:10 a=yPCof4ZbAAAA:8 a=D2aI9kDP5h1zwDkvlbUA:9 X-Proofpoint-ORIG-GUID: YR2rv0KGEvMTrqmELX-smq10i7PiAiRb X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwNzE3MDE1MCBTYWx0ZWRfX+/NCyZ91BOHZ BZJUJGGoLEBNlo4Po+MORzBzgVyhE8C/mHB+RGVvs+qDc7BTjcthA9D8mu52Jhf/kmI5bL/wMMC RN6BewUg2UkijISqgRThP5qB9nzXqeBs4eOVrlmaR4lwjcJHj114Kl5wwkc6zCXqrPTN4CmPw2+ LqEngLpym7BoyMraHgZ6SorwZMFW02BUe31dm2L4h7akDMkDCw7io9k6OER/aS2R7poVwtCpD7R p4jsgKOO4WPGkF4YNIndnrJ3+/MNyuRGeBuOR4tD7+kD0+X2Q9Io/nvBfmPWTXAxKITb+mwBo98 x6rS4SBTxGycaL0sv1qZ58Qyfy+i1WdtSVhdbVmszE4k7I4Xzseaj6TX01VWBykey6mt6Px5Vns K1ZJbss5FxbsYbfTls9EDjbrdhwgGXJKEg+2BFXhCtr2eYgsDGtugpk27O99uf6FvoOeDIUB Content-Type: text/plain; charset="utf-8" Group parameter check logic together, moving check_mremap_params() next to it. This puts all such checks into a single place, and invokes them early so we can simply bail out as soon as we are aware that a condition is not met. No functional change intended. Signed-off-by: Lorenzo Stoakes Reviewed-by: Vlastimil Babka --- mm/mremap.c | 273 +++++++++++++++++++++++++--------------------------- 1 file changed, 131 insertions(+), 142 deletions(-) diff --git a/mm/mremap.c b/mm/mremap.c index 20844fb91755..3678f21c2c36 100644 --- a/mm/mremap.c +++ b/mm/mremap.c @@ -1306,64 +1306,6 @@ static unsigned long move_vma(struct vma_remap_struc= t *vrm) return err ? (unsigned long)err : vrm->new_addr; } =20 -/* - * remap_is_valid() - Ensure the VMA can be moved or resized to the new le= ngth, - * at the given address. - * - * Return 0 on success, error otherwise. - */ -static int remap_is_valid(struct vma_remap_struct *vrm) -{ - struct mm_struct *mm =3D current->mm; - struct vm_area_struct *vma =3D vrm->vma; - unsigned long addr =3D vrm->addr; - unsigned long old_len =3D vrm->old_len; - unsigned long new_len =3D vrm->new_len; - unsigned long pgoff; - - /* - * !old_len is a special case where an attempt is made to 'duplicate' - * a mapping. This makes no sense for private mappings as it will - * instead create a fresh/new mapping unrelated to the original. This - * is contrary to the basic idea of mremap which creates new mappings - * based on the original. There are no known use cases for this - * behavior. As a result, fail such attempts. - */ - if (!old_len && !(vma->vm_flags & (VM_SHARED | VM_MAYSHARE))) { - pr_warn_once("%s (%d): attempted to duplicate a private mapping with mre= map. This is not supported.\n", - current->comm, current->pid); - return -EINVAL; - } - - if ((vrm->flags & MREMAP_DONTUNMAP) && - (vma->vm_flags & (VM_DONTEXPAND | VM_PFNMAP))) - return -EINVAL; - - /* We can't remap across vm area boundaries */ - if (old_len > vma->vm_end - addr) - return -EFAULT; - - if (new_len <=3D old_len) - return 0; - - /* Need to be careful about a growing mapping */ - pgoff =3D (addr - vma->vm_start) >> PAGE_SHIFT; - pgoff +=3D vma->vm_pgoff; - if (pgoff + (new_len >> PAGE_SHIFT) < pgoff) - return -EINVAL; - - if (vma->vm_flags & (VM_DONTEXPAND | VM_PFNMAP)) - return -EFAULT; - - if (!mlock_future_ok(mm, vma->vm_flags, vrm->delta)) - return -EAGAIN; - - if (!may_expand_vm(mm, vma->vm_flags, vrm->delta >> PAGE_SHIFT)) - return -ENOMEM; - - return 0; -} - /* * The user has requested that the VMA be shrunk (i.e., old_len > new_len)= , so * execute this, optionally dropping the mmap lock when we do so. @@ -1490,77 +1432,6 @@ static bool vrm_can_expand_in_place(struct vma_remap= _struct *vrm) return true; } =20 -/* - * Are the parameters passed to mremap() valid? If so return 0, otherwise = return - * error. - */ -static unsigned long check_mremap_params(struct vma_remap_struct *vrm) - -{ - unsigned long addr =3D vrm->addr; - unsigned long flags =3D vrm->flags; - - /* Ensure no unexpected flag values. */ - if (flags & ~(MREMAP_FIXED | MREMAP_MAYMOVE | MREMAP_DONTUNMAP)) - return -EINVAL; - - /* Start address must be page-aligned. */ - if (offset_in_page(addr)) - return -EINVAL; - - /* - * We allow a zero old-len as a special case - * for DOS-emu "duplicate shm area" thing. But - * a zero new-len is nonsensical. - */ - if (!vrm->new_len) - return -EINVAL; - - /* Is the new length or address silly? */ - if (vrm->new_len > TASK_SIZE || - vrm->new_addr > TASK_SIZE - vrm->new_len) - return -EINVAL; - - /* Remainder of checks are for cases with specific new_addr. */ - if (!vrm_implies_new_addr(vrm)) - return 0; - - /* The new address must be page-aligned. */ - if (offset_in_page(vrm->new_addr)) - return -EINVAL; - - /* A fixed address implies a move. */ - if (!(flags & MREMAP_MAYMOVE)) - return -EINVAL; - - /* MREMAP_DONTUNMAP does not allow resizing in the process. */ - if (flags & MREMAP_DONTUNMAP && vrm->old_len !=3D vrm->new_len) - return -EINVAL; - - /* Target VMA must not overlap source VMA. */ - if (vrm_overlaps(vrm)) - return -EINVAL; - - /* - * move_vma() need us to stay 4 maps below the threshold, otherwise - * it will bail out at the very beginning. - * That is a problem if we have already unmaped the regions here - * (new_addr, and old_addr), because userspace will not know the - * state of the vma's after it gets -ENOMEM. - * So, to avoid such scenario we can pre-compute if the whole - * operation has high chances to success map-wise. - * Worst-scenario case is when both vma's (new_addr and old_addr) get - * split in 3 before unmapping it. - * That means 2 more maps (1 for each) to the ones we already hold. - * Check whether current map count plus 2 still leads us to 4 maps below - * the threshold, otherwise return -ENOMEM here to be more safe. - */ - if ((current->mm->map_count + 2) >=3D sysctl_max_map_count - 3) - return -ENOMEM; - - return 0; -} - /* * We know we can expand the VMA in-place by delta pages, so do so. * @@ -1712,9 +1583,26 @@ static bool vrm_will_map_new(struct vma_remap_struct= *vrm) return false; } =20 +static void notify_uffd(struct vma_remap_struct *vrm, bool failed) +{ + struct mm_struct *mm =3D current->mm; + + /* Regardless of success/failure, we always notify of any unmaps. */ + userfaultfd_unmap_complete(mm, vrm->uf_unmap_early); + if (failed) + mremap_userfaultfd_fail(vrm->uf); + else + mremap_userfaultfd_complete(vrm->uf, vrm->addr, + vrm->new_addr, vrm->old_len); + userfaultfd_unmap_complete(mm, vrm->uf_unmap); +} + static int check_prep_vma(struct vma_remap_struct *vrm) { struct vm_area_struct *vma =3D vrm->vma; + struct mm_struct *mm =3D current->mm; + unsigned long addr =3D vrm->addr; + unsigned long old_len, new_len, pgoff; =20 if (!vma) return -EFAULT; @@ -1731,26 +1619,127 @@ static int check_prep_vma(struct vma_remap_struct = *vrm) vrm->remap_type =3D vrm_remap_type(vrm); /* For convenience, we set new_addr even if VMA won't move. */ if (!vrm_implies_new_addr(vrm)) - vrm->new_addr =3D vrm->addr; + vrm->new_addr =3D addr; + + /* Below only meaningful if we expand or move a VMA. */ + if (!vrm_will_map_new(vrm)) + return 0; =20 - if (vrm_will_map_new(vrm)) - return remap_is_valid(vrm); + old_len =3D vrm->old_len; + new_len =3D vrm->new_len; + + /* + * !old_len is a special case where an attempt is made to 'duplicate' + * a mapping. This makes no sense for private mappings as it will + * instead create a fresh/new mapping unrelated to the original. This + * is contrary to the basic idea of mremap which creates new mappings + * based on the original. There are no known use cases for this + * behavior. As a result, fail such attempts. + */ + if (!old_len && !(vma->vm_flags & (VM_SHARED | VM_MAYSHARE))) { + pr_warn_once("%s (%d): attempted to duplicate a private mapping with mre= map. This is not supported.\n", + current->comm, current->pid); + return -EINVAL; + } + + if ((vrm->flags & MREMAP_DONTUNMAP) && + (vma->vm_flags & (VM_DONTEXPAND | VM_PFNMAP))) + return -EINVAL; + + /* We can't remap across vm area boundaries */ + if (old_len > vma->vm_end - addr) + return -EFAULT; + + if (new_len <=3D old_len) + return 0; + + /* Need to be careful about a growing mapping */ + pgoff =3D (addr - vma->vm_start) >> PAGE_SHIFT; + pgoff +=3D vma->vm_pgoff; + if (pgoff + (new_len >> PAGE_SHIFT) < pgoff) + return -EINVAL; + + if (vma->vm_flags & (VM_DONTEXPAND | VM_PFNMAP)) + return -EFAULT; + + if (!mlock_future_ok(mm, vma->vm_flags, vrm->delta)) + return -EAGAIN; + + if (!may_expand_vm(mm, vma->vm_flags, vrm->delta >> PAGE_SHIFT)) + return -ENOMEM; =20 return 0; } =20 -static void notify_uffd(struct vma_remap_struct *vrm, bool failed) +/* + * Are the parameters passed to mremap() valid? If so return 0, otherwise = return + * error. + */ +static unsigned long check_mremap_params(struct vma_remap_struct *vrm) + { - struct mm_struct *mm =3D current->mm; + unsigned long addr =3D vrm->addr; + unsigned long flags =3D vrm->flags; =20 - /* Regardless of success/failure, we always notify of any unmaps. */ - userfaultfd_unmap_complete(mm, vrm->uf_unmap_early); - if (failed) - mremap_userfaultfd_fail(vrm->uf); - else - mremap_userfaultfd_complete(vrm->uf, vrm->addr, - vrm->new_addr, vrm->old_len); - userfaultfd_unmap_complete(mm, vrm->uf_unmap); + /* Ensure no unexpected flag values. */ + if (flags & ~(MREMAP_FIXED | MREMAP_MAYMOVE | MREMAP_DONTUNMAP)) + return -EINVAL; + + /* Start address must be page-aligned. */ + if (offset_in_page(addr)) + return -EINVAL; + + /* + * We allow a zero old-len as a special case + * for DOS-emu "duplicate shm area" thing. But + * a zero new-len is nonsensical. + */ + if (!vrm->new_len) + return -EINVAL; + + /* Is the new length or address silly? */ + if (vrm->new_len > TASK_SIZE || + vrm->new_addr > TASK_SIZE - vrm->new_len) + return -EINVAL; + + /* Remainder of checks are for cases with specific new_addr. */ + if (!vrm_implies_new_addr(vrm)) + return 0; + + /* The new address must be page-aligned. */ + if (offset_in_page(vrm->new_addr)) + return -EINVAL; + + /* A fixed address implies a move. */ + if (!(flags & MREMAP_MAYMOVE)) + return -EINVAL; + + /* MREMAP_DONTUNMAP does not allow resizing in the process. */ + if (flags & MREMAP_DONTUNMAP && vrm->old_len !=3D vrm->new_len) + return -EINVAL; + + /* Target VMA must not overlap source VMA. */ + if (vrm_overlaps(vrm)) + return -EINVAL; + + /* + * move_vma() need us to stay 4 maps below the threshold, otherwise + * it will bail out at the very beginning. + * That is a problem if we have already unmaped the regions here + * (new_addr, and old_addr), because userspace will not know the + * state of the vma's after it gets -ENOMEM. + * So, to avoid such scenario we can pre-compute if the whole + * operation has high chances to success map-wise. + * Worst-scenario case is when both vma's (new_addr and old_addr) get + * split in 3 before unmapping it. + * That means 2 more maps (1 for each) to the ones we already hold. + * Check whether current map count plus 2 still leads us to 4 maps below + * the threshold, otherwise return -ENOMEM here to be more safe. + */ + if ((current->mm->map_count + 2) >=3D sysctl_max_map_count - 3) + return -ENOMEM; + + return 0; } =20 static unsigned long do_mremap(struct vma_remap_struct *vrm) --=20 2.50.1 From nobody Mon Oct 6 19:10:40 2025 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 117082FE36F; Thu, 17 Jul 2025 16:57:40 +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=1752771462; cv=fail; b=Irm9TrrlA3F4iV33b1eRE/vjSZDGG4RnjQ2y2tWQHdBex0herTYfLkms83ktN3qUdWlPCzPR2P3pu0FmAp0s2xiFdXv97wfV8LcE2FVMislpRPhcwynvKEvg2YW0VZsTTPYi+Dovj2jzDlcv4D/aiilJ3sPOpThw0HEwShzmnnU= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1752771462; c=relaxed/simple; bh=BoyJ+DXK9LjmRVHNZWwH3GQc+EfvW8el2O7Eo1ADHBk=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=XfcPiReUv9agha2jn9U2i3FC1+obrLbuR/ct2bPbYC3zlhuPbyhgOMJU7FgxXHphMAF8QK9Ac2kNm52cgG8RaQzZxTe3xFVf8QCI5H0PCUgm7knrlU81cmEiJ1ul2nBHeI0hi3tsmjZR4kyfPXZANg56R33WC+dLw+aFcx4wHfo= 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=IleKjGEc; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=OMSgq+jK; 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="IleKjGEc"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="OMSgq+jK" Received: from pps.filterd (m0333520.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 56HGC0rC001372; Thu, 17 Jul 2025 16:56:29 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=QrzIzPV/zLBRxLKtjJrthVXmG/wJOSAE1k7AG/LPkk0=; b= IleKjGEcwxL0k05nqGZV7P6Gxe7bhGz2kiCOYnjJn5DM7xzpgZKqyMW6R/74Dew5 NjBcRp5lm5g+zdKHlC/z3czwPTZcFdCUwgSV0Zebe0JyH7sJw1dOZNNmAJtTxZ1O V5j9lLvA0egQ6vW3eG/FODjEL5PLs2hOnNBHyHiFdXa2hWqJJ9ePwuXz/lYUv3AR BcqlWHlS3/elB/eZ7lGEGoAjre12iybYsit/9sPkTWdzzZRv2uWuyD7acJEmY+RE HtAYXpWEtjZY5So50oOQnWJyxu+QIZqclLM8oYpy1+s7C458AvsVtHQHGWKTdhAa /rqJIgpVEcI1mirQvS/8dA== Received: from iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta02.appoci.oracle.com [147.154.18.20]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 47uhjfc4fs-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Thu, 17 Jul 2025 16:56:28 +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 56HGsPcd040542; Thu, 17 Jul 2025 16:56:28 GMT Received: from nam12-mw2-obe.outbound.protection.outlook.com (mail-mw2nam12on2040.outbound.protection.outlook.com [40.107.244.40]) by iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 47ue5d1sks-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Thu, 17 Jul 2025 16:56:28 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=mKJGPiydCHSvM4M1RdEgD/NX4xfjAC+vg9FITNm7iFwP9vmbBcigFNg9rcpFrM3ybGBd4JljYOnHkna6ebp2CyhbK6gJwmkEBnypHjM+K0oyOx8S5j2qFpEuGt4WE/kVyAKGKjw1DkzWJiQWKHsSbzEpzbn7oht46dIsohWX8+PF7O/jIvIwe/wKBz5DRpbozKlQCMdcMa+1ytIHAf8kSVxJZ9nSYuIAmpqF/qkStumWH83ThnmrNM7b2LmcJOlhcuN3X9WXXNtGFkahHtQSV68nqRu3PL0OKYzGJhuczQShlNVwnspM1HMtWmwTV6BJ3CK0ebIK1r67TwIqJ8a1yw== 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=QrzIzPV/zLBRxLKtjJrthVXmG/wJOSAE1k7AG/LPkk0=; b=E1xYvlJTqVTswddmAuYWN7zDTvKywyMEMmyheretcl+NSIzmbN/LCqmXin4krhLEN6gVSldrXoRm4JR/s4wcsz3LLatRy8zYtM/h3Bc502dww9qRQ8lgtQ+G+zWjBhKwUMp/bPaKKQLrFGvcYvPKE1aoZYVdkuIk8hSKLwNqNOb0pHlHwKYuBUWw44zUO3PmUSy1rlRmkYoisFr52MsbZ6pHUCwgKfq21Miz0YxGI61qktld6PE4DtDTz0zWRQF84TAPsuwy1zsy4k68zsmHdYW+QZGqmtxBZEoDrAKMaDqfMr57aJyTqKI89TglOqeRE/VxCUSX3yi/RZPY3bbJRg== 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=QrzIzPV/zLBRxLKtjJrthVXmG/wJOSAE1k7AG/LPkk0=; b=OMSgq+jKbuaBmwhHZfpHY6aK/pbN3uNRdBInEoNJpfWyrtmzvl3+peg+0SAvHVQ2qUBlu30Xv/Xp7YK3W49AKsUzu+fK5QZQpwo1uRn0BGXY/HXUMdYAQy4Qg56NwBYtKUFa2H/JiTiuhdvPfIXQz+yJIgZih90y85QEGGW95Tg= Received: from DM4PR10MB8218.namprd10.prod.outlook.com (2603:10b6:8:1cc::16) by PH0PR10MB7098.namprd10.prod.outlook.com (2603:10b6:510:26e::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8880.16; Thu, 17 Jul 2025 16:56:25 +0000 Received: from DM4PR10MB8218.namprd10.prod.outlook.com ([fe80::2650:55cf:2816:5f2]) by DM4PR10MB8218.namprd10.prod.outlook.com ([fe80::2650:55cf:2816:5f2%6]) with mapi id 15.20.8922.037; Thu, 17 Jul 2025 16:56:25 +0000 From: Lorenzo Stoakes To: Andrew Morton Cc: Peter Xu , Alexander Viro , Christian Brauner , Jan Kara , "Liam R . Howlett" , Vlastimil Babka , Jann Horn , Pedro Falcato , Rik van Riel , linux-mm@kvack.org, linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org, linux-api@vger.kernel.org Subject: [PATCH v4 08/10] mm/mremap: clean up mlock populate behaviour Date: Thu, 17 Jul 2025 17:55:58 +0100 Message-ID: <2358b0006baa9cab83db4259817794f16fe1992e.1752770784.git.lorenzo.stoakes@oracle.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: LO4P123CA0318.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:197::17) To DM4PR10MB8218.namprd10.prod.outlook.com (2603:10b6:8:1cc::16) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DM4PR10MB8218:EE_|PH0PR10MB7098:EE_ X-MS-Office365-Filtering-Correlation-Id: 740a38fd-439a-43ef-60f1-08ddc552ddb3 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|1800799024|7416014|376014; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?MW/DpxZfeJYx/V+9McXfd8JbvaJmw36/jyffWiw1bneEunaZNdkxlw+c8bjK?= =?us-ascii?Q?9gX8hDr18tlWLJy0orOq1X0+wUj4S2sovxPqNC60p0xntXqGyznsGgb7sXgv?= =?us-ascii?Q?x8LIJrSbmXo02ClBkdAxyf1IDMLOkoeDJAyfFiMoXZkEweptsrx0k0Bcgy4w?= =?us-ascii?Q?59ffaJor+SFQVZlxWvFvGcQ56suRfXw3IGWlWn/D6DQShPuWEdHQA5wh1D1Q?= =?us-ascii?Q?d0Z8WVlqg4JTj/qm0ETiuoLtmm3pkIGUMfubQoqElEzejdfOPNfSfKEfGQ5n?= =?us-ascii?Q?RW+Pf213yjIRABblwHeYVCAGgcTo6BQIpx2GyUIZXii8LBwTp+x0r0tYML8Q?= =?us-ascii?Q?C/aMtuFwjj0GInNTchTpMZ9brlg0poDaq+y9UI10tcAHm8ebuNhScpr440SY?= =?us-ascii?Q?TZAI2wrUx0jwxwEW5fI3fhUj8/KWmF0pVxWhHQIcIEOsDB6RbSSglH77kdpE?= =?us-ascii?Q?UV6Vr00lh8uPq5RfFtXVECRzMBUPbXP+cSmYb2QTdCrYyQnUdcKkoETe7apm?= =?us-ascii?Q?xgYL9HrCGyHhieo/jIuSZI557zECJ87kf6kQh8qUTtZbjw0eVprGct1gmFjH?= =?us-ascii?Q?knFGj2vZ0kGo8EEVm/CbM+V2l6FkMxAbQ3q/Is7UO/JWYxoyF2jOkdJkKLEF?= =?us-ascii?Q?kW08esX36kCtg14tOr9jEqppD3ug645q68QT2bPP0gfGuaK3+i5OWxVFKG5k?= =?us-ascii?Q?Sk+jvCqI10FofpA2JikaHtRRogDe8prjdDukVM75T1yPiiQHXGEiGQ6z0OfP?= =?us-ascii?Q?aAWD4CDO5m7SYwE1c88BgQnPMZvA+pOV4Afi1+lBgNWPHydx5kStWNOA1x7d?= =?us-ascii?Q?7BML6UrqHSUy92BlfwRtMgZUpKVe1GvB/lyNbswWM8fKvIsre0A2rwwXOIv/?= =?us-ascii?Q?ue6Na6GmRbozDNVMuu85saQw/y9q8Jygu4oVEA2Rcijb65Oibe2H22Y/DSXs?= =?us-ascii?Q?qw/wma/nJvS9sxp0l2zHsNmULm1X3Vqe+ku5T3LvM+7RNqepMvx7AszT7dB3?= =?us-ascii?Q?5Zh9kyjEc2tDZj5LQwiABlB21KGyMS1zCmv344KpV8S04f1yb4NM2hyhxANU?= =?us-ascii?Q?UivA6jwcEsjcOZzxrIzc6OWINjH2gz72yphHqvv/P2VhU1fG1K3aOrwo/xOl?= =?us-ascii?Q?LsdPo/WHCxBt0ACmLYE2k+4iJQhtbKrAMdachVf5ING8p0ARMztxwcJIbyxu?= =?us-ascii?Q?+jaZrVkpa2LY45hWYuU4S1rq7LhqthuXDJSOTVIdtrj3mJDNdeWkR/3kI2RA?= =?us-ascii?Q?s52ArsepdhSD/F2uLbx6srh1TQ5ODGVNsP6AhfYT9uRgaPhfypEZCyFiiL2U?= =?us-ascii?Q?n5zfYfl7y2mwjzbBoUuD8Oqo2pGy5Mc00fCaH5I6fBrSRFobLFMPULOW0XWk?= =?us-ascii?Q?a60i9qEkDsByJJyupYlT/J84lRUYcw5K4FPmm6EHkCXZ/o1aB4pV37QcEbvM?= =?us-ascii?Q?+tEbYO4TsEg=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DM4PR10MB8218.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(1800799024)(7416014)(376014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?oIE+NGkGRtInX3Ln5TRaCTQ32zPRr8B2b16LVAYoadxBF1Hr/6yTg2oBL8uQ?= =?us-ascii?Q?7wLjnJA1qu5/EW3kSlGZCnSEjn5dKaImnaLzg5EBIU/4eXPqDXkphF96uPTK?= =?us-ascii?Q?qGEYoZ4mXN3VAKBMSatV8PFo04ocmLMn4cYjkPAc60ERk6TGMwB2r1o5rhOS?= =?us-ascii?Q?dsLpUCsbpbi4nVUo7TtFLHHOA82+GeQQCgdNp+f5N98MWp8wqGGCnjp+qF2y?= =?us-ascii?Q?QiAjESvegE8+9T/9vtbAS1kC/B1W6oHrnQ8nnUDkdN6fTKuP5sVGJ+4N/1OP?= =?us-ascii?Q?ZiQ84AfRVIiE4pnopBWhOMcFodG70c3eDFIyKOzT1USkjy/zOruvZtysNOY9?= =?us-ascii?Q?PKgZOiWshCVPU8LQjdiIbVgXj+oYZoFWBIArTLsdA6WoAjm8GtoRLw6YBuZS?= =?us-ascii?Q?sI8AE04TaasrDhGjOie2iag3EI6GrDVuPDnhvCPAekDV4xCfpLtdHwcC5znI?= =?us-ascii?Q?tdpNm0WxGZFrnFwXqAH+ElEF4r854rC1+ltjglgGDpmAsP+geKDn0XRqZUnW?= =?us-ascii?Q?pLh9VnH4WZpVPFOG55NWpl9pxN45764nUzsFY9hP+ZfvigPUA5gFKHsmgJy+?= =?us-ascii?Q?139de46qwE5w7rsJduRmgeCTQcO59LEdNxbdb5q0s65E/ggjIA7kt42L1FQV?= =?us-ascii?Q?y2Iei7WQGWjMPP5vFB8jEffCa7iMcRw2N2YGXlsoMdMllsfM2uMLdPnusw3V?= =?us-ascii?Q?y0zrXlsGJmaJtopMgVzhRTOrT0IRUen0IXY2vbR7hTnn5/wiKqZIrB9L/cY8?= =?us-ascii?Q?5al3AaV7JYXiWNDFhxWqqtCcp10whZIlNmOO7EPzLR9aacSSWEpOLp+U6n2g?= =?us-ascii?Q?ndK0rELH+OgtZSCVzafLu7+KXygYXVRQDNf9wRJ3jAPwheg8KRlP06ujnPkO?= =?us-ascii?Q?Q2hVIaCJczXiJJrAYAXIXZPqGCu6d7MKT4ZTmjO4+K7kLMooaeADxH3UXhJF?= =?us-ascii?Q?A5hDe8KeydQPDRP931knqV8W/1twWys4uG2EOadXhG252EwRrqxbOTbvwRFG?= =?us-ascii?Q?iiV8GBA6D0BON4+3SRuo0IIIiy4xkiL2qwgwu6n5bGnc/vsMPgV3dBWQ0YBR?= =?us-ascii?Q?AA3ovN5QI4zI+2I0rNo8L15p0CG6RpjKjUxIE8Z23IcZLbBQsykMNz1MtAtT?= =?us-ascii?Q?6h6W7ammbxMEu1Cgc6crR2HThy5RCxMi76zPT9P1+8mQzipsN9NyZy3QSXN2?= =?us-ascii?Q?fqQLU92MYqbTt7y8Qu1bBV3SqqKvEf51UrdTbJyiTAQwPWkSU1f+hQUsw4UP?= =?us-ascii?Q?g0+AkOMSshLd4XvDdvYIkEKq1nkPv2XPO8ZRvj1f8XoLGp6/kSXacljJMrow?= =?us-ascii?Q?AygD5GmmONKGVU00F6ISjeUamRD1+17pLSviN0Bz4nXKyg7V+X5UoNKK2PCJ?= =?us-ascii?Q?7FkRNd25Z065Uf34eS8/uboLnu4JBbjodLZtLZisYD87T6UTK4VAWJzJVnwd?= =?us-ascii?Q?swwcB2IZi+5chz6yYWE2g/NMBh9OvpuIwMmVKCbv/9lYsQuP8/bq6LRuIxCB?= =?us-ascii?Q?1cMErCWanRvtTAdBbw35b8b80CfuTdR/maYo4UN6Ezt6mMi1VChXpSWBopWK?= =?us-ascii?Q?GzPLdOuEjmBQWJUDQT9zDaocftclS+FIg/D1S+dy6FjJyyq70WfShFlx+seb?= =?us-ascii?Q?OQ=3D=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: KDxLQ2/WEqt8XyQ2s8j3MeS6AYzt0pbiYYZFhh6zZfMxBZV41vkE4rE30CV835sMdSmoUMqiPwr8aJiir4OcuZTfWlrC8MI1YBMOR90bDvLNxioi+tseMkyRbwM7fRA6avy/QoWJQPvhd3HCmWhMdjPrWE3952tI/c68us025WOiTKGkhLFOnT/y69jz7PsK9ByV9/kQAU62CyvnFIpu6DBnQUpbrsA5xsAsbEfA7a5Y9ZHOeb8G4EU9Wsc+6xxD2OSC0a14H7Qn5+ptACmfqWQAYOPVx298QW96ZMtKIcbDQH5HvQnfpHSeTuje1CV23WVS7WnHy2JU01ZOS/yI2FGfMkA/9l2a/QLzBA4zK62YbFRFybZ4OipjZ8ULUMkRGCVlcRwNcvRHJmb2jSLD7igQ5d7JGr7hZaPsdqTLBy/B8BgmLoW2IhoTWTXScB2NFwZ1DdJNR77elh84GMo8mDz+ZxRGZPLT0MQi9vZo8tgmzbC2ZNadbuLZprFer+BR/4Df9jSD8vFC4/ACf9z0zm0QILuoZoKvgE94GCKMz64LeB3ZrE9uTQNis2PyicjrqnMrAllPV1B5r7poBS3vD54ZpmVKgDHRyO3OFKqzFIM= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 740a38fd-439a-43ef-60f1-08ddc552ddb3 X-MS-Exchange-CrossTenant-AuthSource: DM4PR10MB8218.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Jul 2025 16:56:25.4545 (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: QvDL9oRSGGCnB53bWLhjsTeHXKpLbukP8eFeriPeGanJcTc/oxTGvd74OBTr/Vva28CuDz8+PrZ7e0OtcsMDJ9jK34PI0QZF3HtF9Gqf588= X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR10MB7098 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1099,Hydra:6.1.9,FMLib:17.12.80.40 definitions=2025-07-17_02,2025-07-17_02,2025-03-28_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 bulkscore=0 mlxscore=0 adultscore=0 spamscore=0 suspectscore=0 phishscore=0 mlxlogscore=999 malwarescore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2505160000 definitions=main-2507170149 X-Proofpoint-GUID: 6JeQyfXQMwPsNVG7jbTqPWWuPdRJzbaA X-Authority-Analysis: v=2.4 cv=O6g5vA9W c=1 sm=1 tr=0 ts=68792b3c b=1 cx=c_pps a=e1sVV491RgrpLwSTMOnk8w==:117 a=e1sVV491RgrpLwSTMOnk8w==:17 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=wKuvFiaSGQ0qltdbU6+NXLB8nM8=:19 a=Ol13hO9ccFRV9qXi2t6ftBPywas=:19 a=xqWC_Br6kY4A:10 a=Wb1JkmetP80A:10 a=GoEa3M9JfhUA:10 a=yPCof4ZbAAAA:8 a=vjQNCPEVpfjC6StvhboA:9 cc=ntf awl=host:13600 X-Proofpoint-ORIG-GUID: 6JeQyfXQMwPsNVG7jbTqPWWuPdRJzbaA X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwNzE3MDE1MCBTYWx0ZWRfX6fdzb8nPdoLM L/UtumJcJahBbguVsQCVahsz4AfmiKwmh73ndHYMux/9CXEMQGmkEmkVdyCPtplfoU6w+RlYRIP YhYbu+oxXdoj46dFOFXSpuHidwuhvtCW6JJH7Rx0LNW+6Ti3jlUFbhrTvYfnjjM6kFE04rTlb8P WON0Ky+0C6XyuDWiAtvUVwzujvoP0JGsZOJ5Bg1bJo+6YvRq6pbxbamG1gj03tHF0WrC0AQdg9b yLO42Q8/0faLJ2HJov3K/gaH9Z2ROxg9zKAsZhXcrb5xbqPSb4ef9RNLCJNauwzfwc1f9sADbRB FwGuOm4n7re4DlnTxba83+L7eAawoubGISbgegf+REV0uKi0isFZCi8d4MM4Owb1EnvlbAMwhaX XUOEPf+w4ve6LaLwbrpY2wb9aHRc/R8hsSM2cShNxD5mxalYq7r4EZFAElTSJceNnbJOF0kx Content-Type: text/plain; charset="utf-8" When an mlock()'d VMA is expanded, we need to populate the expanded region to maintain the contract that all mlock()'d memory is present (albeit - with some period after mmap unlock where the expanded part of the mapping remains unfaulted). The current implementation is very unclear, so make it absolutely explicit under what circumstances we do this. Signed-off-by: Lorenzo Stoakes Reviewed-by: Vlastimil Babka --- mm/mremap.c | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/mm/mremap.c b/mm/mremap.c index 3678f21c2c36..28e776cddc08 100644 --- a/mm/mremap.c +++ b/mm/mremap.c @@ -65,7 +65,7 @@ struct vma_remap_struct { =20 /* Internal state, determined in do_mremap(). */ unsigned long delta; /* Absolute delta of old_len,new_len. */ - bool mlocked; /* Was the VMA mlock()'d? */ + bool populate_expand; /* mlock()'d expanded, must populate. */ enum mremap_type remap_type; /* expand, shrink, etc. */ bool mmap_locked; /* Is mm currently write-locked? */ unsigned long charged; /* If VM_ACCOUNT, # pages to account. */ @@ -1010,10 +1010,8 @@ static void vrm_stat_account(struct vma_remap_struct= *vrm, struct vm_area_struct *vma =3D vrm->vma; =20 vm_stat_account(mm, vma->vm_flags, pages); - if (vma->vm_flags & VM_LOCKED) { + if (vma->vm_flags & VM_LOCKED) mm->locked_vm +=3D pages; - vrm->mlocked =3D true; - } } =20 /* @@ -1653,6 +1651,10 @@ static int check_prep_vma(struct vma_remap_struct *v= rm) if (new_len <=3D old_len) return 0; =20 + /* We are expanding and the VMA is mlock()'d so we need to populate. */ + if (vma->vm_flags & VM_LOCKED) + vrm->populate_expand =3D true; + /* Need to be careful about a growing mapping */ pgoff =3D (addr - vma->vm_start) >> PAGE_SHIFT; pgoff +=3D vma->vm_pgoff; @@ -1773,7 +1775,8 @@ static unsigned long do_mremap(struct vma_remap_struc= t *vrm) if (vrm->mmap_locked) mmap_write_unlock(mm); =20 - if (!failed && vrm->mlocked && vrm->new_len > vrm->old_len) + /* VMA mlock'd + was expanded, so populated expanded region. */ + if (!failed && vrm->populate_expand) mm_populate(vrm->new_addr + vrm->old_len, vrm->delta); =20 notify_uffd(vrm, failed); --=20 2.50.1 From nobody Mon Oct 6 19:10:40 2025 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 164B22FE322; Thu, 17 Jul 2025 16:57:44 +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=1752771467; cv=fail; b=HZXlt3h8bV1g5aXtRCTC5uRy2xyEHz68YmJpDp5xbYK4qD9oHndkjI8bjM02pVZ4J0Yq7Eshdxaj5BzeTgkMzZSZLZRf14ozj3XPGqNU2RuUv+AuuOWGjeuFNi5tUUQLlVKQJjJHDSY/xzZcbMrFxoyWudy0i9FsMcXk3v2kFSQ= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1752771467; c=relaxed/simple; bh=mPKNVCoo6VgnYdRC/VhfHz7Hivt73lXo0LJZrDM9VMo=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=tfjH4uDVQa769kPlnOwO6KsZlCkYXq/pBFJRS8jXApIV4ODj3l2GnqB8FXttz0E/+9imVRMPWBgFQ+4lRLioQrEzG4HkoNenUJoUp5vJdd8gOmtUME3+qIylvdxH+umPzfg4BkG5Osg4xM77V3TznCnP80/XpBEYL9DDWBnGn/M= 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=MZm+A8Ho; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=U79/iEYV; 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="MZm+A8Ho"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="U79/iEYV" Received: from pps.filterd (m0246631.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 56HGBxpo019289; Thu, 17 Jul 2025 16:56:31 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=cyHUroS0vUU6u4a7R46IBnQRuXpNm2xQdytXkd1rXKU=; b= MZm+A8HoWiTgXdxqMkVQjUIk15zbn/oulbrnlPgNbbCjBvztuc2iHAof+k2IXQcz sw3Jjmf2+jgjcmRSZJBxqIVONh8K01GqeuMgRo6fmOKegfylF7G3PVS2+jig1jjd R/0yxIVAQFcSYyjvt8Tfe6elgLB7T61WfnQMqb2VvOArq+GlJNx814GAnVs4jGWP HqVdK3pIPC4xXqn/s34ScAE6Ev3HBda8Gj9+tcjS/RgWPJE9Sg8LT6h9eJmXa/sT dgGy/mSMDfOu/YYJcV8ol8ekpkzZSOHdHOsLjpsoXLRlneowhUoJ//B7dWnxp52J PZ6xA2NHFjl7NKVswLu3Aw== Received: from iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta01.appoci.oracle.com [130.35.100.223]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 47uk1b3kb4-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Thu, 17 Jul 2025 16:56:31 +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 56HFPWRN013052; Thu, 17 Jul 2025 16:56:30 GMT Received: from nam12-mw2-obe.outbound.protection.outlook.com (mail-mw2nam12on2044.outbound.protection.outlook.com [40.107.244.44]) by iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 47ue5cgs44-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Thu, 17 Jul 2025 16:56:30 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=E7Z2E5LA/wA+d9voFJMNy7YwCG1ZmsF0GObCxGN7LCW7GRAUFGaUVE+mtAJ4FAbf7BEARtjs16XMpyriM52Bzw2pas/uK954o2xySL/tnBs1n4KQDEc4w+IV5+8ocJD3n+kwIFEwkROu3d8sMMSX83RcASUt5RlxnRP7tLBSnx7C+TpHfFvkvoXZ0hOdV1yYdujAqi9WpYt1knhu/NMwtmUYDKG3WPVCu5pMFwnCjJp8y+RYkaAc/AKLlrMHHthriCdgnNj15egNWeifRzW0YYx9UzqpjsdbFmvFmJWBvPx5C08Xs0jHWpN9PSjVCrujIPuRBS3HpuRvMNd6n9VA0A== 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=cyHUroS0vUU6u4a7R46IBnQRuXpNm2xQdytXkd1rXKU=; b=BvrE5gGOmhN65I3EIqPwiaRBdlfwJme3z0eymwTDzK6l2sMnX3+RzSUAgQ79R2TfiuscLJmFFlFszPCzyAA3MOvD0ykmqFz27EuC/yYsKtnRMj9cAWqfoRBMntK1U2AokQHN9YzZj6gketo69RmkDj7mP6s48uvT0fgvGMQvg6YBAYhE/m1szAQGdF2rPl8HGUyEOrxPPrhR2K9QwcodrLhR1nnHCDBWR7RLwXS+h3YlXe75JtEA3Ikt6NF+929ArFxITQocbW0+DQkwJ45i8jFdAEZL3XOPAdcGk7xKvSbQWiZowkdz6XuolWjl2T0QF8KyPCD9rBv3RJVC05uYdg== 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=cyHUroS0vUU6u4a7R46IBnQRuXpNm2xQdytXkd1rXKU=; b=U79/iEYV9CsSdyTi/kO1PD07xW4sEk+y8Hyfi5ARQexFjYzH+nlu7jQzlCbQ8LNglUhMfogzPExhR15hbiYZPXLPzgv8WcSuJl0VNeOEepfpQmZt+HgiLwzkH0crI2ZbEWjj/pyGeR/VKziKqr0Uk82ClVqb2G4grGj2pjf9mIw= Received: from DM4PR10MB8218.namprd10.prod.outlook.com (2603:10b6:8:1cc::16) by PH0PR10MB7098.namprd10.prod.outlook.com (2603:10b6:510:26e::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8880.16; Thu, 17 Jul 2025 16:56:27 +0000 Received: from DM4PR10MB8218.namprd10.prod.outlook.com ([fe80::2650:55cf:2816:5f2]) by DM4PR10MB8218.namprd10.prod.outlook.com ([fe80::2650:55cf:2816:5f2%6]) with mapi id 15.20.8922.037; Thu, 17 Jul 2025 16:56:27 +0000 From: Lorenzo Stoakes To: Andrew Morton Cc: Peter Xu , Alexander Viro , Christian Brauner , Jan Kara , "Liam R . Howlett" , Vlastimil Babka , Jann Horn , Pedro Falcato , Rik van Riel , linux-mm@kvack.org, linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org, linux-api@vger.kernel.org Subject: [PATCH v4 09/10] mm/mremap: permit mremap() move of multiple VMAs Date: Thu, 17 Jul 2025 17:55:59 +0100 Message-ID: <8cab2f2c202c4208bdfdb562635748bea6eb37bf.1752770784.git.lorenzo.stoakes@oracle.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: LO4P265CA0306.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:391::11) To DM4PR10MB8218.namprd10.prod.outlook.com (2603:10b6:8:1cc::16) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DM4PR10MB8218:EE_|PH0PR10MB7098:EE_ X-MS-Office365-Filtering-Correlation-Id: bcaadae9-028a-4102-a96b-08ddc552defe X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|1800799024|7416014|376014; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?NvitSUBtqrkdheKPD2U0sMo1Q/5dGp/GZ3hClA3AtazU/izs85Hze399pXv4?= =?us-ascii?Q?ucJi7g/Cdf/FptTZe7AIoLiEL4MITqX4UsO8VwCPb/ZhMh5h5/9ZcJi3JoZV?= =?us-ascii?Q?zK+XVIlQ871fNtZOrVz8aOu3pPRTUtQImKQfadH5KkZ8PADSvWwXUbyl/07w?= =?us-ascii?Q?pQ5vhxlXlqoAy+5J8aA2SrpLdJ6c7lmwG/wQhmF9YsR+ByOjMuoluDjeRj7j?= =?us-ascii?Q?cnwBt13Rh1cQ6nLletNKKWq5bs2JEna3aBd6UCqwESOMgQULtjhP9KEsdw+D?= =?us-ascii?Q?Y4XQEkSrX1QLDRPmwzl0/3KXe7bc58byU0V2122O+5bQf51H29FxNYoGjr5t?= =?us-ascii?Q?Cqs1zIrQDd/C+xgsEqHluvESaCIStO0dns+vh01uH4pJOH+p10e+QfV9HxT4?= =?us-ascii?Q?oHLv2kTUC9HSbApvcUDNEisQW1Yp5Mu+svKnbh+g8WbrQXtzRbtldZPWQBW/?= =?us-ascii?Q?3cgkcW2KRPtk/NngdZnBLsqWlkSq/CRTuVrzniGEKynzrp1gmc4qGxwZ60pU?= =?us-ascii?Q?8Jyyuzw/8Xj4wyYa5IJ0Bz2u/xYB9bSQyxXRCDE2SwSUw56TEvUEFCiCJqlo?= =?us-ascii?Q?qJx6tjNkuqZZDcx2fxB4lY/HCuMJZn9SCTVJROv8+RlXghNnEmtk3cF1M5C0?= =?us-ascii?Q?OEFUkrPlUlHeSM864DfiNwiVahoQOVhiwuIMRBxpH669t5o2zRAFx2652vRY?= =?us-ascii?Q?nDAqquy0tWTxzeUguBQRIuFQHJJ/PXg9ex/CdxbFu9NS8ZQ49/jkHwRTDYIr?= =?us-ascii?Q?4F1b4PFPrpNpM3U2LwdONIGEcbaA/d4cLCEahNatAbU4SEdtYVdg+VUyqacM?= =?us-ascii?Q?vRDkJ+ioh15UHeAjqfVZs1I1x/oS+oMaTesD8zCIhe2ih8hLICScOXZxoZ7s?= =?us-ascii?Q?Tgw22u1dQWSUy65u76lwSFKTdTNtfM0kPICALB4DSJZ6Pvm+zVw7Xw+00BSF?= =?us-ascii?Q?/l7fqa905Mhhv+CqNyTOX6BJl76GbJJuFbYzY01fwqhzzCyjCXVkkOAyztAS?= =?us-ascii?Q?UkYny7CFGYgJOCF83jMcflN/SCWi/GwX8j8yNMRgaKJeqp+D+99NNu6W82UQ?= =?us-ascii?Q?G7zrzuofb+z3cg7G9sp8JlQd3puV+pVCdxcJU9Ro3agF83FTPxsXAKeo4R0f?= =?us-ascii?Q?TY+m/I/iWYnW5ZdBeB1C/oaWHhAzPOlpAco1CGgLXsyRSPiZW+apNfmiski+?= =?us-ascii?Q?VNuecCNkEfHiMYjEsom+rLB7fVgpj/SNmdH4uA3VFsSuRGeJOxNkPKp2OOSg?= =?us-ascii?Q?Ot6BwlzAeYnzMrX+CMFaRwmAYGL03UA+hPuV9mNlMh2xJ2uvr0ydHiLUqNR+?= =?us-ascii?Q?I0Icml9WICiAevxGAJvPJCepIA7cjGkYODKMeVzZ2LoHLtYfX9Uot58ebfcS?= =?us-ascii?Q?tB8WsvDTJeIZFmMy/AiNNeB30wuTgYBH6+FJdfXSt9uYu3pVX0NsUzOntH7e?= =?us-ascii?Q?uedWf7jpyzE=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DM4PR10MB8218.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(1800799024)(7416014)(376014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?o8Iou3CAUi8GXsTXdaVDQMke9Cwe2JNxRW7RDE/eMLpBmApr2HRZ9RCijVd4?= =?us-ascii?Q?rrmMDyXyRVfEjmoEryeP88rXiXW2f5QMhO6YebmmY+Lg1cjMeBTUgz16mfcN?= =?us-ascii?Q?9YvY5jWqmmzMKn+D29Fl13VExdR2CY91/aK8i1l6uvNkZDGqDZNGtX/vXFlv?= =?us-ascii?Q?13LW3EaMRS1h+2VtEZNT3+JZvFvg6/mhDgsMl2UChF8f740oP9l7milSNYoc?= =?us-ascii?Q?rSrltuyNFFfh6JH8RUT5auLDAAZ2YImYCxQUuRp8LpGBlcYG7n5s38+w2x55?= =?us-ascii?Q?gqWYCqcKSIZXMj8nolhRrtzw6FPCgCnPPfTWNBjpeVF0WXqSyiIr7aJ9KODO?= =?us-ascii?Q?ooTR/IkI6uC1acrv6uT+KLWN4+30ENobEtDRFlpK1Jks5TbJDxaYKHDiwCS3?= =?us-ascii?Q?mpmf3+b56WQoph/bvzsIPmMrsqe4Pm6xESsyL3usfV/gd5lu/8S2MEoEB2eY?= =?us-ascii?Q?aWj/Mon3QdQFbBzqEE+r6m3O0rXeJb29K6x1CPvY1SNQSNYSSii5hJmrWvyv?= =?us-ascii?Q?BjsrQZxhwjAa9B5vpdsasD83/nYetRUYAPFGvVH8/qzM2rmwBlxYqqJG/CUk?= =?us-ascii?Q?YF8EAcLYoavHAE6VMKHfpLm/eoKxWIPOfxWjLQ/19MSOdTuuVx/T2X3JTcZ2?= =?us-ascii?Q?47A1V8I/7murGTTTyvryC9L7drs1gVwSm2Q291tME6Pgggcza/8iifsVAN4M?= =?us-ascii?Q?gwIvex8qtd9KMOfrvDIQUMPA1KQsuDxJe3pG2zzj6iVMc2Wk2qIc6ZCMpaUL?= =?us-ascii?Q?0xGC+cHExYgRkBqFN3r/Xn1ff1epx1T16FkhnOmVWKsHEtVvG21tbXUoVzQY?= =?us-ascii?Q?Zq+HrbDYZQYBUeHX2foCs8Uh6i76RlRwb0Fp0Mi8+noMa+SABo2SaZ8PLhNY?= =?us-ascii?Q?guPJNi+cNVHZlk3mZRC4OMUGJc221ugB5+YwGjAWgrvpRWzPKs9wYGeQeVxn?= =?us-ascii?Q?bdJBpZWgtnGqHNuvKqJih7AyHLT+6OwqvbvBxl4H6QUjrWskmRlaFVWaqOts?= =?us-ascii?Q?u2FIAv5njg+ZtUQEdZBvBs4Y9eG45pgm2e5uDDiQ9/peZupPRN54cA96LJVv?= =?us-ascii?Q?Hu2eRoLVjprYX4J7q4UZ8GzyzEsVcKkcBhMRjD7zG0TM9Gnj78ssy0YRau7o?= =?us-ascii?Q?Ga62h4Wds0zwKll+9MZPxQnlRunjYts8Gh5UA8aYfb0EfWv0Q5OHzPtrLTP7?= =?us-ascii?Q?U6jupYt2M/mTnWpNoWlwZZfAr/TzsMjMIf9JTkY2htpNJpmL8b+2ISTyXQh8?= =?us-ascii?Q?qliedz9/+BI/NznxzLlJKUTEnIH3TtKr8qY5K4j/pskp92+QNFv5zUIVigi4?= =?us-ascii?Q?o2Mul8r1Tj0NordFo02g1QSXLEIU1jlXv/7LjIv8duAqm2S6dsZk8KlXwhWj?= =?us-ascii?Q?/KdvTBNYMJfNE5+zi5ksmHtetNRtaAFiLpqjb2GoBXKsmZjrFqK1ksZYB6ov?= =?us-ascii?Q?k4tFOOGLHbQfaek8b71ly8qI0LAhpKX2JGObJwFK/xOka9/dS6Sj00wMZsPy?= =?us-ascii?Q?ZbpZJZ+iI/76/jQtX/Yyd9X4y8/VTPGId1xrBYmf6XXJfzMgZItve+8VHij2?= =?us-ascii?Q?g58MupsGax9X3vlpLAhEGhaM3iMo+05NYD121xBZ5e5Rnmri3NOJ0E81fKLJ?= =?us-ascii?Q?Jg=3D=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: KN1UCHDKxOE+Iw0ErNy4tJg19clM2O+twn+ycZHT5L83W9Jh1AIOyTcbP3QEsN4eKW84cQ/et13DccCx6zov/gjpZlXya3tl9ifVbQebwrw0oy29Ng4MBm8Uol/WCgBCfVJH6SXQaGHicO6hadicsnW773zQy6ccxLkDFDeowbwLaY4eqmui0Y8S7Gfp2urHFKB6Hg9BDXeI9z2M0yi5LyCsFLFQDXk0XsM+UJ8YRLr0MZ/XyqYPZOKZq21Xcp/yLtciz6dW0gjqdM49RW774wbZ2SthBGOlfYgmorQ635gXSOIzCLkjukpSqz1nDZaNK4BSr7aVVSjnP+rU/S0/C4dvg53LDu2YVtfXGwXKrhPuTO0lQ7LZyLslQB337gbxB7lpaQgzmmlIG/a5wq7k2FxucYTqWqoQivEoLMMu1xSfW5FON/lPlBujKF2sVs0oDtILqfA1bHye15rav+XxP+2q3Ld6oJHMiTRQ2ZZp1fxpxsNyrBD8nUw3a/MAasdfsM7ik8RzMwt5EXBHDHSrl/98tjPSndX0BBhpEz1Z1zK05SIRUGG7mU+g8CYPgbCK60HYDswoxcnBIDBVEvFTnM++usD/7eD/H01Ttm6vCWo= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: bcaadae9-028a-4102-a96b-08ddc552defe X-MS-Exchange-CrossTenant-AuthSource: DM4PR10MB8218.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Jul 2025 16:56:27.6642 (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: mN5xr6dsJoXNTYuiBvy3XI2sZoVpLMv+qeTwXUzPqKscShGfhdFF+5Cj02CQ2b/mv7YQh4s+Z+DSUEOgU2QAe+hP6yWHvYZiiF0v3UhaZT8= X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR10MB7098 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1099,Hydra:6.1.9,FMLib:17.12.80.40 definitions=2025-07-17_02,2025-07-17_02,2025-03-28_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 adultscore=0 mlxscore=0 malwarescore=0 phishscore=0 spamscore=0 mlxlogscore=999 bulkscore=0 suspectscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2505160000 definitions=main-2507170149 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwNzE3MDE1MCBTYWx0ZWRfXzLYh1vivhfs/ MS8HRtdGiZCTNn1kroDFSf1LHLLiBFKp16Iuu8VCBWqaqROgFiW3BNxCM0SBmIClakptpHKqQPI ANilB1J0V/Usay5Ejn7MFQxXUV11GCG/OVjPUz3xJhwamHtpe48eSUwOaGYSZN0bWtbWTfwuN2u tQdP572fB5Jodz58MQUcGFOphNZcFtPDGN33Iz+76fwQ+eHyw5peO5ffegXI9nzj6sN6VNCsZva gJSXyGdslsm4xLL+Mpg/bQFUvDz1QUERcMaxJKnx5L/hb2YJ0fFhmfQXoWN+fu+LxJshKjgn9Zm naYVi2KsswG8XcLYD8XjGUdzPWCJghVWv8hUZyeVl8lMUhJk8yVg4d3JbLwvntzgjbBHflq2fwA HKbOgI6PrNEKF6CvjRo3KCos+Agsw/y2Q+ETq+2qL5d7isJCQ8+TjAGhfc3Rcnnitq9PLWZj X-Proofpoint-GUID: 7shM0Y7PWumWJqllj12FQBJWYH6h3Aaz X-Proofpoint-ORIG-GUID: 7shM0Y7PWumWJqllj12FQBJWYH6h3Aaz X-Authority-Analysis: v=2.4 cv=J8mq7BnS c=1 sm=1 tr=0 ts=68792b3f b=1 cx=c_pps a=zPCbziy225d3KhSqZt3L1A==:117 a=zPCbziy225d3KhSqZt3L1A==:17 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=wKuvFiaSGQ0qltdbU6+NXLB8nM8=:19 a=Ol13hO9ccFRV9qXi2t6ftBPywas=:19 a=xqWC_Br6kY4A:10 a=Wb1JkmetP80A:10 a=GoEa3M9JfhUA:10 a=yPCof4ZbAAAA:8 a=b5bszlCp1HiZ-wyHCzYA:9 cc=ntf awl=host:12061 Content-Type: text/plain; charset="utf-8" Historically we've made it a uAPI requirement that mremap() may only operate on a single VMA at a time. For instances where VMAs need to be resized, this makes sense, as it becomes very difficult to determine what a user actually wants should they indicate a desire to expand or shrink the size of multiple VMAs (truncate? Adjust sizes individually? Some other strategy?). However, in instances where a user is moving VMAs, it is restrictive to disallow this. This is especially the case when anonymous mapping remap may or may not be mergeable depending on whether VMAs have or have not been faulted due to anon_vma assignment and folio index alignment with vma->vm_pgoff. Often this can result in surprising impact where a moved region is faulted, then moved back and a user fails to observe a merge from otherwise compatible, adjacent VMAs. This change allows such cases to work without the user having to be cognizant of whether a prior mremap() move or other VMA operations has resulted in VMA fragmentation. We only permit this for mremap() operations that do NOT change the size of the VMA and DO specify MREMAP_MAYMOVE | MREMAP_FIXED. Should no VMA exist in the range, -EFAULT is returned as usual. If a VMA move spans a single VMA - then there is no functional change. Otherwise, we place additional requirements upon VMAs: * They must not have a userfaultfd context associated with them - this requires dropping the lock to notify users, and we want to perform the operation with the mmap write lock held throughout. * If file-backed, they cannot have a custom get_unmapped_area handler - this might result in MREMAP_FIXED not being honoured, which could result in unexpected positioning of VMAs in the moved region. There may be gaps in the range of VMAs that are moved: X Y X Y <---> <-> <---> <-> |-------| |-----| |-----| |-------| |-----| |-----| | A | | B | | C | ---> | A' | | B' | | C' | |-------| |-----| |-----| |-------| |-----| |-----| addr new_addr The move will preserve the gaps between each VMA. Note that any failures encountered will result in a partial move. Since an mremap() can fail at any time, this might result in only some of the VMAs being moved. Note that failures are very rare and typically require an out of a memory condition or a mapping limit condition to be hit, assuming the VMAs being moved are valid. We don't try to assess ahead of time whether VMAs are valid according to the multi VMA rules, as it would be rather unusual for a user to mix uffd-enabled VMAs and/or VMAs which map unusual driver mappings that specify custom get_unmapped_area() handlers in an aggregate operation. So we optimise for the far, far more likely case of the operation being entirely permissible. In the case of the move of a single VMA, the above conditions are permitted. This makes the behaviour identical for a single VMA as before. Signed-off-by: Lorenzo Stoakes Reviewed-by: Vlastimil Babka --- mm/mremap.c | 159 +++++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 152 insertions(+), 7 deletions(-) diff --git a/mm/mremap.c b/mm/mremap.c index 28e776cddc08..e67cba4e6fc0 100644 --- a/mm/mremap.c +++ b/mm/mremap.c @@ -69,6 +69,7 @@ struct vma_remap_struct { enum mremap_type remap_type; /* expand, shrink, etc. */ bool mmap_locked; /* Is mm currently write-locked? */ unsigned long charged; /* If VM_ACCOUNT, # pages to account. */ + bool vmi_needs_invalidate; /* Is the VMA iterator invalidated? */ }; =20 static pud_t *get_old_pud(struct mm_struct *mm, unsigned long addr) @@ -1111,6 +1112,7 @@ static void unmap_source_vma(struct vma_remap_struct = *vrm) =20 err =3D do_vmi_munmap(&vmi, mm, addr, len, vrm->uf_unmap, /* unlock=3D */= false); vrm->vma =3D NULL; /* Invalidated. */ + vrm->vmi_needs_invalidate =3D true; if (err) { /* OOM: unable to split vma, just get accounts right */ vm_acct_memory(len >> PAGE_SHIFT); @@ -1186,6 +1188,10 @@ static int copy_vma_and_data(struct vma_remap_struct= *vrm, *new_vma_ptr =3D NULL; return -ENOMEM; } + /* By merging, we may have invalidated any iterator in use. */ + if (vma !=3D vrm->vma) + vrm->vmi_needs_invalidate =3D true; + vrm->vma =3D vma; pmc.old =3D vma; pmc.new =3D new_vma; @@ -1362,6 +1368,7 @@ static unsigned long mremap_to(struct vma_remap_struc= t *vrm) err =3D do_munmap(mm, vrm->new_addr, vrm->new_len, vrm->uf_unmap_early); vrm->vma =3D NULL; /* Invalidated. */ + vrm->vmi_needs_invalidate =3D true; if (err) return err; =20 @@ -1581,6 +1588,18 @@ static bool vrm_will_map_new(struct vma_remap_struct= *vrm) return false; } =20 +/* Does this remap ONLY move mappings? */ +static bool vrm_move_only(struct vma_remap_struct *vrm) +{ + if (!(vrm->flags & MREMAP_FIXED)) + return false; + + if (vrm->old_len !=3D vrm->new_len) + return false; + + return true; +} + static void notify_uffd(struct vma_remap_struct *vrm, bool failed) { struct mm_struct *mm =3D current->mm; @@ -1595,6 +1614,32 @@ static void notify_uffd(struct vma_remap_struct *vrm= , bool failed) userfaultfd_unmap_complete(mm, vrm->uf_unmap); } =20 +static bool vma_multi_allowed(struct vm_area_struct *vma) +{ + struct file *file; + + /* + * We can't support moving multiple uffd VMAs as notify requires + * mmap lock to be dropped. + */ + if (userfaultfd_armed(vma)) + return false; + + /* + * Custom get unmapped area might result in MREMAP_FIXED not + * being obeyed. + */ + file =3D vma->vm_file; + if (file && !vma_is_shmem(vma) && !is_vm_hugetlb_page(vma)) { + const struct file_operations *fop =3D file->f_op; + + if (fop->get_unmapped_area) + return false; + } + + return true; +} + static int check_prep_vma(struct vma_remap_struct *vrm) { struct vm_area_struct *vma =3D vrm->vma; @@ -1644,7 +1689,19 @@ static int check_prep_vma(struct vma_remap_struct *v= rm) (vma->vm_flags & (VM_DONTEXPAND | VM_PFNMAP))) return -EINVAL; =20 - /* We can't remap across vm area boundaries */ + /* + * We can't remap across the end of VMAs, as another VMA may be + * adjacent: + * + * addr vma->vm_end + * |-----.----------| + * | . | + * |-----.----------| + * .<--------->xxx> + * old_len + * + * We also require that vma->vm_start <=3D addr < vma->vm_end. + */ if (old_len > vma->vm_end - addr) return -EFAULT; =20 @@ -1744,6 +1801,90 @@ static unsigned long check_mremap_params(struct vma_= remap_struct *vrm) return 0; } =20 +static unsigned long remap_move(struct vma_remap_struct *vrm) +{ + struct vm_area_struct *vma; + unsigned long start =3D vrm->addr; + unsigned long end =3D vrm->addr + vrm->old_len; + unsigned long new_addr =3D vrm->new_addr; + bool allowed =3D true, seen_vma =3D false; + unsigned long target_addr =3D new_addr; + unsigned long res =3D -EFAULT; + unsigned long last_end; + VMA_ITERATOR(vmi, current->mm, start); + + /* + * When moving VMAs we allow for batched moves across multiple VMAs, + * with all VMAs in the input range [addr, addr + old_len) being moved + * (and split as necessary). + */ + for_each_vma_range(vmi, vma, end) { + /* Account for start, end not aligned with VMA start, end. */ + unsigned long addr =3D max(vma->vm_start, start); + unsigned long len =3D min(end, vma->vm_end) - addr; + unsigned long offset, res_vma; + + if (!allowed) + return -EFAULT; + + /* No gap permitted at the start of the range. */ + if (!seen_vma && start < vma->vm_start) + return -EFAULT; + + /* + * To sensibly move multiple VMAs, accounting for the fact that + * get_unmapped_area() may align even MAP_FIXED moves, we simply + * attempt to move such that the gaps between source VMAs remain + * consistent in destination VMAs, e.g.: + * + * X Y X Y + * <---> <-> <---> <-> + * |-------| |-----| |-----| |-------| |-----| |-----| + * | A | | B | | C | ---> | A' | | B' | | C' | + * |-------| |-----| |-----| |-------| |-----| |-----| + * new_addr + * + * So we map B' at A'->vm_end + X, and C' at B'->vm_end + Y. + */ + offset =3D seen_vma ? vma->vm_start - last_end : 0; + last_end =3D vma->vm_end; + + vrm->vma =3D vma; + vrm->addr =3D addr; + vrm->new_addr =3D target_addr + offset; + vrm->old_len =3D vrm->new_len =3D len; + + allowed =3D vma_multi_allowed(vma); + if (seen_vma && !allowed) + return -EFAULT; + + res_vma =3D check_prep_vma(vrm); + if (!res_vma) + res_vma =3D mremap_to(vrm); + if (IS_ERR_VALUE(res_vma)) + return res_vma; + + if (!seen_vma) { + VM_WARN_ON_ONCE(allowed && res_vma !=3D new_addr); + res =3D res_vma; + } + + /* mmap lock is only dropped on shrink. */ + VM_WARN_ON_ONCE(!vrm->mmap_locked); + /* This is a move, no expand should occur. */ + VM_WARN_ON_ONCE(vrm->populate_expand); + + if (vrm->vmi_needs_invalidate) { + vma_iter_invalidate(&vmi); + vrm->vmi_needs_invalidate =3D false; + } + seen_vma =3D true; + target_addr =3D res_vma + vrm->new_len; + } + + return res; +} + static unsigned long do_mremap(struct vma_remap_struct *vrm) { struct mm_struct *mm =3D current->mm; @@ -1761,13 +1902,17 @@ static unsigned long do_mremap(struct vma_remap_str= uct *vrm) return -EINTR; vrm->mmap_locked =3D true; =20 - vrm->vma =3D vma_lookup(current->mm, vrm->addr); - res =3D check_prep_vma(vrm); - if (res) - goto out; + if (vrm_move_only(vrm)) { + res =3D remap_move(vrm); + } else { + vrm->vma =3D vma_lookup(current->mm, vrm->addr); + res =3D check_prep_vma(vrm); + if (res) + goto out; =20 - /* Actually execute mremap. */ - res =3D vrm_implies_new_addr(vrm) ? mremap_to(vrm) : mremap_at(vrm); + /* Actually execute mremap. */ + res =3D vrm_implies_new_addr(vrm) ? mremap_to(vrm) : mremap_at(vrm); + } =20 out: failed =3D IS_ERR_VALUE(res); --=20 2.50.1 From nobody Mon Oct 6 19:10:40 2025 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 C86B72FF49F; Thu, 17 Jul 2025 16:57:49 +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=1752771471; cv=fail; b=sZfufpq0D61h2oP8Mbf0Y0DEjyW1Kz907PWaVFVy1qk9A62qaoXkwI3tslxrQS4KHE3yRcAmLxIIJKkVgPuiGkpDk4vgrFT8XNE92LK5oRzwRg9lF+VtI/2RstOYgXDlLglIFv6PxPnMDLw/XV1iMpEtvLLvWQz9VBDWvLT3Zuw= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1752771471; c=relaxed/simple; bh=TZXlgKiJsP3LkRnPm2BlyPKv1wY+fEyAZ66TXv+XmXc=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=rGBqPZQc+FKOURnlfP3k2tZZxG2sP3lkKUgDU4/aOu8PLfWAuesZ3r+AVNQr+BNT6uke5Yi+fOMVp7+xZD7MeO/+BYf6PHLZmNV/kURCfs6BrF50M2iRFmLNsduNstXXa/ZmG2cVPNZ09aZNH0HcM0F6jeglbB97ILON7zdExIg= 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=RMnYSbUN; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=sp7BTcGL; 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="RMnYSbUN"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="sp7BTcGL" Received: from pps.filterd (m0246632.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 56HGC7N4010969; Thu, 17 Jul 2025 16:56:37 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=eL04BCl2BmcL2sKvZoFmvGU3nQVFHZ3aJpCe8behg3s=; b= RMnYSbUN4HVF6CioJ+l/M0NO3J1IXp93FDme3On8QldBCAgVRCsWRjX2JQDOfFOB 42xxgLGz7shA0qzs73kLAR69s+gwLaFTFQBipRIkiEE5sFp5kplx9k4bqPkTBNf3 lsD9CuhHvHfVgToHyQp3meM1/YCtMMT4UjonbX9vDnCVc7z+ZDHmfuNdNgVCfpJz 0IZRusWOtyb9ahu192Ct380iGAozW0OrMU2yjqMCgy6VQzjr+TRxJqaErWErpApi 6KoZSL4hHj1UkB5iMPD+GvJ6PbcJuL4QQ5t8LD3yAvg+iF9maZAd1Hl20bMaV87N 7ZwE9Htve2hWHJ+gTG8m0A== Received: from iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta01.appoci.oracle.com [130.35.100.223]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 47uhx83snu-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Thu, 17 Jul 2025 16:56:36 +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 56HGkrNe012988; Thu, 17 Jul 2025 16:56:32 GMT Received: from nam12-mw2-obe.outbound.protection.outlook.com (mail-mw2nam12on2069.outbound.protection.outlook.com [40.107.244.69]) by iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 47ue5cgs5a-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Thu, 17 Jul 2025 16:56:32 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=OMvn2VUp/CJ/exF7NdxF3MIkGuAU7LupSJ6taIbAm2aWobzyyaXN/ibguSM/D6tvKSiTAkZ+t4x/hmGG3/feCJvhRlDY77mM3pNtTSECAPa4bUY0xKvUJemd3GMyCVL9Vmh/pCPAZKvau7amZB0MFyf1sW5ZelEPIrXvzPCfFzgIv7NCGcF1SfwUvxK4dKSOcta75Kn/XqEHadD97TMA1o/E2q13L3j7r51SmkfzzFmo6cZrxNWEUjYuALkmRLmaXtR4LCv/aIWluy5o2LLxFRqr7dLPSYCmSy2+8x58HI7tQOAoLVSA9Bmc4ZLhhuURR8xzxQjuOguzWJUzcunetQ== 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=eL04BCl2BmcL2sKvZoFmvGU3nQVFHZ3aJpCe8behg3s=; b=AU/qtDbDp3b4aoUydCY8OPhQvHDKf/PF9XWHIzXxy9V33LD2t0ECTo5tIfVhT7PzgGV7ZTnqB7mhTrQo1TlnekeinHQZ1SGRWkTyjUuaBTe7x4gaU08Wc7+52vrklKLkwiprcz/GLBNKnCsSfPei3vJfC09a5aScWa0lHD4cFlHukdXPpmu+VjZvvR/vSbmwMEDgCIxL6KiWCChz7Gmdk8LmC+hKWOroFTfO27hDJJfTCpbnpLhORjAiArdrqSjca+z/6Ctv2bgHlBC6bhWan9oLiXJA1f1qvYOAIeX5LQ7g5a9IkK3k1c7i5PydWe8IkN4aLnT6xqLEBajKJqMcLQ== 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=eL04BCl2BmcL2sKvZoFmvGU3nQVFHZ3aJpCe8behg3s=; b=sp7BTcGLoWHUzRjarfG+fxgOrjaIpwnEPrnXMLMQakOxp1H1ypZuqL1zP+hoo6VwqgRGGiKpaLDzhpT7FaDKehgsWaj1nehT1nJwJPOWlsFjwOG3DD/VNp0g2MWRyC2NvP5zTOFAiu89l1WbNyS2jv8L88WzNblqDxRlPGWcQnE= Received: from DM4PR10MB8218.namprd10.prod.outlook.com (2603:10b6:8:1cc::16) by PH0PR10MB7098.namprd10.prod.outlook.com (2603:10b6:510:26e::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8880.16; Thu, 17 Jul 2025 16:56:30 +0000 Received: from DM4PR10MB8218.namprd10.prod.outlook.com ([fe80::2650:55cf:2816:5f2]) by DM4PR10MB8218.namprd10.prod.outlook.com ([fe80::2650:55cf:2816:5f2%6]) with mapi id 15.20.8922.037; Thu, 17 Jul 2025 16:56:29 +0000 From: Lorenzo Stoakes To: Andrew Morton Cc: Peter Xu , Alexander Viro , Christian Brauner , Jan Kara , "Liam R . Howlett" , Vlastimil Babka , Jann Horn , Pedro Falcato , Rik van Riel , linux-mm@kvack.org, linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org, linux-api@vger.kernel.org Subject: [PATCH v4 10/10] tools/testing/selftests: extend mremap_test to test multi-VMA mremap Date: Thu, 17 Jul 2025 17:56:00 +0100 Message-ID: <139074a24a011ca4ed52498a7fa2080024b43917.1752770784.git.lorenzo.stoakes@oracle.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: LO4P123CA0081.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:190::14) To DM4PR10MB8218.namprd10.prod.outlook.com (2603:10b6:8:1cc::16) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DM4PR10MB8218:EE_|PH0PR10MB7098:EE_ X-MS-Office365-Filtering-Correlation-Id: fbf8e321-fc3a-4c1f-bb3b-08ddc552e057 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|1800799024|7416014|376014; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?siQccWt4BKRbfJUmB4rBPWncbcmb7PP3AEgdMkGZch8NfSKHXCB8S8DYiNl0?= =?us-ascii?Q?J3N2Wryv4tDYCx1miG3zuh7Il500yyH1ALnIaywILSWDzWTxLYwPfsEAzfeg?= =?us-ascii?Q?B1TveSGvz0UH1jpPETD2YxlQGGYJF6khj+Bx0sRu0hyPiJ+kAIUeGBQ/NrDO?= =?us-ascii?Q?VOPLG4klJfrQGLj++e8g101I98+VkubBHGz5B/KsgEQA+iyBMgCeVT1b0E+N?= =?us-ascii?Q?kgZzjCPKFZVyW13omELwohjVEvRsTz6Q+VQHb+NWHmiXJ+Ionns58zGy0dzU?= =?us-ascii?Q?1Q3LqaedYibl8sqfCmnWniokclsFmOwmz7bOLjp5HbTfZeOY8jiGaOoYtvXg?= =?us-ascii?Q?68cG/ELlVfSmfqJ7ccBEVHoGzIlsgztLKFU6xYXqYwpJNfQKihvr12l4kp8W?= =?us-ascii?Q?t1i0buE/00C/P2KU1PxeM1Jxot0QC9mBhHfvb8AGG2npIclmA/PcedscktLq?= =?us-ascii?Q?f1WTTGK76TPxbl4XzHJ/l+YcDD+L5XjV4LZXQ9ZNVcMeeIV+gNUJV4vXFNGN?= =?us-ascii?Q?mb7P5UFroveduqv6+l9UaN3TGzl7KZlIOo2TN0ezPM1W5eADeEox+JMUML1R?= =?us-ascii?Q?d1KnITDHfN6NHKGMXZeVtYxtG40CV4tj6MI9mQDEQ31rnZJnM3wGHjkbTkpe?= =?us-ascii?Q?/Y1SRMPt5ERgBxAt+NJeFW6Sa9TeuSpS+4fR4R4d36tyqdl1z1ToVTVd1jX9?= =?us-ascii?Q?/h/6YaNiQrXxRswW5LSkB5yToTMlOI49t6k8lPSYsHX/ftaCnLvsDSU9Q1+l?= =?us-ascii?Q?GHI/OC4moDM3zSG20iN4cHU1KinFSnJFg25EsPjZCZI6CPtt3LVQ18/suLte?= =?us-ascii?Q?C7YLWmfknWEgo1XrAwKm+218HK4KgdXDz7PQsE+cJuJvpe2OHbYp8tgoWLVd?= =?us-ascii?Q?Pr8hVuKj4yi7pC6c71Ev5t4uMeeDWz/Tyuq/kQjQLQtbb2JAfm+VeyOQGQHK?= =?us-ascii?Q?jxKCV/9vH+CutAICaZqNNWtMitbF6WpyxuL9Y+Dxj7YA/E1H2bJ+0l1tUPjG?= =?us-ascii?Q?A8SOp/LfQhwD6LvZz2NdDQeIjF0ywrGl5u1AnRt/vJVpaAQYgsvITgdqrLjW?= =?us-ascii?Q?r6xlYwqiCtNQldzxsUJXDeGrH4oxq5AnQbusiaV64AdrqFn6JZU30udCCe+l?= =?us-ascii?Q?PQ5TLXte2iz1m2EcHCBRc8b7FgLsEMLJMvgGIy8aMt7h+VHXQjCLUR6QvMki?= =?us-ascii?Q?/gm8mAVL67NwgfwjVh1JhlNCoBZMy9Pdi7JVXMBY9JiPpeG1wmgP5yI3IA/O?= =?us-ascii?Q?VZTPmww4AWrEu7+OPanHru6QQBROLXpBDXpocAFbWgkGd3eq0bpEYbuBCmbM?= =?us-ascii?Q?uHMUM9EQlV1LSIWX5b1L7rur39nfxV6u7aQGp+e9/Iv3PE7/fw1MHTxB/rco?= =?us-ascii?Q?SKhpVXLMXvKns1ZrccjBj8nt6UkofJNu22UL/bvRG0JjKXCziw=3D=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DM4PR10MB8218.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(1800799024)(7416014)(376014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?U/KX33B68NJbMl3o+k3BK8R1E4oGPm5ZHZrJepqiNOELLX7e3nJBRVls/Ol9?= =?us-ascii?Q?nQKyOcH7S83goZRs24feC39ejk/QN1uRT6q34GKaCrE/EvONj2eTnC6YNJAk?= =?us-ascii?Q?soM8sb1dBHft5MNOX1N89VnPqmaMHT2de7/cpf26OR3xxuqFrSaP0xC5vkNh?= =?us-ascii?Q?hVshklUZhuyQHkPfMwhyGay7MuQv9FOOLsxWKbmDoNvZRHzPEQM/RnAnp0+h?= =?us-ascii?Q?FRAdkrP4ru9KqJTSTY9KGVaaQ1tkUMg48P5WfGRBNCr/PySVsIflCxuxW/+L?= =?us-ascii?Q?By8kXV0MduP5qG59RZ/aXQxNakZNc/DiKUgdkJBJF0HMSHMCpyFfZQ1iWiQf?= =?us-ascii?Q?rel2jiFT6JJjhkg93N2rSKO2WUzdjrmq7DFy/sf1zkXccRW3B2PWE1BqRH7S?= =?us-ascii?Q?rRbu9IfrmgbRAeCpVcbVdnKIv5eGk93Hq3SD0aHLDqQrsYBTdo0ptl3SEvzE?= =?us-ascii?Q?OFEpNVQRbs07A3z/sL+ZuD/AaS3rBkTTGpa6XgPLuB/jyqLnuZETH079J4Ct?= =?us-ascii?Q?PKQmvzML3vaiDkckXHmsMTsLj4DstW6po+CHj72iIAElDMKwX/l8X3tP+/Yi?= =?us-ascii?Q?jZ9aqHhPL5LwDI8wZ74aPMJ8KMAWhxOCdhHNYAN1YXsOx11tCQGqzbcWUuEZ?= =?us-ascii?Q?0sOXqCPW5KQ6KPuCJPeG847Rhc4oBVxRqHsqyDegf4CmkEYPTmCH+pTfxAAb?= =?us-ascii?Q?3ODC3zw9/V/umLoQLLJRDVlmg4drhmpCP8PAf2ZTJChy72Q7S2+fugf2z6mn?= =?us-ascii?Q?P0ol4zX5tvglHZswXQrVIPcspzTHvT2ubZCTCj9a6MfUy/rId+sIC9w422S3?= =?us-ascii?Q?zBJ+ek+AuRfTyZMR518XrZo47V1f+vvQDXpfxoKVV11ev+IhnXNbnoB8rZOB?= =?us-ascii?Q?mioHaprQwc0zbd105/h21CKD0QjwOqkdMr9L26gAj6XZrGphdBeWm+UyIecr?= =?us-ascii?Q?6m3VK9iuiEASIZ2JcGwK/9VdVHb/WK7aBPSOKXjazbKQx6D6I2CyE1GPp8IH?= =?us-ascii?Q?BogucKm7y1m7vJUdAdgHJrX+2rR3CEJWHDRtSkFXaPBUBvZ977+Yih3VHHXW?= =?us-ascii?Q?dcg+cOw3HrSF5sLdJ6urdGOfH0Maf1U0wXC5b9XFeCBuTbFBaXj8gKGjr3r0?= =?us-ascii?Q?3uPVUbLLmBKETMrDVfqzpHWurq7mLbnzRBsHy/Wuw41KJBEmBMmbQYftIBbB?= =?us-ascii?Q?LRiIbwKhstDdTOUC2DkWCWfdAqmm734F2qtktmfHdA6s8TgPTf7GzSmsRLpA?= =?us-ascii?Q?35lFV8rglLIoYw4HblB2D8EJjoYsBgw3Op+a6GJNra9sIq2u4fBP9E+czq9U?= =?us-ascii?Q?T3aGCWL8DutNcG0oviu+Bj9MAunE+Hs4PGfCETwZcl0+3ALDFDkzlnNjQ17L?= =?us-ascii?Q?R8L5lkh3DWK0tB4NNntUk0FJGDLAdCW5yvK2yvkrPfm6wpLFKY1jw9Vk8VZx?= =?us-ascii?Q?bD7azIEZeTT5WcQfWNkDo01P6FflXHyY8B7TMFbMnugeIYpqO/c7H531CJxq?= =?us-ascii?Q?B0+TFYxwgvGSxG25ahsNtYb7YS1W99Dw8Z+TATHX1SkLP2Lm1UxPQZ9qn8iD?= =?us-ascii?Q?jnZQUWLNbFUoaEDZzr1MHsjsbsgksbOqhzE09YPNC5H00s5M6IhRxK/qYE2A?= =?us-ascii?Q?dw=3D=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: jRI2ECsHtLchsobRjHXRSaT0FzdFMBowu6yvx0Yp5dabwiwNpBv1mrSUGtdypQ/qfK1FuEFo4PQv9xdesYup0Eucj2RQOQZ8jAPi8fSVD8wZ5zOmRSSYFN01VRBZ3Pc9YRhqscBuRLcoHpB2B8PtGaZauSG4XL+9ZDpgWOAC/vX0BmmpCmckkcenon+S2hDh0OYnUdNAFkIiceDvvav78IgDwWr58UWvQ5awFcdR6svHiS4oOU1K2pskJQQhaR3mR6u98IBQvgr6IluSQK5PdDK7VO4BvYVqxBe4Swt0WW1eZ9OpF6qp04jqeHvBepplIbEJFuacpxJckDegpfWHefc/pN48viWSA4VNYvK1r9cuN0qBMy1G4M9ogPUyAt5bQNX6JczagmlxNXgxuoqe2sMLjMMtmpAHQdhDrb8D8OO6+6g5fehw7l+rc9CMp1mPtdMnll70Yo0UuVvTGgoviARsE2j3ACZ/UrS1Fvf6QELglGCSXw8KmFWJrZSrD9fyaHQkapW/Wovxu7D99OUa8IH3VdWbFmWR83b+KSNiGEh2DuRVjXF38XvTvR1j0ciGHcUyX7g6l/tK1XVR+xZOAdwBYRkEsf4b0IHhR556xl0= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: fbf8e321-fc3a-4c1f-bb3b-08ddc552e057 X-MS-Exchange-CrossTenant-AuthSource: DM4PR10MB8218.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Jul 2025 16:56:29.8941 (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: /ZxNVl+iwASgsGOUOLnXDk9KLKmn2jwaPT++FwooQdav+8/ETisTHHBOccLev/wo/gYCn0BOiUsSqmTD3KGgGzjL478G9NiH0YinDRDx8gE= X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR10MB7098 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1099,Hydra:6.1.9,FMLib:17.12.80.40 definitions=2025-07-17_02,2025-07-17_02,2025-03-28_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 adultscore=0 mlxscore=0 malwarescore=0 phishscore=0 spamscore=0 mlxlogscore=999 bulkscore=0 suspectscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2505160000 definitions=main-2507170149 X-Authority-Analysis: v=2.4 cv=auKyCTZV c=1 sm=1 tr=0 ts=68792b44 b=1 cx=c_pps a=zPCbziy225d3KhSqZt3L1A==:117 a=zPCbziy225d3KhSqZt3L1A==:17 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=wKuvFiaSGQ0qltdbU6+NXLB8nM8=:19 a=Ol13hO9ccFRV9qXi2t6ftBPywas=:19 a=xqWC_Br6kY4A:10 a=Wb1JkmetP80A:10 a=GoEa3M9JfhUA:10 a=yPCof4ZbAAAA:8 a=GuY5gsdr9MwsYxRlPWUA:9 cc=ntf awl=host:12061 X-Proofpoint-ORIG-GUID: 8ugXlKVSAd4BTJI_7uguYu-XkFd251bU X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwNzE3MDE1MCBTYWx0ZWRfX6c37bkbxL6SW dasO+UglZjQVU/3tE69UgDYh01Ppd0m4lIylwFBl9L2wr3wzHt9bKGTnIocOBKt9wKOKDH6vY7b UDNurdEzHeZrNNm503w9TTILC6UFIC2LjVKOhCwrGziOyP5fcylga4jtTTdoSRjS8tyNd7uuxH5 8jIatPjyRbjJ2QUDJVM7Mqhw3PGq85C6+4oJtOzq8B75mdxdRLsVab5xsL1bIjl1Dz4ZZO3LwQR Af5Rku/s9e9dWgSjh7zAVJ+E+FnwLBSVBLpV7q00PNhUfjwxqWgiKaGkmEdRrucwWEkYZwewztZ OG3vg4gWoqzmXsgJ3qb4leNOzWbBatBng9r/QsTG1+42u+tSikegzaVhsmIztQ69qUsYSTmL4U5 MSgbWBPXMN0zoYJUiWSUPHdCkGJxSuBhiYe43IIBZfLwVunHyVi/wMcU5fvFaI7B++JLcqtJ X-Proofpoint-GUID: 8ugXlKVSAd4BTJI_7uguYu-XkFd251bU Content-Type: text/plain; charset="utf-8" Now that we have added the ability to move multiple VMAs at once, assert that this functions correctly, both overwriting VMAs and moving backwards and forwards with merge and VMA invalidation. Additionally assert that page tables are correctly propagated by setting random data and reading it back. Signed-off-by: Lorenzo Stoakes --- tools/testing/selftests/mm/mremap_test.c | 146 ++++++++++++++++++++++- 1 file changed, 145 insertions(+), 1 deletion(-) diff --git a/tools/testing/selftests/mm/mremap_test.c b/tools/testing/selft= ests/mm/mremap_test.c index bb84476a177f..0a49be11e614 100644 --- a/tools/testing/selftests/mm/mremap_test.c +++ b/tools/testing/selftests/mm/mremap_test.c @@ -380,6 +380,149 @@ static void mremap_move_within_range(unsigned int pat= tern_seed, char *rand_addr) ksft_test_result_fail("%s\n", test_name); } =20 +static bool is_multiple_vma_range_ok(unsigned int pattern_seed, + char *ptr, unsigned long page_size) +{ + int i; + + srand(pattern_seed); + for (i =3D 0; i <=3D 10; i +=3D 2) { + int j; + char *buf =3D &ptr[i * page_size]; + size_t size =3D i =3D=3D 4 ? 2 * page_size : page_size; + + for (j =3D 0; j < size; j++) { + char chr =3D rand(); + + if (chr !=3D buf[j]) { + ksft_print_msg("page %d offset %d corrupted, expected %d got %d\n", + i, j, chr, buf[j]); + return false; + } + } + } + + return true; +} + +static void mremap_move_multiple_vmas(unsigned int pattern_seed, + unsigned long page_size) +{ + char *test_name =3D "mremap move multiple vmas"; + const size_t size =3D 11 * page_size; + bool success =3D true; + char *ptr, *tgt_ptr; + int i; + + ptr =3D mmap(NULL, size, PROT_READ | PROT_WRITE, + MAP_PRIVATE | MAP_ANON, -1, 0); + if (ptr =3D=3D MAP_FAILED) { + perror("mmap"); + success =3D false; + goto out; + } + + tgt_ptr =3D mmap(NULL, 2 * size, PROT_READ | PROT_WRITE, + MAP_PRIVATE | MAP_ANON, -1, 0); + if (tgt_ptr =3D=3D MAP_FAILED) { + perror("mmap"); + success =3D false; + goto out; + } + if (munmap(tgt_ptr, 2 * size)) { + perror("munmap"); + success =3D false; + goto out_unmap; + } + + /* + * Unmap so we end up with: + * + * 0 2 4 5 6 8 10 offset in buffer + * |*| |*| |*****| |*| |*| + * |*| |*| |*****| |*| |*| + * 0 1 2 3 4 5 6 pattern offset + */ + for (i =3D 1; i < 10; i +=3D 2) { + if (i =3D=3D 5) + continue; + + if (munmap(&ptr[i * page_size], page_size)) { + perror("munmap"); + success =3D false; + goto out_unmap; + } + } + + srand(pattern_seed); + + /* Set up random patterns. */ + for (i =3D 0; i <=3D 10; i +=3D 2) { + int j; + size_t size =3D i =3D=3D 4 ? 2 * page_size : page_size; + char *buf =3D &ptr[i * page_size]; + + for (j =3D 0; j < size; j++) + buf[j] =3D rand(); + } + + /* First, just move the whole thing. */ + if (mremap(ptr, size, size, + MREMAP_MAYMOVE | MREMAP_FIXED, tgt_ptr) =3D=3D MAP_FAILED) { + perror("mremap"); + success =3D false; + goto out_unmap; + } + /* Check move was ok. */ + if (!is_multiple_vma_range_ok(pattern_seed, tgt_ptr, page_size)) { + success =3D false; + goto out_unmap; + } + + /* Move next to itself. */ + if (mremap(tgt_ptr, size, size, + MREMAP_MAYMOVE | MREMAP_FIXED, &tgt_ptr[size]) =3D=3D MAP_FAILED) { + perror("mremap"); + goto out_unmap; + } + /* Check that the move is ok. */ + if (!is_multiple_vma_range_ok(pattern_seed, &tgt_ptr[size], page_size)) { + success =3D false; + goto out_unmap; + } + + /* Map a range to overwrite. */ + if (mmap(tgt_ptr, size, PROT_NONE, + MAP_PRIVATE | MAP_ANON | MAP_FIXED, -1, 0) =3D=3D MAP_FAILED) { + perror("mmap tgt"); + success =3D false; + goto out_unmap; + } + /* Move and overwrite. */ + if (mremap(&tgt_ptr[size], size, size, + MREMAP_MAYMOVE | MREMAP_FIXED, tgt_ptr) =3D=3D MAP_FAILED) { + perror("mremap"); + goto out_unmap; + } + /* Check that the move is ok. */ + if (!is_multiple_vma_range_ok(pattern_seed, tgt_ptr, page_size)) { + success =3D false; + goto out_unmap; + } + +out_unmap: + if (munmap(tgt_ptr, 2 * size)) + perror("munmap tgt"); + if (munmap(ptr, size)) + perror("munmap src"); + +out: + if (success) + ksft_test_result_pass("%s\n", test_name); + else + ksft_test_result_fail("%s\n", test_name); +} + /* Returns the time taken for the remap on success else returns -1. */ static long long remap_region(struct config c, unsigned int threshold_mb, char *rand_addr) @@ -721,7 +864,7 @@ int main(int argc, char **argv) char *rand_addr; size_t rand_size; int num_expand_tests =3D 2; - int num_misc_tests =3D 2; + int num_misc_tests =3D 3; struct test test_cases[MAX_TEST] =3D {}; struct test perf_test_cases[MAX_PERF_TEST]; int page_size; @@ -848,6 +991,7 @@ int main(int argc, char **argv) =20 mremap_move_within_range(pattern_seed, rand_addr); mremap_move_1mb_from_start(pattern_seed, rand_addr); + mremap_move_multiple_vmas(pattern_seed, page_size); =20 if (run_perf_tests) { ksft_print_msg("\n%s\n", --=20 2.50.1