From nobody Tue Oct 7 19:50:49 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 12B0827144A; Mon, 7 Jul 2025 05:30:11 +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=1751866213; cv=fail; b=SuTzqEXMR1pfmBlJ5VtMEiVeqAg+OTU5JoW8/Q03YIFgDhpWH4jDyUYp6rlcOUbe0cMD++TaSs/hlu7nsBEGuNPcI1jkzl7qMJDq41l+yvoMIF/0GrM2Te+qpOgb8ztV3lwozda16HUkxFEpIfinzkp0WUHq6OgCmKTukXQQxFY= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1751866213; c=relaxed/simple; bh=sXJt6aqbDZwIZZ1rRzR1Im5hhGc27EsCypmwfIGanKQ=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=QG2bod3KliFpwH1YR2hWnSTOEK9rXXsmQa1QdnYVoycXEPQfn6/oPNWtmSO+v08/eTaTrRzEm++UInnIKopuITWRfSFYxkY9q7UuS2S7N5SGLbYDKHjll++JZ9WKmM7pTy2X1lA8tMa/ua2AWgK34lewB8Hp7pQtUuTqEVYkyw4= 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=gDjsyyWR; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=MSWfXxAj; 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="gDjsyyWR"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="MSWfXxAj" 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 566LZ2qj021454; Mon, 7 Jul 2025 05:28:57 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=cc :content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s= corp-2025-04-25; bh=HA99y+5DlXUSFWOgT50dXjeB07y57Vj9ZoRayk4sRa8=; b= gDjsyyWRgdwI0f9pjYdV/YZvfvuWsZWLzFXo0JlcZ0jzdmC60VzyoNw17dtjvvIf VR4QjF+PPkt/+HByR+9d96RIDKp4T1IgvcWt3d8P3GxVhLTsrrRrVrvlrZoJjdlq BktHxfkm2TWdhSJrkcYrH4ZJMHuusazTCL/rfxbWTskq0o+RXWv4kIujSLn33Tkc HVSJVkgJWefgQGJaRVV+QxTxCAHFSqhlA+WP8xm2VNto4fUDO3cYuba9yHjzIhrE jnDR3V7JXTniRJWEpETwGdPsp9OB4W130ut66eSvFEyZPyNg/RY9Hq3uKjhHGIhL Rl5bUgBbPhwVPJNEsS+sOQ== Received: from phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta03.appoci.oracle.com [138.1.37.129]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 47ptyfj0v0-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 07 Jul 2025 05:28:56 +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 5672PVBj024285; Mon, 7 Jul 2025 05:28:55 GMT Received: from nam04-bn8-obe.outbound.protection.outlook.com (mail-bn8nam04on2065.outbound.protection.outlook.com [40.107.100.65]) by phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 47ptg82hd8-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 07 Jul 2025 05:28:55 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=Sdqx671VDEIkb8THU1/c0TIopnzr8iZbtY+B+YAVresmNAXe0lEzlalSSNnR0BfOlLdv2cDQ6N2BfWDZydLpF07TWWxZgmwlhVLjcvsN1Juy8vKRVyoXAjPCdBmCinPQt0ueZhd1K8LnUun1t/quWDLeMvDZYrVnIrESM3uzuzs7S1dF78qZ/Fo3xiYDDqwU91CgPEYIX5vnftNri2uAJWHElg94TaOHN+6ivJvO5VDBnZazxtsAys4QDaYrWCBRCx+E5txOb5ZPGJyxIHtx8pK4BKrvQLuuP6QSfTfO1G24yX0M0CyInZoYyKVAdgjdD1GZhbnBGUxqcQeXes2SpQ== 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=HA99y+5DlXUSFWOgT50dXjeB07y57Vj9ZoRayk4sRa8=; b=jny/l8AbmEcB1Ihx0IvLwGojFsKXRkeW3Juoq8bqfVTA8MxqJGqe4wCIAuH5Jb/foJnmKGvscZl0t4LofMAXh2f8sAyg9b9hWeo66wISEWZu1Fsj0NhpBQSV40xD5DN+nVO9yPmtSLcKYxw+voooux5wUBPrl3TTE605AKcIOdQu8tAhbfJ7aG9GePCn7Yn1RysBII8a3+lvyQH0D9PJL1pBTfAOIRnz30XnLui2LLezBX8xrwxk8xUT77gK9+IG7gCRq9hf6au3FnkPQ1KezRf86sjg8tOjQ7XdfQNT/p/ssu098O0McTpuVIqtg3QYakjURowpyrsKtgxGuFjdqg== 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=HA99y+5DlXUSFWOgT50dXjeB07y57Vj9ZoRayk4sRa8=; b=MSWfXxAjjfbrYSoi/R5ll93eZ5Qb2wGZRVuY1mqKSvTQuUku5fdwFMbEDa/AaZ5srye9FbGX5flrc2zn5l7raMDUS827CwZqdVHd7B+Krkbq7sTrt65Z0Dg1zf43Oipb8+6CKn0g+OnDx61TthJCZVvOb+snuKhr8UJUYzTfA7c= Received: from DM4PR10MB8218.namprd10.prod.outlook.com (2603:10b6:8:1cc::16) by DM3PPF00080FB4B.namprd10.prod.outlook.com (2603:10b6:f:fc00::c04) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8901.23; Mon, 7 Jul 2025 05:28:35 +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.8901.024; Mon, 7 Jul 2025 05:28:35 +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-kselftest@vger.kernel.org Subject: [PATCH 01/10] mm/mremap: perform some simple cleanups Date: Mon, 7 Jul 2025 06:27:44 +0100 Message-ID: <067bd59f92c552fa4ed5bc22b051ec086bbc0235.1751865330.git.lorenzo.stoakes@oracle.com> X-Mailer: git-send-email 2.50.0 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: LO2P265CA0264.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:8a::36) 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_|DM3PPF00080FB4B:EE_ X-MS-Office365-Filtering-Correlation-Id: 690e4281-f40e-4a94-56f5-08ddbd171e80 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|7416014|376014|366016|1800799024; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?OLJg1XecsHlZuGcayZ5vpuxcS3+tEouy21qo8GhoHjpKG3ycng9AIsfxVJ3J?= =?us-ascii?Q?cqfSwddbCEM9EvUSoRi6hneKK2FHCaSDZA40Hb01y85TJNHkWKqjWnC6uqv5?= =?us-ascii?Q?7Wgs9wDLCwotb2bg+LWRPX17lx3sOjCeYhiIXoSgVc3gWpEkQol0R8FdkSAT?= =?us-ascii?Q?tWfO5Emrf+l2mUURzDVoyAsIYJ4FqYOA3F0/a21Ko1NA0njmk0gpyexI53Ui?= =?us-ascii?Q?dlqGyAMdf6paXtK3yZeJu2WLtye8ypdMbDRgdTs3MCaFtH2YtQBNAEqyrLpx?= =?us-ascii?Q?pfAnc4v4QesZD3LuWZr3f+3m712lvJpk0rx5qYzcWdY10StP1aiBbllzwtpI?= =?us-ascii?Q?lLxyDeDYW8qhjHsa+TVQqftazSkvEiuiv7gDQbInkSkfmrcEW2R0G9xqHGAA?= =?us-ascii?Q?MvXSpjKataz35FXzhvZ3RYmu6AZzMT3ORR5Z3NGamytws8nhiHsBoK2lgAmJ?= =?us-ascii?Q?/bUmbBNusJHiGt3NJpwv24lYKUu6KJwa1mR5UxTppEbkwoOzhvm1QR7IsKfD?= =?us-ascii?Q?suF+aHlwJS/AKE8rP6OhQbMy5GwN3g2LRKMFjgS9rSYAXKZhzhLKJ5jIrwEq?= =?us-ascii?Q?qw0a34cUzUbw7i32BgkX88A5yU+jhZ+HXCZbLj5Tu86gvReD6AZh3SFchmzp?= =?us-ascii?Q?cLFiKV5Z/V8jFCrDjYxz+44XYvX00hCDt1n4qI3m3VVO90BTTALwVfBUVyAK?= =?us-ascii?Q?DPP1BMCSML8mIy/vFYnrKHGzbud23vtDobFphsOh8lXWriXE7sJybIgeq2P4?= =?us-ascii?Q?T/sNpXezFbeH5bqZMXkuuKzspsoOG6uYpR9muPD20RmiRx6Qkkwsu1CNE5Oe?= =?us-ascii?Q?H2PMdeYR6cjMMBch/xgYapE/U3dPovJsuBYijHZtb3+1D2p09Rhmg97cps3u?= =?us-ascii?Q?4j1Bt0kyL3cB2CwEMD1JJv5YREQ18OEW8LJljdcE8S+7FU6gdAoCTVFxs14U?= =?us-ascii?Q?cTb+3iNFvYUfigz47waiekBLamGS4/Y88MT+I8v3eQ8HXj+TDqZlNVWrMfgf?= =?us-ascii?Q?664kjndzVsviiOV1S3da6Q8zucc+50AYDOvu9WK3elT88Cw9T4I7FcY0M+e9?= =?us-ascii?Q?zu17SCrQSaB3K6QGYn+9S8J7JfNDSrW7ej+6apXDZalhUjkGOOTvtXawWfxy?= =?us-ascii?Q?9us5Q2wrc/PLkUQcwlmwCSy34PPyVqH2mJi93NMI3e5KnqGHRmbAizhZ15Bn?= =?us-ascii?Q?pmW0FCFBvgJco57hkU6kDYspnc2gMVTHjdk60w+UOv56Hbc3DOb+1x2ViWx2?= =?us-ascii?Q?FWtn5zaVnQnLU76rYQES0Nf8LJrbaOXVuqPL4kIAav+z6l91DS5BKvO1tVpS?= =?us-ascii?Q?/+u0oCoec0ba5nxKiX9qYFFYlAkcVkSt3ZlQvMfw7FG6wdJr3fIFpRcsrNJs?= =?us-ascii?Q?kdTfFS59UuCq9+PAD0dy+p34eNE7CTemZch6xLkQ/jBTAxgjI1bIJOYyNn9I?= =?us-ascii?Q?cwUu0PYMHpI=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)(7416014)(376014)(366016)(1800799024);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?AxNJrtqMrjPgn9Uv3Tp00mA5wi0QmRcppPclWI/fx49PfuUzBgAEFf8rDLRR?= =?us-ascii?Q?j8brzJbk4PFDGhblpiB6LE8my9xNiq8obAq3fvVegHqBKFBKkLy4pqlypWsF?= =?us-ascii?Q?ecuqYIFzhlz7RZlcFpIABUGbK8MzsGyyDhhCRVxNNcUio+U+JSPxb99VgLww?= =?us-ascii?Q?rLyqp4VfOAtsMZjNHQBF1wg7+X8IYA10UdFnFkmwvfZQqIgJHVIMxRekbpxs?= =?us-ascii?Q?oAazQDXb5EFtJgO98VR1QZEGJaN8frcgerjXlLl+WTCTgv+O1xIKVLK/te3z?= =?us-ascii?Q?V70n1Zx2VrW/hJO7ZjC73oUdhQNlM7LsQGTmRw+P/kvmrGd3uTTYQUvgdD/Z?= =?us-ascii?Q?YGSUUzkNOJGfti/9jaGmun9dOVm/AO5N4S7DAE2Fh1/SQSxocRK32sLekNo3?= =?us-ascii?Q?XamZgKj1yQc3hKtRTtWyCM4BRU5TYPLdVbKsAagmKhl7N12L+YX38NJv96b9?= =?us-ascii?Q?UFrsr+MCBW8oU7u2fb2mGVkkVvY2iP8lz5JGcsYviSm83hn1OX1fXL/G5Xvs?= =?us-ascii?Q?fzT6p+uikr5COAt2oasNAYdwjZlq6uyqqxhjs8EEOMSqcv1qJazOSfK94yHe?= =?us-ascii?Q?pky+1XE2mfi54eM8FSG/QO1iJArcKInT9aEygebid0G27gavb/1HoCC5bj34?= =?us-ascii?Q?HUxRWLAE+3jIqnTTyGBa42oPiHZ6tLKb1zdCn1wvxwkJYLEgSaAi38FKvs0q?= =?us-ascii?Q?zjnq+IteLzGo6UiPaDVGRQ3bMBfhGnBYKPPPR/lmt5vkqSGUSDi2fseb9LY0?= =?us-ascii?Q?TH0h5mQwczP5sRHdeoruW9W+TH7NjNVvM9xYZkTv+Kd8kaSyUHOtikcSsBgZ?= =?us-ascii?Q?20J2Vc2AfmuXMXBblA6H5VyiB4OaqtJnGtDVkHY5XXgRcJXcijWtFmMnHriJ?= =?us-ascii?Q?ptifHWH70vT7dXKuQAiLPGg0eWLrczFD/mdbCwsFowKekLtuCwlYBhPN9VNo?= =?us-ascii?Q?a6zIBlhcLDxrSxoWTxuqEb4LQ89t30Ax6zvYpBBlFAd7TR34tpbQSUTry4vz?= =?us-ascii?Q?iK9ed7dlryGPOFv1Fn237O+v8HgDn2n6H6WpPzkZs4+w1sRv/2cHiiuhsfaF?= =?us-ascii?Q?bNpy3AWTiXZz7GmBUJjRmAuJ2/W7I7G/M6EvcWR2Nn1kvxI03iSrtW1H8E2p?= =?us-ascii?Q?OV/mxQe3+PtvmMHffJ8QmRNG8bLCxXwunzm2XHxX3yWQAfN9TmwPAxdTk+7L?= =?us-ascii?Q?SGfHzoTUczbSnAx3pLmbjydp7vWMDqmXVnWx19lqZdhgmLOtAgilf6SsMfO4?= =?us-ascii?Q?qeLMLzViCR3Z/YBU2NsOObslF/tQYdp0hLE8BwzTWQ8THhzIOhWvCXb1Zy8c?= =?us-ascii?Q?9jP2FKoMa1u9aeYhEg3QHBx7vYzbEFQppXeGM5M9b75KdCYQgX4CD03tQtuX?= =?us-ascii?Q?cukpUQhRAg4ZRlKRgcJVgXUjDmno2TTQ+9U6l0yU1wkDc4VA2UPM1tdCQxre?= =?us-ascii?Q?0AOGd5n0DXFEvSUeGYLltSWUMk+xqcm4qHElWKRjgWVANewKUOzuy0RN1cU7?= =?us-ascii?Q?yZGWgSD8aG00JZ0LKH5VfjbFhLivr41opjdKlrqUA4XlGW6hySZuo6huZhOb?= =?us-ascii?Q?WgdVoNR9f4WKjWvqNBWUwxUOE6ibb6AyVjvSKHG8TQkzfAVxUv4fWLlQGfIU?= =?us-ascii?Q?dg=3D=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: K3TxDguwZaOct20uCROrVwXqbCisKfGw+3yuIXVsN7OzQuEpyt1zfGw7eGbawkdoZ5Au4Kqgr1klrQhgSToZ2gI9YO8B35rHkJRpn2cD5+cJMZVFNjOMVJLtozv7PiqbBGlbUi2uwfc9t/PxRdXcKIEBrqMxR8t316lYNk4+RPq3QFPJNHQQnYdqGeEL25CKYDG7expoKJHZmNhFICi7vvr3lnGCu6dTLAKnGPCHKx1VcPvUTZgKa3FWY5Z8Q5RnC2RMnfMwqbVJHCHR/G81h+K/QazXqlLwR5hw+OdtemHCf8h5b33QYr6mdq0d3GM+oF/t+BbDNfDqE7pihF5+q3OkpwdEXSjXgwSeB2D7lJG7ZpcVqwxIDE+wj+MmiPUL8syDCCLJwPkw9fIBep8jIhlDEMG8eQWOgAfwn/BVm0Ac3sL5TH8R3bx9SSTLhp2mx5xfs0BDgSbgNJXV2WNv+tnwYnOfKSvcF3pxLljPVABuC1pAs2XUrqaoJlRdwJAes+iq9wsIlKiMDafmxsqYW9Lkdx/iBVJRjx/mhgtB0F8jcEWKqJd0UYHMhOh1GofqsnpUhhEPDKKrD11/VnUAvtLWl0PgLFcbjHMFeCORnU8= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 690e4281-f40e-4a94-56f5-08ddbd171e80 X-MS-Exchange-CrossTenant-AuthSource: DM4PR10MB8218.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Jul 2025 05:28:35.1057 (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: 1sOO1NvbhN42BfpouMzMDS9cVVGnADDgGG5zxrlX+G3pQxG8iNRF1PZDr4fIC0cP45EgaSa+e28B+NzQCMLm1pPgziTMM9v0bb1B0oqmpm4= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM3PPF00080FB4B X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1099,Hydra:6.1.7,FMLib:17.12.80.40 definitions=2025-07-04_07,2025-07-06_01,2025-03-28_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 spamscore=0 phishscore=0 bulkscore=0 malwarescore=0 mlxscore=0 mlxlogscore=999 adultscore=0 suspectscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2505160000 definitions=main-2507070030 X-Authority-Analysis: v=2.4 cv=NrbRc9dJ c=1 sm=1 tr=0 ts=686b5b18 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=-y-8OK93jEFqfRmHsx8A:9 X-Proofpoint-GUID: lDo9gyclB1EPGxXYBRh_lUsN2D5Yh80g X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwNzA3MDAyOSBTYWx0ZWRfXyxW+H0E43ant XEk3Wo4XvbMpW9eydrU1yO5xG8YVcig/WS/E+c2fKEnX0+xnE5UbPvALQ2XQaxrUZqgh23XmEWS NDd/qX7pVTS5s2kweRr+7rcc/ovudJJJkKoh8qOVFGCFDhtY39f7QY7ZaNL8lqLHBziqIA8Qww+ pU4jRTz6QRZz4LDBGEJCVrX5w0yHfMw8d4tyCmC+czpBcrSyf0IbGEvMCdJU4WS/lL0n/iziBS5 wyRTsvj4KuN3bHbncOXp1qk6me+2CiHZwIppTHtRwqwhUd98ATV4X8lOekcS43xeajkgBa/NaSO jTx/5de1uFE1MgrtT01Z0mm6c0N/4xuyRjMDtTRDFec9HBa+Z/o1ptze0wdy0OwTbW82ecAQzal bZGV2Kk3yp/UaFKt9A+4HToya9ByiSioLo3AS1/H0t3fKsgyI58OAY36NIBim6X2xtn9O57k X-Proofpoint-ORIG-GUID: lDo9gyclB1EPGxXYBRh_lUsN2D5Yh80g 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.0 From nobody Tue Oct 7 19:50:49 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 4E649271456; Mon, 7 Jul 2025 05:30:12 +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=1751866214; cv=fail; b=slxVYt6FWdYYqTLB7Q/bC65IAxH4oU7eaoxEeVJHnrna/mrS+6w4mo2t40m11q8oyTTsrGyvaDpzIHNo/yn27HZfjRhrR4MLg7L6WjDjDaZ9Ll3npvNUQqwCYxpPcaHw9+s2x2FeIpgHi0oyb/a4wm+9WczP8MANlWOtzmrw8f4= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1751866214; c=relaxed/simple; bh=074UYxuhV9s4XsDTwy9U7n9sjyNgO94F+VTJkiNgHaY=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=QhwE6PLb4CElrLLau/A17b/IHBHwR0EiXz1K8yeXjk6JQO6IMrP5naxg+bCdYfoWPDl6WIc+wPM7rn9utoavBnihPqyFKaDn+1uWyW5ks9CxIHhhZoHyinWTGJhb8f+cdPhUQT3Kj9K4rO/OGoD+AvWBpXA34Sem9kIFpp5+0w0= 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=YKFh6QPe; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=DwYjp3OH; 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="YKFh6QPe"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="DwYjp3OH" 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 566LeUdx004231; Mon, 7 Jul 2025 05:28:57 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=cc :content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s= corp-2025-04-25; bh=3TewVDIJx9Odr+Qd/YNQrIeKGDph0Hf+8m0KaT/I41Q=; b= YKFh6QPeRI/1fbTFmE5DQQsVigvwnHrB+hrr5XtYhBeYE6xZpyAmZkPer8rSKcrz u5rOH9/F3vJumwfogy/PeH9ul8cKldTw56A+IpntTND/G05JcF5fkkqkQlsmKfDd EGdds76DwheQiiEDejeijlaka4skjIVBq/jeyl+b4zAk5OuoQ4ARhpDOp92zDhiF V6bVKn/t0Jn21IC8Kht1OX1V7DjiEimaMlcHeK1xql3uJhK8hd5/YVSWvDOy7oTc Jj+9YcRDcg4T1XbCWAiqzNvOw2R+FWPnvloGgZLkwCyLbvNpdOoWpPdv6nTAH9IR BpmoWDeuyJzW4IyHE0q11g== Received: from phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta03.appoci.oracle.com [138.1.37.129]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 47pvkxsxyb-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 07 Jul 2025 05:28:57 +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 5672PVBl024285; Mon, 7 Jul 2025 05:28:56 GMT Received: from nam04-bn8-obe.outbound.protection.outlook.com (mail-bn8nam04on2065.outbound.protection.outlook.com [40.107.100.65]) by phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 47ptg82hd8-2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 07 Jul 2025 05:28:56 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=uvEnCBHWcNybjX4axc/xgmXpyFBtbTgm32MX4C+hg1JMY3lFhthIwmii6Y0u8GVdci3IN3XrErq+tBpg5FKWdVPY2ssC/MXXz1s1febTdeqHTwPMwKF1lfFvcVb3EPDpRvuWr1NZX2jDKCRSCGKKX8YYo6iZMSzKP+egMwzxIYwQ6HwnrJdaU2eJO9/oO1uXdtIfwl4QYKX3ykw32AGPhZ3aG7KtBZtlyTFZhA58f0dTUZtE08kx/NqpA0XVxMNTS9HFkzA9Nz3yEmUlJnRasDLu3p0ADtp2bFW5Mm2GiwvTOVzYs9i8L55SMKxaFZKBSZ01d3hz/7VxPygBxE+KZQ== 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=3TewVDIJx9Odr+Qd/YNQrIeKGDph0Hf+8m0KaT/I41Q=; b=bDGp/mgUb1dEk6FsLZRIG1Q2JTgfwwdsI37+jSSV2Kj60K2i8iuf6UKMRsrCzppW2cYaddKowFvaFZnn1YYLaZl2nIUlO1mLvDpmpp6MYovULr3qYNNtrGm2zSNznWJaZLGODJfAEcev8iDT9reTCY7gFAXnbAvMCyZzLLFPuT1jPhdpHL4GMWIiXsdty2I7eo0vnC5EIiI/XaiXGeeFESrevhXgAcfn/7W/ldPs3pteoBbDSzQB8Y7hf0xxzJmi1zmsutRCeZfuLK3X4j/A5yTfrtiHs+eBXLY6SptQ5SnCBivkNJUgZ0bXgAyOoktWU6XKskCugAQ5doFuJ6jy8A== 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=3TewVDIJx9Odr+Qd/YNQrIeKGDph0Hf+8m0KaT/I41Q=; b=DwYjp3OHuzsHCLoBIPAzDgxKRcoQGAwoSZbb7/LBCjaL6/UuFVI77YTP2CrrzX/I+cucfyLDt9AKBYSN0a5JspmuwMU/A0z8eX6xP5NBOqFt6Pp3PBAy0wMgjMGwABiqeVKt3LeK2ZSbvTn3OrYV9xZNe81aaQjFRZ960r5BlWE= Received: from DM4PR10MB8218.namprd10.prod.outlook.com (2603:10b6:8:1cc::16) by DM3PPF00080FB4B.namprd10.prod.outlook.com (2603:10b6:f:fc00::c04) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8901.23; Mon, 7 Jul 2025 05:28:37 +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.8901.024; Mon, 7 Jul 2025 05:28:37 +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-kselftest@vger.kernel.org Subject: [PATCH 02/10] mm/mremap: refactor initial parameter sanity checks Date: Mon, 7 Jul 2025 06:27:45 +0100 Message-ID: X-Mailer: git-send-email 2.50.0 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: LO0P265CA0013.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:355::8) To DM4PR10MB8218.namprd10.prod.outlook.com (2603:10b6:8:1cc::16) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DM4PR10MB8218:EE_|DM3PPF00080FB4B:EE_ X-MS-Office365-Filtering-Correlation-Id: 481e3df7-7a59-45de-cfde-08ddbd171fe5 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|7416014|376014|366016|1800799024; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?AzHKhl7olSHtjK4WpH5oGyfMjGQq75bSilHLp3WWw2brDSKnXIiikz785oxb?= =?us-ascii?Q?Rx+cXtldbnJz7d0yaqh/AuXvDjv1So+lotAMYXqwyy5/qMoF7OFqbmSe48ai?= =?us-ascii?Q?MJEqrVnrfIhES3fDOYA9MvNlxkaHDjcp1E6rD8LK9QXRT3tQC5sYf5MyoL4h?= =?us-ascii?Q?Ghvyky8wbxjdFIkl/0TkHodA3nmVyedA475aV2hTXdDVQLQzfIBlo3fwdm5g?= =?us-ascii?Q?HG1U7TjjBpy9vWTF361lVB4CJKFihETrk5HaW7d3OswQ939Nd/eWU9U3Wf39?= =?us-ascii?Q?Fm6yqopTSLF+vguEfEofiWU4GCgQLvtd5uNoYwrFQRVRx7JFp/suTBzM87mm?= =?us-ascii?Q?+YChrl7f6usRH57OCx+OetdqEwbt3Vi+xdkmZTncWwDidPHD7woY/+1nzk/L?= =?us-ascii?Q?99mUc/waS9UCSbyNabQ98hQQonI0KrkEHjBwqFP0wMHTxfy0amHYuT+ba0j+?= =?us-ascii?Q?hUZBLrsfqB4d2GdBX8IyzuLlZWubclb7KSwKZ281WdMQEbJ0jUrr6H33ZlK3?= =?us-ascii?Q?R/uUtu/B3J+IvRoH8EOThQXpW0wIJD5OucjtQd3/1aufTuo+ZmgNio9YWHiL?= =?us-ascii?Q?G41uKqD5nX6QIB/pBrJnEkCxTeLs9ruTRZLXKmsRXLEpCwUiHG4Oekfn2scb?= =?us-ascii?Q?w8zWnPuQ3QtbVmoNBcv7dckTrkf0BANVPRqe6ElQ3u5uoVFoMrjk8KFCMUJS?= =?us-ascii?Q?iKKnRx7/ZvVv0C/7u5Bq465xlCZ8Kbi+RIJUD+iaPgrQkNhwd5bURIcLWnz+?= =?us-ascii?Q?q6mDvWvrDv+BsHHD/EyPnMttCJF2Td0rIkBSM6THcubnNsTNh4YDTD5xLwgu?= =?us-ascii?Q?s7g1jehsZEUI6TvmcF+/NQx2SKK5pMSHaSEYgTk8QP6Wol1muD5ec+tNruLD?= =?us-ascii?Q?kHHreprZ/vscIJvO93YKGFBZuJivY9AZJJunafXg9oNVYoANMrS2fpHEcv3G?= =?us-ascii?Q?uSMkzfvgVSPmkSHIdLhqDwefilvHnHV8r3tBjOh92ETF3EQMSHuc3ua5Ltjc?= =?us-ascii?Q?6CbkxlQX5D4eAvvlkHAZ+iUcNImoD0YwOYu/YZl0LQbsA37LIQI2grH2gpJZ?= =?us-ascii?Q?Gw2APWAJRW1G04PiQ/4PiHpETkL3gR0h6Zbr4Qe6xD8BulWL9CnkLtIIqylF?= =?us-ascii?Q?zqiuQahu/nBeQDNWqp1R2HSpjHtRsQOZHGkE1lJfCHpg2rz2NvXXfP7GPzh3?= =?us-ascii?Q?ha83tbb6czki1FFQPIKfCPT3Y58O/xN8Zx0hmmrbttyOf6+A087Z5516jxLY?= =?us-ascii?Q?s/qeHUTC/CUjNX9KYHHN+UtXheIoMppHN/kijgL5jIbVp2WU0s8piWcsuJ2N?= =?us-ascii?Q?ku5Ho4sy/A3DpR+SDKESCouNZ5WMJsvJe7JAFpA8KJVbT2npL2lWXaIKeFAj?= =?us-ascii?Q?AkGdPBf4XDjwzGqe6Ss7R1fhMLRNsbKjOv5OOzIEGM1/sAIT3QxxkicZSoK1?= =?us-ascii?Q?TeHSZXucyyA=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)(7416014)(376014)(366016)(1800799024);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?c/iCMtlUHQLydpkxVKC6+EzXtaK0M5BLOUAEjeuAwDWN62ktfn9irUBCAr0i?= =?us-ascii?Q?tITao/cIEIceKMyRPl1s8tKZzyQpadTM+8Bm/EA2alMUlch1s1WgSq/Z0tEj?= =?us-ascii?Q?mWBIdgsnXVXaNeUUUvREHjSiIT8sw8OvFRFz0CBIHqrMB2ZvavjxAsUE7E2/?= =?us-ascii?Q?rwgyerBSRUEmreCLqJTAfxKBajh8SnGnvKX0b8xo091VyXBXgd/sRtbjWnmu?= =?us-ascii?Q?H0NmZiUz+/U2gdOAmDtwZCczZBspVr8rKTuudcM6kJ8gNyp3YcDcR+gsWDdm?= =?us-ascii?Q?gVsTY1OfEeO5sOXGFZ6PScR2qmuKiaAvWGHR3mBgkzZ5w7yUWj1PRRrrNq2c?= =?us-ascii?Q?NDhv/tc41SWsb/TICNUSDS1MjHkZJQsefFSFHI+zvvipJClUCJ9o4FMEguD5?= =?us-ascii?Q?N3iXlZvAL4mg5SNDH+M6KsfTaIc1fZTc/YeWOiBL3xMX43pdvgN84+jeHw0h?= =?us-ascii?Q?730QjKrIORWZwB0xAaaUyCp7kyV4NKynd10Np7MEl4dc6cz3osiU1NNkyzlY?= =?us-ascii?Q?SQL6GoOPOeA2WdJnU7mA3dsq0SP/8leF0seI+YJjNw21WZ0BZTleAn73IdWp?= =?us-ascii?Q?2E0WAIt6RjZyzHoMa8SPA4ZYslJoHMTFLDiIoW4NojJoHR5q+xVrX12usUbp?= =?us-ascii?Q?Chrhm66Rmyj/3NxSmpIXyDZXVP0RROT0L7ljuVlhhmNFN6c0SULjtHnm3q50?= =?us-ascii?Q?h1AEnxUckGm5n4wKyhrMbyMzhW3TbeHzrE6lmrWq7dtKK6bAgpMrG4xPmlpx?= =?us-ascii?Q?p1j0s5/JM+RtJh/hLMhssOWcnUahs5SrNx2V5CWMij247feAAV5ihVoaQa1Z?= =?us-ascii?Q?nppgOHRXXpI/FvF058fTGHG11JkfkX2CwYzVRBuxKw473Rp/Yw71Bio7lGzb?= =?us-ascii?Q?kw12y3K9Jt1z2Zxl3VRgYlPqFgHwZ71HuD5V19hc4ETzcexpZunRyzIupaG3?= =?us-ascii?Q?Zta2d65+sUoE9jbhkU1aKPQvdVlkZMiWTqLZyZigneo5PBzD6fdfqf1t6qhx?= =?us-ascii?Q?mwDb3+LeRGRsEzKaqj5dIUyinvukhLnWEU4ucaS2LAk+ek/aooOcQ7Quzzec?= =?us-ascii?Q?lRhs54Z7B1+62M+j8DZdzMc9yR2szcJ0Fz8xjLNh8HDopCAY/oexQnZzhVOK?= =?us-ascii?Q?kYKwKYluOKCPVHze/UEUKbm4gBLM+Vi1nG4Ecpwf0iqkE2IiIm1dBKqfAT17?= =?us-ascii?Q?rjN0KShUZYXg39bzVu8m9wi5A78ULk/zmmTSHCtQZ2Ia82Q+Bg6KY1kyTccy?= =?us-ascii?Q?Gyiqibod3wx5+RFMacrYBvJXeJXgVY1uIATIOMtOEhykOKR6fBy8GqaNc/LI?= =?us-ascii?Q?G6JtQuY/DLey2ql/7CZdZHekS2Y/vYOWvLtX6pE7XEyinu5cJeO4g9DC+iKO?= =?us-ascii?Q?v7UP3LOxCRXsbHZUJD6A9rWdHedAEyuA1VEkqxN1nhLkSBMA47venLIGhYW7?= =?us-ascii?Q?oFFWGPgMfgjBW0Pj4JUg7SnIabz+o6A7J2j/leMGkGRaONb4iy3isuf2akfq?= =?us-ascii?Q?D3rWoa1lVD3yxSt3k2eivqZe+h8F1bZm0o55tUPRyBvvWjkXnzQ7uTUrl7Jb?= =?us-ascii?Q?PcNWzbiEUFmw0jJ00rdzwDL8bV0dcnHMs/osFnQKongyhjgD2jWke83DlMKm?= =?us-ascii?Q?dA=3D=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: wlwfztQIqpkFdANGudtUkDCLxVyfDiSfB4/p+pSXF1fGp1iHOfz4tFdWBC6S1OK9BvgOHXL2XxH0XWRe+kdnyyX9vgzPwE7tDkrngybS9q+wokFwwCHkdn0dT/Xr+q6sjDjXymXJGOpuARpIM+TxdjVTHQqy2L0G/puv3kTWJg6c79VyzGEnkW3oLWYYKNUpfBuzYjMjwCHlJKgwmFt7n/IkAhmAVsGZtydMiJ+xEBUPIegtJLVsWuWf0jVlxXzLg/OhKJ98fTqgJIM4ZEQbQFBL3tFiEi0L6NqgJ7AZQU0Fl6NJxvJxt5wGO8QhhAQIvb/O6U/TSW3+7lFSwWpdN3U/sNPeQ/utA8FQK5FmTg9DHP4Vuarg8m1gxc63Nt9Dptt77fN+VFAI5lCivjxXmJdUh04TGTWVjQomk2zi3ZLl6M2HhxpU/AfCdt2V4HjvMeF65BnSlK9duAMnpZ4Wx4R26W87CgufVNVR+YRkwPiUvJWbF+Jt4Yx1ERKUmLsjx/vafDNeVz0PW/VIJPjnkxVODV1Oc/NuFXYHz6LCheIcVXp5YniLjBTCTHGLh8VSpxbA2k0REkgKTA8doauk61Dy4fmHiDJRddO/z2JiM2k= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 481e3df7-7a59-45de-cfde-08ddbd171fe5 X-MS-Exchange-CrossTenant-AuthSource: DM4PR10MB8218.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Jul 2025 05:28:37.4020 (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: CrlLNlkp4I6iT6djH3pJBCWq5jhiO91FbT3ZYnyy4uoOfpv7pnf6PzhkS8ZXyTFFeKxal2KsdMjfeCwfVc3gKHRpt0yJKuyvheFgGlJwPOg= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM3PPF00080FB4B X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1099,Hydra:6.1.7,FMLib:17.12.80.40 definitions=2025-07-04_07,2025-07-06_01,2025-03-28_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 spamscore=0 phishscore=0 bulkscore=0 malwarescore=0 mlxscore=0 mlxlogscore=999 adultscore=0 suspectscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2505160000 definitions=main-2507070030 X-Proofpoint-GUID: i3XewSEmKg3Z8ISez95ih8h8KdkMhjRr X-Authority-Analysis: v=2.4 cv=a5Uw9VSF c=1 sm=1 tr=0 ts=686b5b19 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-Spam-Details-Enc: AW1haW4tMjUwNzA3MDAyOSBTYWx0ZWRfX0lv4KWjap5sY 7C3GCLdPvoC8n2XfA9cg+YKdIdBDT9t6aFEQM+da5umPye5hX9LJhhnb4pgx8fT4SKKwQuJxkfj CngOdYfi8QOHbt7o1CMp4JYVFWjFR9yALxehUfWl/Hh8v13MhYaNbZuHU7A2w7yFtSSkqbKkyiu eZAHwJdM8w/YK+HOuyYg0N75KEOKaqzProoPuRG1LBqnjkNgTRZ25LKHOLIQl3LNwNxxBWRGGN5 //1sJGGznjNAUwASmIpVJgyhFBybkUuThIhRp4fXFNA9CDfghCyXvec6CPD5gHx8rnO3SdWmDnp 3B284GDflADucMFJv9/0pJ6pSMFn3+Cs4jZPs2Yn/3wGMvPOXqDeaDcXLuaM+8D9WQbR2vwRfp9 esoAoJbfh2tYVQSv4LnUtQMuSL2/BoS7MO2UQxW4r8GpIwSMrsGLfXk86PgtREHm6fPADggv X-Proofpoint-ORIG-GUID: i3XewSEmKg3Z8ISez95ih8h8KdkMhjRr 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.0 From nobody Tue Oct 7 19:50:49 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 DBDCD26FD9F; Mon, 7 Jul 2025 05:30:12 +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=1751866215; cv=fail; b=JKhwNK+Le8/Ru2tu8BZnvasfLuXarzp9xUwoEBda2vOmeEGhqZORd+5Z/JmXxc+10m7Tj2F01Of5fzUO6VfkO8NlcUShaOch7+8iMoybzTsoGbn4W021d1n4kDfGSr4+tQVNFS8WMljbR5t3OG+jsDU6KO4puVShgKfXwwjJyY8= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1751866215; c=relaxed/simple; bh=b/yvgMxz1HVjl+UVQ7cem+IGq4bS+Wiu7q5JS2z5Db0=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=m7VLdKQ/f1owLgqOAYjR7+jJ8TKB0LmkfvOF5ODiYV7xntjy0QZrZjwRzZcpM07uNBNRs7F5URckdFzXVdgVNs/3HjJp2pDa2H0PZgQOC9luFL3OrOsCylROM75UhbwgK6gZSr9vzBrlHR3jz/cO/YiwYxcBuHgd5UYxEjlOnCE= 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=ZOrjx7us; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=DyNzdX8G; 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="ZOrjx7us"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="DyNzdX8G" Received: from pps.filterd (m0246627.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 566Nse1g024569; Mon, 7 Jul 2025 05:28:58 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=e3LB+GMULT67jUz3w3synDT7nQFwJRZ/07o0x78CIBA=; b= ZOrjx7ushw8fLT1G5z3VOTpSYPgitOM1MXDe7yijdmncvAglfazGk06vXRi7HR6T /o7uASiFRadQYrTJ4Gx76jKVHYLRqc2fD/ZhnI4nsk03g6OWArs9ZqRSxPv3HAGA qPx88eP7NqQFtkxlefG3cj0dyaPQKxFswQKs/Vxto6g0aKNShKej4CH6gIVtZBu3 Q5sXATpUL/bPcoJI0bdEbvWG6e/GW0orBacG3LUOSYjB7k3BO5xWSj8K98YSHqG7 EFM0RMa4qeD3N80muUBhXz/1pu9f/9U01rvKs5JJ9gNMfNvpViMqutHlBH/657cX h/1Hqo3FHRgTR2Uxa4/TQQ== Received: from phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta03.appoci.oracle.com [138.1.37.129]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 47ptn520dv-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 07 Jul 2025 05:28:58 +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 5672PVBm024285; Mon, 7 Jul 2025 05:28:57 GMT Received: from nam04-bn8-obe.outbound.protection.outlook.com (mail-bn8nam04on2065.outbound.protection.outlook.com [40.107.100.65]) by phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 47ptg82hd8-3 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 07 Jul 2025 05:28:57 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=MXiscavBOZbHSgl6oAVvhlXiaAGvu2EWR30h63CXFNQk/9bFOYVKZegiJWiY81u2DZeX3lhEQlwlqysx/rod3c5d74bz/xvTMrKNJVereD/0KstsOIgMX7U7NPcF2vu1gRe/UXZw3dNXVir4SzCAxcOfYFM9nt/oABBnNsxOemYmOb79U0/VOnaRkgYm9VAbY6AXE4pyupFcBTVRZ8icdfMsHv/LQ8hxyQPxMxifk7jZ6hXD+vkEhPIDuRggh0Rf5kIc30qcT5SqrGXhoa/zwnc2LzKzOpHWmaQud1D8c0m9Z+MsWgwHrNIHsWQkKmK21WfE7ETURigj8zLotidYQA== 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=e3LB+GMULT67jUz3w3synDT7nQFwJRZ/07o0x78CIBA=; b=oYucKlSiNo2lR3jEHPDR/ndNxl4V1lLHJEtwTMQmZSeCTDRKXR7aSGui9rMHl2Sq+rIU7HWxObR6dhdgcQb5fZlOGv9PQC991UhKsivyNhZ9xObruHW+xFXOUdenPokVL14VUfvY8JincBmkhwQjuL5P+Ql5PX82LHYbHME8PlNsxhFPabhd59PaO5AFXxSUamuCmMU0rbK/j6H/GFrYgArx0TBGudSipC2M16aMP4mjJgtxYBPiJDvonZHBg29mLObqdM4QnVmBA4kR+20hjFNnLr2XlKHZMsDVP5Q15zcaNt+yYUUVYlIxY8VdL8/+B8UZ7G4QJE6ejCsQlxpETg== 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=e3LB+GMULT67jUz3w3synDT7nQFwJRZ/07o0x78CIBA=; b=DyNzdX8Glh5RWNxVVurVEX7OPd+p2vVYJiCpGSvaqk7+7HPnf7aGbhRlW1nZ7eEO6PPb+1GE6ScnRrB/aKJfwU5WS/Q3B1laobzNS17GeFQewTwbynl4g7e8JgXGfDp2K9qkMdZEPl0SsrcEE+wxIR/B0GVZ2CHO63NPvPRgLqc= Received: from DM4PR10MB8218.namprd10.prod.outlook.com (2603:10b6:8:1cc::16) by DM3PPF00080FB4B.namprd10.prod.outlook.com (2603:10b6:f:fc00::c04) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8901.23; Mon, 7 Jul 2025 05:28:39 +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.8901.024; Mon, 7 Jul 2025 05:28:39 +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-kselftest@vger.kernel.org Subject: [PATCH 03/10] mm/mremap: put VMA check and prep logic into helper function Date: Mon, 7 Jul 2025 06:27:46 +0100 Message-ID: X-Mailer: git-send-email 2.50.0 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: LO6P123CA0060.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:310::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_|DM3PPF00080FB4B:EE_ X-MS-Office365-Filtering-Correlation-Id: 3722046b-85df-4245-87e5-08ddbd172125 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|7416014|376014|366016|1800799024; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?0cUKf5Iebmlew86y/4G/Mw2B2ywDxSmGoyQOL0xGr4ANXNsOWJ6sDnCXqdYt?= =?us-ascii?Q?sTS0ZLVcK2DxKcu3qP2dnhKBjG939rE/2lHIH/Z4lkAvcKwHVaCntuKZ6ySD?= =?us-ascii?Q?CumNE/lRk6QzCCJhNedyMMTf21paWVjo+qEbv6CFlE3nCfLCtbdB82+gAqL2?= =?us-ascii?Q?KcTF4ZpU/YzQgyXqF7kaYDdGhDdyxZToKweya6H1A9BdCTCB8darp5xHmXM5?= =?us-ascii?Q?gTOdw2JLtFMuuHQP4vwoCaHlz2Enn84CqvpMU6HX5A28I645+K72Q67vYAfK?= =?us-ascii?Q?mk/PqT+vSI0YCgjpAO7l3P02/9baCSBeMS+TfxHMLPcjjoyK/qAn94eCO4lM?= =?us-ascii?Q?nc7OTIX4qeIf8YEqQVfCBAfpvKEsXEUUSl+hagKKo32h84jH6GtQLIZbC0FF?= =?us-ascii?Q?fkFozKnbLNBMBCz+1iXw69+Ormq5qTZR9P5zycI+8UuNVG5gbuDIat7f/R5F?= =?us-ascii?Q?gXgYwnQGl+atAJVnf+eWm1ZsPvC+auvtYj35TVgY6N5gQsjjjm3egwloEDS9?= =?us-ascii?Q?twBT9T1HJK5RvNwWYFrbg5hD2B3S55Fy4oi9OHMKpu2SRVjqLxFNA8BGY/EW?= =?us-ascii?Q?nOJmpYPDgrx2cjFFj8HOh1tDrPjM+m2YjvjjKoIENvhLybh92U8MmATvjc+Y?= =?us-ascii?Q?4b7ouRC/SiBYQli+Vttbn4uaCqc2Je4sNKfV+LkUn/CPJU6KB7wVDAOjOayg?= =?us-ascii?Q?LACC5OMV/77YYlMK5vCfTCzHrliI8XSkZZ/gSfP0tkK6UBb4fB0+sIWQMV5+?= =?us-ascii?Q?VS6wHDFWauKFc4ZLV1vTqIUQR3mtB6xBWk860/mgCCOxoSWo8hzXH36U5IuW?= =?us-ascii?Q?ENUOzxeakiCJ9Y6Aew58DKWJYnl7t8C0VYSk+FevHe7mxCv/obWFI1xlgnhw?= =?us-ascii?Q?+fbLbN9U1JDaDUNas5rpC+Pnos6dSV3qMfaJiqNtvDiN8WtizLQJg4QVU6bG?= =?us-ascii?Q?MzKkqpWKheMsEzVVAmIJm52A6FLhVmM+Tl/6PKbJTNG/gH9xiBnyID1R3BG1?= =?us-ascii?Q?1OTLqX8rIDu156F9zILzqYCeHYIxIxSJIBNM7mywx+mh1mu543AJJ5dxlFxA?= =?us-ascii?Q?c6I/bRtFpObOtZJUZKC/HcFcZluKXDAwCBBvHavPZfl29zLIGU/iIMLUHwuX?= =?us-ascii?Q?ByTK/jg/FP4EAfgFPhrseH3gSSBCv0DvUMjgG3Def03Av3YInqpawUxLJHQd?= =?us-ascii?Q?PXfXFQRt74oZIGmHpoC8NRps6Fu3mwaxhSciOgT/rQ7Z6j5ISiHwH1bG+/Gf?= =?us-ascii?Q?oNXRovXkCwNYqKI7iBa3X8qbNLyHAZ1Idy1VOQxgZGCEQzUl3RbYq4VkKr9U?= =?us-ascii?Q?tm9FvHpgyLOlKPkBBkYBNTIkyGsRAFiQuzOgLYy3wjHFeOwel06TiVaj556d?= =?us-ascii?Q?tfYWN9hhjHgL9znx/RAFqnsS9xIYCQNq9UVjz/NypY2X7fD/4ts1uid/bfSS?= =?us-ascii?Q?V27Gnm6Hctw=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)(7416014)(376014)(366016)(1800799024);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?yqhP8yR8PqmA4aux/X01OjWfodp62Y6vpDl4qL3Bd16y/w5Vv2GW6E1F5BY3?= =?us-ascii?Q?JL0IQro/aENO+bD13h78Cd2Tnu4ll4AWQ9h1joxvMlILKjcNLCo6FtpAhWJ4?= =?us-ascii?Q?XqnSS3cSUEGbGyqbfbbA82YgrrABiA/fhKwpUiVnyvdsee9LLg3dbaejbYGC?= =?us-ascii?Q?FGq1R/vYmwORamFrEq/mBkq5JreLhZ0jR17DsB3RWwaHojlxgkQqy0Cu6Qxa?= =?us-ascii?Q?OSkf16BMFDxhH1fJ9iByqInbtBW6fHY3DELhQ/tLYKXNhohq50UO5khofd1E?= =?us-ascii?Q?XJscOzhW8Qev2P997vqJDFjDL/j1drfrK2zTTexf1bSp2vQT8XrwgE+z7Lva?= =?us-ascii?Q?sSoVNith5vA3kVxrxRtjd1YH2OeIKS2wi8w6TV2bVw+QO8u2/TcWdVD+EQOg?= =?us-ascii?Q?3Vd1PPWMp3iLyyfw3P1dTz9VdovLV44JXKl/+7VW3b6Wm36SLoNV9ow54E8O?= =?us-ascii?Q?v18ElylShh65qCAnPcbo0BkI3jOYzVBz2+pLNFD2QRfSwuXWIq6PopNdgi82?= =?us-ascii?Q?D+DUeTZmNhydIVm9rYMtV7PNlJ9oe2ZNVhuNBI/mxFz10VU9ratSldDBLHaG?= =?us-ascii?Q?53nSWf5oM+t+GCe2/g/2yfcrNAN+ImFgvqVMnQHiOY4KCaLeK/loNcyTgPgo?= =?us-ascii?Q?acrXZJgwFl6jq6OeXiamr4ZS2YIiyyC9DJMb+1zm356EFqxGYeGaJHl6/0NW?= =?us-ascii?Q?rsvw0iwK3v4NxOZwMNjmHo3hRWqaEVYGb3H0zL+IkYSJUzNUF115sH6/l+2G?= =?us-ascii?Q?arSlymkicpi8voYHFXdBImsCgNKKKmWOX3jVNaMmaPcOGyMdds63RQ7bvScz?= =?us-ascii?Q?+vDAT1+j+cZlTyqp5aUNpHrqGGofV6X+tACRl6BKoC+OcsRxcb1iW0ZdOWHL?= =?us-ascii?Q?EdGBtm9I/dtmOtRcAEwhJY5C6+EaQqKDs9izF0AYzJZKyo/4JkCbzXLQjrnP?= =?us-ascii?Q?Upwe+VD88iCVyXbFrY64WR4c4/tQi3TWQg4qu6oMdG46oxzNW2mmIVFmDnUM?= =?us-ascii?Q?40c4Z4CZXxVathQbEmTFPE6uKkLtMOm16szz8CmmZXP0vpXIuHuuGX0IxM02?= =?us-ascii?Q?RHmgjIavhkblAeZq429uWk0e0Qgyo4JDFbGys8/LuRrBcRYCBBf/QFUpc9tX?= =?us-ascii?Q?BWPUtg+2LliU3Tg98PF4YgA3qctuVw2xO5ocIa7qWegGACsiKblgzzCO3S9e?= =?us-ascii?Q?yP9J9NRdUOy1uzrumYtxYlhCz69UxS8OOVJypK14dzW37JZDB/9iNeoKUTEC?= =?us-ascii?Q?EySFDJZI5xnJd1i8tu30kizE6u3uleLnb8kooRVPK2UP2B6bIPA7z/Oks4TA?= =?us-ascii?Q?CJfR5CHNduDrYbYPjd51i7YxEtjzM9B/elFRMXFs0FBn85SzQtIVIBvCJccz?= =?us-ascii?Q?p5gycAKV4wmOyYxWaHssKtlQqDCb58nKHJjzPxdyaMdjfE2H8IsJ1kkpZe3H?= =?us-ascii?Q?Gxajs8Bc1tlyMp8gOhWPPhFJdtWhYXE4+zaiKg6aWSZdYGmBzmymOZgY2gnj?= =?us-ascii?Q?Cfi86t9rbJU0h1GLskQ+hfse4iHEqgFoxXyLHdMsTmdZF4/Ks52cp1s4yJBY?= =?us-ascii?Q?TwWASSwsuvD+JkfApumEgrfrfxWH07b71TNcmHBjLz3VErQQicbwM5QlmDcV?= =?us-ascii?Q?Gg=3D=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: 9fB79gCNss0LgTnpoY4VonqheUe4oN5TpxzFbpfYfQ6QhWkv9EzQb5iznzR3PmTkIe5dxh/sVOgUmiPiQa8hP2PPY84d20NMh3zv6KZo3a+PIUNZK4vg0U6S8+5sgbOa7wKWkhpecHoNEbFLRHko39+lW29Ro6BV8Ww88lDCF0BMVrOmDJyeGDZVsb+NWMIres3eUeIrKHVfXNVP3swVnKSr6qIw8n4FcSe1qrwWmaluhuOBWmjTMzxfVRyXU+OY042G1CrDFK8nTd2Z95AulkIYx/l1RblTC8QYdP53R3v4+gQ/RVsk4vutDN84l8IGzz+gojnutmO19jSNtn7op3yMYs/Y/ZGGSeiTbHdBJeWYmQEBGPHgb1yPdSlg1AT/CIOdhkhoBot5zRp2PozKGMYRaN4sc2QnVt+sEh72ltFx9Ocj+bRacZPpDXqdSoPg3Iz8PwAQL9LgcXxaW0eakDymNZLPsuUrDpoAjcugJ9dllhzTl6OhtFgEn/z3lWYFWmJijcWNgVg1CdMzCDAe/XWuPqy/WW1aaCk7MrwETxvof8WRouymNMXtJkO0/tFH0qV+IsD4r6Yufry3Ljfksxld7DbJF3yMjmx3dX0rVZE= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 3722046b-85df-4245-87e5-08ddbd172125 X-MS-Exchange-CrossTenant-AuthSource: DM4PR10MB8218.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Jul 2025 05:28:39.6494 (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: SsOgJk/8sUg9qbMkQfg3Ags6xA1X99t2soq5MO95DxUIwXEaU0CcloowTmH9VJCjWirS7jNixlkZ8E2B7QVJSurZYL4MAHbC5/1cuoF4EbQ= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM3PPF00080FB4B X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1099,Hydra:6.1.7,FMLib:17.12.80.40 definitions=2025-07-04_07,2025-07-06_01,2025-03-28_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 spamscore=0 phishscore=0 bulkscore=0 malwarescore=0 mlxscore=0 mlxlogscore=999 adultscore=0 suspectscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2505160000 definitions=main-2507070030 X-Proofpoint-ORIG-GUID: IUUpRFMtEI63gqbXj4uyKRducYf-NaYa X-Proofpoint-GUID: IUUpRFMtEI63gqbXj4uyKRducYf-NaYa X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwNzA3MDAyOSBTYWx0ZWRfX4fFZ87GEruoo DobIEAtIseDXCzosyKnDAJ+LRVFOrq5RgcP06Tq9FW3+WM46S7QD66xLxZZ/gUM9fJzmwLE7nfh A7AZ8GsqbYcfOEywiDrtU3XPmI341FVC38XgcGbQJB/dmLD28bk6pavcMp2ZKKgFk/5jCM5qimo 3XBCT2oLECa9nrpdgQf+4Znu+MJDufvoNp3MrlVjvZfD4oJ53Ulu6wJ4YdIoV32GkkKzjMU7Qa/ lScd34TX5ZLjlZFn+n9xbc9F7UbjJ5fXFNQCF0XTRFfLYponWr22vIXOuXEe1xTjIx0UKxW/YHF ZGaENb2Wa4EJwCsJDMREPykXh3RCC/fDu5uWGwoh3OMzJznddM9WR90nbYWEjz5PoVATHqLezOz FEir3kEZlWwdDPBWU2OHsf6UWatmhShAX4kOD3m84OVYAutrNmQS8w9sJB8LlA3kLyGo8hob X-Authority-Analysis: v=2.4 cv=UpRjN/wB c=1 sm=1 tr=0 ts=686b5b1a 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=oe0nGBzXn9sRT8uPAZ0A:9 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.0 From nobody Tue Oct 7 19:50:49 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 7B2E126E6F2; Mon, 7 Jul 2025 05:29:31 +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=1751866173; cv=fail; b=su+ps8ouYfiwF/4lmOdt3fF+uUeeSE7oCMluHAf6TdUBZj4MPpJQTZ3G0csYEP5EJcy/yFHF3hCRJJxHQTalC6CcmOS5ifVc7gPR3iGJ140HuBTn0GnMO4NjT+t2F+uHxAJcJQE7lnlVD3pbKKyHOCUawzJ6be4+5BCqfaW+1wg= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1751866173; c=relaxed/simple; bh=rM+gNUbucVSAaJXX0PQT8joEW4YYR8UyZdx09ocqJV4=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=OaoHBVsQiecd/1Tq/QKU6u5Oa/SyFRpllwqkE7Ejo6AIqNyeYapV0nzOwfGIGSh6uMKloCcecpl2kZjZj1CB+vsaaAtJC65y/jfCCv+TGM9nPUKwsQU3g2cc6flZlvezKpyMf/XFjNdmoO8MoXpuFSFTEdEVVx6MSDBmzHAlfB8= 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=YBKbXLwb; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=uS2t3HWz; 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="YBKbXLwb"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="uS2t3HWz" Received: from pps.filterd (m0246627.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 566LZ3wF030637; Mon, 7 Jul 2025 05:28:58 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=mt/uNiezVl958yGt3Ra8dBDQv8TYGgz7gz5YY7QXtHg=; b= YBKbXLwbmTPyGasxxbbsfUD23v87mRH4skRHnRXVDGKnzNMtLVBUAV8ibjHfQS3C +Kea+po3yyIyqPT8iTjyNFZ3hUqR4ls9Zg6qRWZZnMSJ80+H4ei5p4kKuMg5oOAc CmZWouM1wTMxjYazp8SeIybhDRVOBiGAud9V6MSoOMNZ2QaZH+HyBf4vscEz6n/E HEMOkIels0TOgqSqybXXbJXCNEvIPZcNFNX/w4pIho2CdaZ86mQqbcFjpsEIgyaQ gbLuuMZ5JNpBn3E7jqJ7bH3okgUMsed6FNNnynWsNhOalUL7UPwA3aNV+DhLVyMV ol1+usKhOpKeoIxlVzFNbg== Received: from phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta03.appoci.oracle.com [138.1.37.129]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 47ptn520dy-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 07 Jul 2025 05:28:58 +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 5672PVBn024285; Mon, 7 Jul 2025 05:28:57 GMT Received: from nam04-bn8-obe.outbound.protection.outlook.com (mail-bn8nam04on2065.outbound.protection.outlook.com [40.107.100.65]) by phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 47ptg82hd8-4 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 07 Jul 2025 05:28:57 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=kf4MskZLFu+iIdUuA639AzkRXLLW5mAPK8bJjp5/fPD0hQ2PO/pacFN3zjxRWtTjvHsjib3EBmANd/gQ1d9/1cwJZtiXvXbz2uDXkEt4yzeuJ2QyJDTvcJXmMpAdQSDc4qGfXGdcx5LKrofCbOIpKedhls+oEbCb2l4QVXk8xd+VnE/8PDOBuAnogzYqKd+5bi6FwarJhoU5pRzp6I1WlBZlQEK0ofirEDwbQ+3QdEfOxskfjUosQyNMZNI1GQOvbjvvkR9xat5G+OEJ3rYgyhaKYkrQMNMKs4HMhy6ywYUnrdYyFfpTYjJcZ0WXLfoXMZ0+rbw+71a2zKdmRgJXkg== 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=mt/uNiezVl958yGt3Ra8dBDQv8TYGgz7gz5YY7QXtHg=; b=zPeQ6Oe9D0cOp+HqmS7QECFB1WsIdToEEvT7rlJOOu3PgyTSLklzXVb4p6XZzTlKZI+hr4QTJy0dpOFQmmmfg54Q3WVLC9pywAD4NFHnCvlViC0gEFUSHogBo1OMc1PYoyuoXgBAewAa9FdkN4ZUfG45Mx/x/02HWpMrZYLS/RymZlqH+hYml/jqWLtT+b69us7w6egwISQoN5O+I5D00N5lUIRcf3DHo1VGU/C49glcPbf0VCjtoNu/cpb1gzGr/EvKD22UG1Y8iMPy1jBquYbyQZqVKhIpsbZpDzKeOFQIkyjzvyAyYgD06ML+iloGp9xDu84fbxQMBJjfwOYlvA== 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=mt/uNiezVl958yGt3Ra8dBDQv8TYGgz7gz5YY7QXtHg=; b=uS2t3HWzAlIWVMJTRPKXi5xlIRPAD5A7xySGxoSCmSyBa+YlhG8iA19caIqc0tYcbybdftLdReOtBxKFS76d09bx3XFVo/7WGhaXi45KV4KpzI66VPeOIgDGdmcav+LWuzIsKRuqwXaYmdDcSIpPEcg7PgVCc76ouUkGYjulMrs= Received: from DM4PR10MB8218.namprd10.prod.outlook.com (2603:10b6:8:1cc::16) by DM3PPF00080FB4B.namprd10.prod.outlook.com (2603:10b6:f:fc00::c04) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8901.23; Mon, 7 Jul 2025 05:28:41 +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.8901.024; Mon, 7 Jul 2025 05:28:41 +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-kselftest@vger.kernel.org Subject: [PATCH 04/10] mm/mremap: cleanup post-processing stage of mremap Date: Mon, 7 Jul 2025 06:27:47 +0100 Message-ID: X-Mailer: git-send-email 2.50.0 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: LO2P123CA0003.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:a6::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_|DM3PPF00080FB4B:EE_ X-MS-Office365-Filtering-Correlation-Id: da9beba5-00c7-467b-62e8-08ddbd17228d X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|7416014|376014|366016|1800799024; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?WCgONxCenL1nrU7yUc6XSuBUeIhNU8A1kStP/akQMqwF51tPy2wHU6SIdQUJ?= =?us-ascii?Q?/x/8dNQiY6upfSPmAps08ne1yZcQ5HGj8CYHouqHT2F/3o+fA5ubhJsYYKUz?= =?us-ascii?Q?QcuznCDw1fc9IPmpojGL+k/3VuYfc4hfC7H45l1wk6trc1pTQCHu6+5hCaPH?= =?us-ascii?Q?hpkrvi/PngWpkwZ3nJ/C3rj5HoGckGO2yMB6kIDfY/HwoNHrPkKOvTEJKMVJ?= =?us-ascii?Q?8PDkY9stG2diMEgyTI10AtQdD6jcglS0DV8qSHAUTKS8MG8qqKNmfNKJml4r?= =?us-ascii?Q?If9j/6Sd0ypvtgQZF7fWvtNZP+1r4AJpID3KHuBZIwcM+0J3N5t7S0kY568w?= =?us-ascii?Q?JFxZZPhvgirwDLEM8CBrjOJwRqLOmVugd/Hgb3371JWC8BNMKkgvAo3FZPcx?= =?us-ascii?Q?/BitNRsOHZeekrxyDiEk2yzI0NFZjq68Ktj3tLuCuUIkykHtScVN88Z17CQt?= =?us-ascii?Q?UV/RdhsypCgVdGK9NB5wgKQrrD59tGw2u7tGuVi11jjbhwN1RkWR9C6WfSIE?= =?us-ascii?Q?C3STHvXscOUEPVSVmR06/S2zBbaTVtfVJ2SvuOQW1riVQRu9XaAfOF+I4sCA?= =?us-ascii?Q?krcgRnI/xkmUb6RQz1xbbYRS77o27okY/Bxyj7jH4DR9oVAEjIl3OzrRN8hs?= =?us-ascii?Q?jr0AnYBDRIW+BCkY7dBSaHTr65IK5hziZfDHeFTV/6M6ex0bhoeYJX7UIfN+?= =?us-ascii?Q?vZZJZnIy+qAFyvY1GONVuNf6aOy0Vg3zmaKbGYjjRKMCFccRvZHa3ySomyvf?= =?us-ascii?Q?UYvz0AL9Y3ux1mi5qPoqqJgzY6Wwlt/g31/cQCBttoM5mjS5PrIIFY/S00Gi?= =?us-ascii?Q?Xdb7+sR63cA0sLPgy6SZREBXTy7yGs3KI+NuzFAX16eLZuS7swdOtyiqYvF6?= =?us-ascii?Q?U5/fyYYW4DzeYf3YaSX+vlgmTjQADLt2Xz+w8ErxQvxty14DJyhJwtbZURsf?= =?us-ascii?Q?VkeXeNSf06wnb8oKwfBgmr6qslSPF1oe5UuxandchZpEg7HI2yyzO4Q+OA2B?= =?us-ascii?Q?nEfvQyW2byLiJkR2jJ2q5xi0pWIPz6tDEYnPiwfzfA/W3fSAdaioLgRgc+Ol?= =?us-ascii?Q?smSwoJvXlhtXU1ulE5OnEgkyEZvwLIIDreCAfBiOmtPC8AtICXOBHV/ubZRb?= =?us-ascii?Q?rXIQgu9nIngBxcnpoWByWoPs2sSlHuMpQcr7kFMPKl5KJQ+jwllDWhSUkb3N?= =?us-ascii?Q?oOeQwkKyBzxn1cqwmyzHYspWJxj06+SZ9+/iuwn7HuIzv+B5ch8uwdaGqfse?= =?us-ascii?Q?sWEt6L8xcgJXuC0nVrCgTWco+bRef1gQRKfC2vJYK3V4r908cFN5nRZHBCsN?= =?us-ascii?Q?BZ7uV1NI8DeAB1vaqUjm5Tho5197w6EXb9RgnhAD7kvX/8W5mI4NHRa7i3Ae?= =?us-ascii?Q?SrYBnke0PrwtDr1zg78/PEuz33+GdevBX2rYceTvXOeTqg5oLIzKko+ke5V5?= =?us-ascii?Q?DzocEPemKeI=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)(7416014)(376014)(366016)(1800799024);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?Cn8F3YSOK4ycYCKL873C0LdZjJg+KCeFc98MMAQDOpUSEAfiBaSU7nsjP4Pb?= =?us-ascii?Q?QfNvunNBvKwDfCoXuPhvAd8E/9WHG7+X9Zvc6pTuquc7HoLCrynlr+3eOW2k?= =?us-ascii?Q?eJzlr9LGu/XfZM2xHUwyYhFqR+huh45pmbCrlo0TuGBx6zxxei/cq9bGbdIT?= =?us-ascii?Q?E1kUmvihNHhjQ1eZDf6/sJkBb09CJcqDpXkydYcwHSy1eDME/L/0IhecY/f+?= =?us-ascii?Q?kcQVo047l5qscdmDHfOfDFrPVlLilozv5wSXMdMarpvaUbt1BttUvNKiE7x6?= =?us-ascii?Q?QgZsXjUNRVbjGsXu8hanvwSFw1+npL0tLiVI55WocHbKeGGK3FGlnthk1lQq?= =?us-ascii?Q?579jdN9MvW6Rh9tBj79t9yy+Ed0XGL2upXaJmF5y8+AMUXmoWSlx5CTo6E+h?= =?us-ascii?Q?QtLFcWRSIQAN2Sa+b12gjb3qNuW7bvpSW3Uc/r6TDevcNygm4gSo5YD64q++?= =?us-ascii?Q?PWZ8EPLIftZJ32QR1m/18hN4M/A13ZFYUPYDO9CSBJlbmHfLAYkTcROks5JY?= =?us-ascii?Q?uSgUNZr+cN5ldU0VWUXZXPjKze06pbppGkM19AgKQaB4s4fGKRtxoViYA5/X?= =?us-ascii?Q?qpmtGQqM+fpXH8Agb+VTzXZUef9rNP1eGvw47g1smW5ep5oJC2jRgR8WvKzI?= =?us-ascii?Q?/sN9TXzkx8rzxPfVDTitqf95DAyrQS4LnAkvecGPSqaS+dUSkEp98qE14p2N?= =?us-ascii?Q?HDHV9lYWbw8tunpo7YzVQDVfrGAakr93NiqjnNY9kwadOh+d+J12bAwpuupx?= =?us-ascii?Q?6yIg5y1B7Byni5H7esc/QaTO+84SRRqCbwoFGO5ZsTLIvRwktmDw74QHUVvu?= =?us-ascii?Q?omf/D1k6Wo/l/YMUYx7P6Acl9S8f/8t8xaUpOgNOxkE3shZB8COUuK75Jkll?= =?us-ascii?Q?1nbGedONLQKC+NRxBKya3BUsNO8EAcqvzZIQlXSkMWe9cVOZCZiIZ5klwslB?= =?us-ascii?Q?gQyF0MIlOZabB71AILBtAPkET46Vn2YpawKC6D0ukef1Dp93riws2/5pMA74?= =?us-ascii?Q?j8CFHmjgFchdn7/uDUIBJcAn3h1W8m9wuJ8obAP1Rqdr5vW2MapuJ88V7IoI?= =?us-ascii?Q?QNvgRZmc7DaEl9rdGxBWG0WulD2olycKU/4BwniZDVVYq8Ns6vgVCxN6i3TP?= =?us-ascii?Q?KjuPlZ/Pn7NvfnBZZ86JDC/Sq8Zt7/8UIpNNzrKAwBdtUZ+75CoPRptreWPK?= =?us-ascii?Q?GpXcgY0aABGJBcRcdc2aRcvRG0RCrFPU3Ki3yIeJ4o46aS+T2pkPF55qFejd?= =?us-ascii?Q?B456SPz+jFLnuVKKx7A9kGUhOlxAQmtYu6pnYTgraP8k909vqbaUQaWOvQJq?= =?us-ascii?Q?e6QLd5ho4RDov1Bx3kFDt+NKVeBkKNaE9Moz1vvvu5Vrn8MIfx68nzVK9xLQ?= =?us-ascii?Q?k+a1tKd4Rcln+KzBGFgF8J6jOSrQ7D5FJx4JE+SJ0/eo5i1OlZhXLN7OoEAl?= =?us-ascii?Q?ET9++8qOKlaw0CeYRGUO2dimT7A456BSF33uRWesFNjyxsi8iQr3UnIXI7eq?= =?us-ascii?Q?47znsSx4DiI/VWlm51QfOphmQs8JILLAMJ3tm0zeQLqm81sGB6fspjKti4cn?= =?us-ascii?Q?ITijoAymCN9jlJti9gs3IjgmCfWyTdIY6eVxWlzayHlWAEU7RprQEz9xlf/S?= =?us-ascii?Q?iw=3D=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: ZHB6a0Mrzo2/c0x3SRBO6YofDSIi5PurNd/B61SSsS/a/W5LXwPabHMIBKKUo/cQ8MvoxguUdG6p4q7J5Q+TS5Edg1hhtK+7RW50O1hMlcNQLiR2vwUJ4gMstN5cfAABaOyVBPea7XBNOJsWVDOF6RtCNkByD2c99rkdCtS5+KKHu9SfxH1W4bbwJkhvZTjHUQw7msTrRaeDta/XX53fOV49v+8A4/Xs+X683IBaD08isIPfz/9ripKOtFh88yksLMPv23ACAKbfsU2Aw0or86vbhLwHOP0yHVb9t05/KLGFg7bow4WgvugaLe1SJMDl2syNB4iHpXI+freB/BzVw4kS4M8wzaE5nGMUbn4Jk9X6ftrtKMcFn2n1yoikQm+88X02xMU/VktctnlYRaXw64ep+QedGOSEXM+xnfzdAwhfHpKCpy9cOzGyK6s3vjf6QaFkviCxM9EOP2UESfKB1gVGD01M8J20YCLnuZdIJmhUnP0i1ONL+tCnhbBOFXItfjL+SqhSmgFbr/RvyNduPvT/ZBWl75JQDIlGVThvw9v762YNk4ENnnsfCVg+/T1u2cJxtgc1n+9PBnUlqV03ndpMrjG+IC5xbxL+mENCvKQ= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: da9beba5-00c7-467b-62e8-08ddbd17228d X-MS-Exchange-CrossTenant-AuthSource: DM4PR10MB8218.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Jul 2025 05:28:41.8580 (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: EqsAFklCOfdh1PAP7YajU9KdLteIKQ00572Xvb29+B29BvK+JdW9v30AQos4vD64aJsXhJjb5yYitv/AX8dVaN9Z+FcrJGTgsRmWA330cj0= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM3PPF00080FB4B X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1099,Hydra:6.1.7,FMLib:17.12.80.40 definitions=2025-07-04_07,2025-07-06_01,2025-03-28_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 spamscore=0 phishscore=0 bulkscore=0 malwarescore=0 mlxscore=0 mlxlogscore=999 adultscore=0 suspectscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2505160000 definitions=main-2507070030 X-Proofpoint-ORIG-GUID: 3VK0uVGLmKJiGwOSA0AE4DrVkC8I9hQz X-Proofpoint-GUID: 3VK0uVGLmKJiGwOSA0AE4DrVkC8I9hQz X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwNzA3MDAyOSBTYWx0ZWRfX+yMX50qOt1th 2nUOe/CgIU+8zbfcmt4nKTPxJzUxHgJLAfTJoXG9NUMsIkqqDZGusOCl2sIQYR7zGH8F4VHaxEx c5OXQIHXKD/S9DZUvcBrAJItVH2NsyBTureZ04ZsYEJmFRXosBU9/ELR2Do+V+p4NrfSvtmBRD3 /5rE2Wm4RHWBCdEpBFjKKdOTCfSxwgb8Kclb56WVlzEKC1eRwzQrjxfKZTgRFFi2Wsj3An8hZ29 K4p65/IJqy5a4MDo0XEdJUjC6XOv2ODtBKnqOSnOFeBJv/douvXvPchn5JdlzzpK+fIC9JWucH9 eDoRi+FCaGdHzKisHHvc/9bt+WUP+pbCIB/Xbuf3uwN+aZa2GAa+oqA3fhwH96GjN71pt5Kfx7H gBrU9TQGezvFmDwIHwAywPrDuso+pU4bbDLBBam8Bj+uBj3bnfQQQ0P5+JGyloviQZYeMQdE X-Authority-Analysis: v=2.4 cv=UpRjN/wB c=1 sm=1 tr=0 ts=686b5b1a 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 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..660bdb75e2f9 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 ret) +{ + struct mm_struct *mm =3D current->mm; + + userfaultfd_unmap_complete(mm, vrm->uf_unmap_early); + mremap_userfaultfd_complete(vrm->uf, vrm->addr, ret, 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.0 From nobody Tue Oct 7 19:50:49 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 67011273810; Mon, 7 Jul 2025 05:30:14 +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=1751866216; cv=fail; b=q1O9uLjmu2GhODs56CWSs7n/H2srGaPBtdeEmWMTjjDaG/E/rat9b9ZVUNVGFlHkubTaKq7khwHweGEjI1RuVGQ/w7kDBqc/wwmBMkSNfQ7V7YYOgRFe1M74Y5OpLPyrGen4UTr7VzYmIvKiWdNJVRYJ+/1H6zrTxj+/q1pDV7U= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1751866216; c=relaxed/simple; bh=RHvUMBOpfkAiTEo9rJC5+Hyw84tnjgYsZ0MbkymKtY8=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=spQ7THbUzlLJD6hq6zlCSwOefyRg8aCWu8gR6VMYz6hWuQQOKQef9+LxHE2u5b78S3F4ToSuG4uHoP8lf7FZGk3Ac+EVO8DnJvRQTHX87+HMDo1AEYvn0+nbt9W2ee59Wiff7paYH7uJA1BuK4uRR+qe2EsoU0By2WZfmPxjLTE= 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=N5O0zo45; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=yUjSKL9n; 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="N5O0zo45"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="yUjSKL9n" Received: from pps.filterd (m0246629.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 566MBqHD009176; Mon, 7 Jul 2025 05:28:59 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=cc :content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s= corp-2025-04-25; bh=/2zyDLu0luwfv9e9dfoN8OmmHjvwoPSKdMB2anes4mo=; b= N5O0zo45Lu4NTitZMm1D+71c2rZuXZmtBwD8wN0xSZ8Vc4MonV9mtTI/ORCsChY3 wdVxYaN1cHtEbWlB5L8KZ5v04ccqoFzDHAIrUyeTXjcIV1NefH3Mp196NvRPLsyk I0Fl0OgsbvDLeHKeXrYyHTwBxk4Vr8sZRyeHI5rENucai3rKkrcEh5wA0shO/aQY uiLP5cX5l9b04L9Rj5NB3L3dmcIEPTLZcy6LZUPw6HAsjx+U/YUN/6O2M/pyWBli toOmsO4fWrYzkVNzk6+JiYvjfxCE14xlcKHjiC5YoLkAlFkmQcbm6yZPMtOfCk7E jJ655ohfJdxHq3LjMTUceg== Received: from phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta03.appoci.oracle.com [138.1.37.129]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 47puxjhy9k-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 07 Jul 2025 05:28:59 +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 5672PVBo024285; Mon, 7 Jul 2025 05:28:58 GMT Received: from nam04-bn8-obe.outbound.protection.outlook.com (mail-bn8nam04on2065.outbound.protection.outlook.com [40.107.100.65]) by phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 47ptg82hd8-5 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 07 Jul 2025 05:28:58 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=NY/lMZJekE20ttU0OWCpnAUVOSKQLXNej9B9OAy9ANDVeMJAw6WeGgfcY7rV+DSg3kPT2heqJmCz1SASBM3uJsOz2/9ZB4Q2QPJw7Q6X+lmHU67zGUTI/Aie58xIGkx2qV0+ZiMHB5gjpNBJ8998qZC9g5DKC3aVYSUuvVS8y0p1G/+GskEPNAmtT0Wm3Jx5I8mLCvt/g1K5kBTldf10Rvjh4PyjrN+2XqW3CD+C0Ldczsj3nmaZGDeBWky4eAiJHmBD7hnOUtEF1O+tdoqwM4tyrYX67Od5oTA0TajHHQMbopRKnhqg1owG2PumA+L1PYdHEdKuhwoqLvVe43i4cw== 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=/2zyDLu0luwfv9e9dfoN8OmmHjvwoPSKdMB2anes4mo=; b=IVcyWwZF2yM9Iy577ATK7XO2tsU73k+Q+bfDFI4NavEr9T7I9fmTK4rvJiWpPHP3Yvu9WKlqiInT3A2prlCVjjo67GX9naoD32FJpRrCUrWDeYDYOwia7Uy+TiW/K0YmDiKocSJYN8+7oaWU4nN21aHz09l2al40YxHoHRoLJP6/pBv/wOaudklE/irW0icC/5/Mxeh8ex0gZDPkBIwKhd3ZQ2BAMUc5oVSmP7RObH2lf5a+YdZnxrKHuX3K7bnl0rZTTivASxLw+r/ThOt+thhmN1xf5Cd+7z1jwZz9zxYEJxItoFfYXGq43sRz9QvqlTdhPCXZUWiKBMrMwHGCDg== 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=/2zyDLu0luwfv9e9dfoN8OmmHjvwoPSKdMB2anes4mo=; b=yUjSKL9nD+IL+Bdy+pf2Crz5hK1ETqR8o6gHgLNoroLuGqrGj5k5m+D7Rqfc/QRqqEL9Ox2LjznXqYMduLcrN+u/88fgxBue0ztKdftixO6LmIaieISgQ5ktSU5iMSpqLG62Buv2iCqb4Vb1sVGZcJKDHUvXBnsV2BpqGmBoVXE= Received: from DM4PR10MB8218.namprd10.prod.outlook.com (2603:10b6:8:1cc::16) by DM3PPF00080FB4B.namprd10.prod.outlook.com (2603:10b6:f:fc00::c04) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8901.23; Mon, 7 Jul 2025 05:28:44 +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.8901.024; Mon, 7 Jul 2025 05:28:44 +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-kselftest@vger.kernel.org Subject: [PATCH 05/10] mm/mremap: use an explicit uffd failure path for mremap Date: Mon, 7 Jul 2025 06:27:48 +0100 Message-ID: X-Mailer: git-send-email 2.50.0 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: LO4P123CA0496.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:1ab::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_|DM3PPF00080FB4B:EE_ X-MS-Office365-Filtering-Correlation-Id: 6e10ec18-5bd1-4694-d6da-08ddbd1723c8 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|7416014|376014|366016|1800799024; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?dKq3Ity2HyjVN50mngk1UF8fsgcjMBXzpnxf92qFV6sErVQg134+oXAjzWWK?= =?us-ascii?Q?aEGt/ep8gXAgA8Y7NjdR0UNPtHspcRFrUKkhbOeFgvHC8xrqLZywley78LH5?= =?us-ascii?Q?cWVUbUI0hQ7QrzWxmsJaeqSbCs/DryVuIeM8iQAdJenOyp5FoPzvvY8hWk3N?= =?us-ascii?Q?YCaarrXy4f8KVBut+44VXfe9pI4sS1uu7m7GK7J7fVNYfwnS5qEBpqU7XfTc?= =?us-ascii?Q?pZbRyZRk0AXzoM5B2LLwlS47IhxXEJR62JTz/b6EQt2bAmp5763OKA+DHQkK?= =?us-ascii?Q?wg1xNYm070L3oCM6aIsEh1f8CoxAeFHSsjVCac4tvsnB7qrUXIFZ1Fa4ZrAE?= =?us-ascii?Q?wOMuqlCxrhWrOpXHJowrdfoQ9GauxPJ8XAlhfv7VdznDVgJ0WN0PAufiUTRq?= =?us-ascii?Q?M62rS4QDObu6oRSiSyIS1yLPbIrhOWYbbTK+sLp4n4omPSuOD7nrBatxJiNt?= =?us-ascii?Q?CyjECCpP0/BcrEHkIHp3NXNYP47yxJp1GNVxf+wBlAcNDW9vIg2W+vRgpSzt?= =?us-ascii?Q?6sjUDhz0tRr+6uiDaAd/upVm9QCEJHHaP4HHNyOydpL8gkX/T8lxmk2DMaLh?= =?us-ascii?Q?tAIEyWqcQwR27nF+0idaYhet+IrYUDVgJ06BAOUzcxWVbDe8+jgH/t2/FPOF?= =?us-ascii?Q?hMrOTUvNHuHZCaFIv6BuLIe1Oof08bMokdY+2CFK0M+pQHFdPudjySjrVLRm?= =?us-ascii?Q?SdAvLDifDfUCixAapoZDlW39X5hb8D2FBggeD0XsOuATizuy+pE424kDJ0kO?= =?us-ascii?Q?pn5au4aN5ExfFNdJtrhV6+Nh1pMkqKueAU5DffuSNlzFvhv9MjdKbSdEntOD?= =?us-ascii?Q?oRsxe5PTSEqybzKv/s4Sq0bWIZ5o5sU2A8IxROkEYvLQ8nGQi+AKPRah0w7Z?= =?us-ascii?Q?k7Vrs8ylsv9r+H5B5z5RLubqDHsjqBtKof1f4kqB/X4e1NFwKWRyZzP7mXG0?= =?us-ascii?Q?F0H0UrCErFIPFyTeAUWW70Yy5c3Mpqgrt2enipM9G9RD4ILLXoWg+chlENEJ?= =?us-ascii?Q?239zx2X9xrAifKWrnNrhLcVdqaHYIo3QHs1/i4DAV97DqdoTACxiPNg/lsKo?= =?us-ascii?Q?3zg64j2TMyvaBZnqgeREGuV78LfFgKvWsNeIBtE3wZMCD5ZmQvadSSVj2RDL?= =?us-ascii?Q?espG+9gED758+TF3ZRuwZSD52WUHXmsCnlTuMFI0HPqV7t87Xuljhr/uEbMr?= =?us-ascii?Q?XCTgb7rh/nFTAOO5UpN3otkjQxZRRZX1iHZVmPXlpEEM0JwyBIMznVHsa2eu?= =?us-ascii?Q?nvieaFVbx58QDAEwMJR+IpxJ8T0bifQFQtd0mlLRYrmUoFKwFnoiOD4jGmBt?= =?us-ascii?Q?uRE9ovUHqoyk8fkMgFklAbtzhAkzVh+9RbiezcyFKdPd6Qw8feR0QFAIgehI?= =?us-ascii?Q?o/bjY5QnMRSm9MeYIxzp9RkblsgXsWp50kcezdwwQwggIUxtA2mL/grDCMP6?= =?us-ascii?Q?l3EyqQDlbNM=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)(7416014)(376014)(366016)(1800799024);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?1qvUW+wZCLv6sqjm6o7Mr6K3qR0jPQSyVCT0PExYq8iyN93680h+0IIMzRmU?= =?us-ascii?Q?vrVUdKrWm+42XS9CnHW50gt6cv9KvgUSz0tkmot4retwtDvFf3LgHYdCAB+l?= =?us-ascii?Q?BfCGyu8UaRhr+Kv7Zc8cPqnhw3XUt4njGMKKMe2vIymQSxwYQh1bO84hKthP?= =?us-ascii?Q?CR5WsyDHmHkf4yv96/HAAEmemOepgdWuhWCNS8Wpy1L1EiB2ZAj4kNnmCkwk?= =?us-ascii?Q?BhRVYd+oDYZYwArrrQkhrZcUMzBAhd///rbTtooN/iABymgSh8HpVPsvooVE?= =?us-ascii?Q?ycL1GCawlX5qT8nxiWN+s0IkBxSLwibbpe9OsL1lpEVXOLcgoUwAzSqy+GKN?= =?us-ascii?Q?6BTb1IqSqnQ5uXHFigq7FhSuk66hrwhHzBS/amYkmkMp7t8xx3HAq+xsy8vK?= =?us-ascii?Q?YatErHjOKDICeOJcNGCEy9YXbHM7T8O4jd8EMXptkOlPCM3/O0UJ1aO4MsSE?= =?us-ascii?Q?xrolSgszta5PX1oHljkJX3uWFnd4lQydMgsokPPtey1SlIbkYy2jBH6nozjM?= =?us-ascii?Q?BTLTU9ItUdKcshTB9B7+9Z202ZccdCpUnkosys4MeionBsXW8Sbbvcu9MSgV?= =?us-ascii?Q?GEAtpstzxj9OWWvim8UmI30bXe2vLeXGEDF4NuhtrNpVTGfCS9uCWN/2jcbL?= =?us-ascii?Q?9FINWduse+oqrrE8DuvvrnEuvLf7MUAGjbjJJEbp94xEhaeydpGIHPIYhrLc?= =?us-ascii?Q?PsMjBkpWEi4Zi+o3XwwHgr1BKNxqGc9t34qjB07XWzoLfi9WGviUNhEZHLqM?= =?us-ascii?Q?bv2Gayaom4BSYNw41NOW7JMN9agZd5LslrlpxawLRiXE4EawQbJIVSxyVa4g?= =?us-ascii?Q?atvppK2hV3G/eRfDTpP2TBAnTKvPVzb2LobiY6rSHD9htk41U6S6kKDmSyih?= =?us-ascii?Q?sdU9GyNSAhbj2L8Px1MgUJjjbd5qF+jh9Z5Y3SiQSur7A95NmcHYbnRr/384?= =?us-ascii?Q?K2wNfWh1RFPZ+emF6cO28IFjwtxTvniVYyV0Vn4xSfywraxINurgZf+T3PO7?= =?us-ascii?Q?xtmq1MoNHhI6pb8vSVN0eF2XHNtHod+mooaN4Y1I9V2E/uRbGy45olNLPiwj?= =?us-ascii?Q?W0FqdAClaaqOhEcu3iTwE8cR95HTCFZCNxRVPRCMw2H3sbkLAjvkGn4MkHVd?= =?us-ascii?Q?Z/WdAK0+ARKRNsMONwJ/QCJWRYGpb5ikwCbMMA1sByEYmq3TfdwrRGzpJtUM?= =?us-ascii?Q?mItDykTZh444cKJjMoKzs4xusEYd0MQ9w1HgZB118trk0SsM4kWXj/2FYrte?= =?us-ascii?Q?EMVUDFzjXTJkVIfAa4wlVzN0/+SRZJOqJxo8oUxpLDUtVVuV1L++LNo81Xxt?= =?us-ascii?Q?+5M/KpZI7A3Z44h/ESQ1wthKggjNStBfEp4cNU9BzNcr2ToRxmvQCVWl3WBY?= =?us-ascii?Q?PkxUE57kheBUoI6xXa9NLG5P1c9+T4H+fSQUaLP6Y9dBfeUoexxZ/zFhTRGC?= =?us-ascii?Q?nY3JMFWd6CYOzi4lldZuQul+INcUjmiLj5hqItSkgpFb88EDzAq/v+XwxrY1?= =?us-ascii?Q?hn1FLpkc2Y7coswVldShB/bGzt+NpusyHoU/9IWv7ag52mnoNSqAd/wmmJEU?= =?us-ascii?Q?kLuzzBLU5D7JQtLgDDlRDfsQNlYTPWNvrphmkl7JmhtaXXj7A8dp4ORBMejt?= =?us-ascii?Q?Rg=3D=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: OrjbLdOpSdPVFBJxsn1ssqzrq4WnrRVN7LtgeGF14KAffmHi4BmpBu85Offtgt4PBj5GtdR97Vf7q8OD/bbFJXV1UyyAehwOdvXP9mIavSTrl/owU2BCW9vKz2oZ0JXcKN4zRjecr4fMgjs7RKM2UGF2ZP9FD3XKlIHwSw2UQqMfrbaKvL13ldteUkZdu9b+i74wwCPt5R2TeoXkgZHnLXwAJPXFrmSnZtebm7TTX6AKzQA4+bHN3UAWUQ7aGOf8tbxG53r/JduO0IhgLhBgUAMqTXdG5Zv19aqotePi43bPRSN2+/u1BEDgBdQ7Ztwto+/w8HnQ6DlzRTWxv2eEgvJw6UMvNOcFTaVI8epqWVe2OoIhivtxC8cp0qrIf020vLSOselAxfJAPy6xAUj+pDbKVyN7+NXwroE8106VV7JXq+RrujoiwDl1oEqwx32R9KuLkrH1cLfjmqyMqedrYBcI5siJzJ4TG2chfaxYYdPqUGZkOVpUtEv0uTcszqiA05oxCGsEYX3OQyEbtukS5eCvibRfDtpxMh8f2bQQcpKj1HeFMNTel3usOZ5sA4JzcJyRAkr3ehtJIvIyWg0OmPPRc9ssMrnSpCxxijm2ovY= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 6e10ec18-5bd1-4694-d6da-08ddbd1723c8 X-MS-Exchange-CrossTenant-AuthSource: DM4PR10MB8218.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Jul 2025 05:28:43.9655 (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: TgN/T1k3fhVhbrImGUwjgKXRyuU2iMVEG023kInGxyO0TPWjW8hxFIZOcCBhJ2k3oun4rnUCNHpgqaEAOAf2sszQzruuPv2pHmSQDaRGrLU= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM3PPF00080FB4B X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1099,Hydra:6.1.7,FMLib:17.12.80.40 definitions=2025-07-04_07,2025-07-06_01,2025-03-28_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 spamscore=0 phishscore=0 bulkscore=0 malwarescore=0 mlxscore=0 mlxlogscore=999 adultscore=0 suspectscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2505160000 definitions=main-2507070030 X-Authority-Analysis: v=2.4 cv=Y7r4sgeN c=1 sm=1 tr=0 ts=686b5b1b 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=VISmejGXrN9RXs9aPs4A:9 X-Proofpoint-ORIG-GUID: 1y0HXIK5zK9wL2_m-r8pk7k_4R-vGwMR X-Proofpoint-GUID: 1y0HXIK5zK9wL2_m-r8pk7k_4R-vGwMR X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwNzA3MDAyOSBTYWx0ZWRfX36lAkLvbBjWS PusY+wyN993qMPinoofzcnm/RU1/YWZq+rB1N5nsBOcke+bsv0zKUB1yi3ta9jzjJWCDIYAwIBt uVkNpFyORQZGFT7JfPYq3jlk79JvhaQon8Sy3pmZzte+hRddmxuDEUFeCTBnPTGMsXEs3uGXOAk OZzePVLNN85yHY9W+ICUMuFg/u4JvzsG5pY/SEyg6F6y/ZBgjTZni309cOqXZfAenE5DEFD6Kwg MPDdeNKIlxO/cV9HORWEbGFLJEmwYett814UKJSe6MjDdDfTsLe0mbUtPmrEMhvpEe/xddcaOHc yM2Qnoli3lvD5WNZuNvbZyBhLEYVPxtN6T1X3vZaNZ4kOudu9SLZYJbgGtCSF3goZJtlWmo3vry I/BaEXoymQjjPwm6+4ns3+1yJGVazRasPcgMZUdJbBjQnPe9sehjgl9SOSD+Mofr6HBNVGS/ 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 | 1 + mm/mremap.c | 16 ++++++++++++---- 3 files changed, 23 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..6680a4de40b3 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, diff --git a/mm/mremap.c b/mm/mremap.c index 660bdb75e2f9..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 ret) +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, ret, 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.0 From nobody Tue Oct 7 19:50:49 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 9FA5A270ED5; Mon, 7 Jul 2025 05:30:11 +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=1751866213; cv=fail; b=cYAzpZChzdIGzUR8LNj+I9gC7RE0cLoXTRtyIkhTXqkOnBptO7ZoYekVZQd6u6uGoGjrszJYFWeJehwCVe69/rj8tUyrusMoRpoLGNjK96904yMYpymEFXSKkQzJ/5qJQU081hIgcFEhu4t6JF0uP1A41/uBR6nfRCWBzAp+gX0= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1751866213; c=relaxed/simple; bh=KR6ah+h1Deg+m8toAShWhW//tAiGYZykywWxrPftY5o=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=rA1rh/KuBO+LlU7wQm60fCoW6iqTPCZ/r6izZLHbwnYG+CjqgJ+PQPCPgKVsUP8z6Mxn6OafWQMXQjeQKB21Uosvgauysyr917sB2CEUTYIwDLmDjysp5Yj5Vw6LFgQxp0Ib+2lAdhba1A3VPko1dZHlwtA69HWmrddzJI4WwrU= 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=k0Gck6xF; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=tBeEyeza; 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="k0Gck6xF"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="tBeEyeza" 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 566LZ3MY021464; Mon, 7 Jul 2025 05:29:00 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=cc :content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s= corp-2025-04-25; bh=+e8BcbUhNG0d5PeCkSY4+5l1JXjD4biGqaRlpiD6vrk=; b= k0Gck6xFqivQkRK4jJE0qNH5JY1ymJp+hvGereSYUpaY6VWb41IsNbDOmM1RBawM yNCNv9fvxWOIF6xS5YvZpKmtld/ecEId9rKUKDIPgm/n1Kt29bfvDEJ7jW4USwe+ M9MxZfwbwL/Y+FR5gCYA/59ZdS/1Tx86EWb8yqJRmyFf6MDiD5ZgF/me01Sfjr8B mS2Lx3aJbK1rEnuWxxnLHuhUW82I5Ei7KyzNqpjNQI1Bt+C3R3UssuanGMMywPMo +A3670WMWKyXi+vAWyscXZwzHCzr+14oorAPBSUK0ea6UGsjvRc9SAoi9JYrczOj ioB5br+rPw30z0YbgsRV/g== Received: from phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta03.appoci.oracle.com [138.1.37.129]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 47ptyfj0vd-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 07 Jul 2025 05:28:59 +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 5672PVBp024285; Mon, 7 Jul 2025 05:28:59 GMT Received: from nam04-bn8-obe.outbound.protection.outlook.com (mail-bn8nam04on2065.outbound.protection.outlook.com [40.107.100.65]) by phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 47ptg82hd8-6 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 07 Jul 2025 05:28:59 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=pCMkV4vgSEG2BDDX463kM0lV0s9tkavFf6x7sv+GxXTi+vS1sNgQKeAX7f2+3Hgl8bZXVLEJb/+nn6HubsHfAJL1jMJzIGKWzRVYbhWtmkyOnUXujHGimtZun6+x8u2b7T5trTDTr7gL39hYIu5WkFkOdjMqROLpZxGSmXtCUktEdA466wSDZTGaagUnfWrLNbMEE13V+L2oMY1nLSrx4D4QP9BXVmocWcP6UA4Pa9+Ddg68x4k5JmEFzJHR6cuOJoe7YW02ZUoobve9JzNyyi/TUomAPJT+KQDD8YcNNk7oJrCcBO34BXyBL1wq88kfJARaYxwj9kkPy7iHucTagw== 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=+e8BcbUhNG0d5PeCkSY4+5l1JXjD4biGqaRlpiD6vrk=; b=e9hKrVMjEN+Rr8ZuvkOTYstMZsp4uUfTbAS9Mm0TgPIiKFnLGpOX4HxzkuWx+RO+UT5TUja1wL44lqY+3si5cF8Anu3HcPh0ZR18oYCyqeRYHPSCJe7tl65vH68Byw2aCTG/m1Uw3FmNdbq27SO70zlukU/vVvFM6D+t30ENoCloxHVTyxmSnzMD14nztxYOIMFc6STC72Rbz3ahqQK72w7YC/tqpxCkDqmvTzMKlFspbuuF4X2Bu+XgKFJROSYq7pwSLdguFszPkWrmWiRvPE6Qw+1IpH2drmWgDRM7N+JmBcrjGLijz7c/IY6XOnvveTDsH/0Uwnkq3mxlsvb33w== 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=+e8BcbUhNG0d5PeCkSY4+5l1JXjD4biGqaRlpiD6vrk=; b=tBeEyezaW2s188wUdPHkSzgQ/PJpBdZyP0G96GeG0a91jb+ItWsKsJfnChR34r+35liH6BDJSG2EeKFoPWld8tbzXCzPN6zuzrJw7sBKLmILwGppmHzJP6ngmK0PRYS/0PGKUMcHVFDX6oUIym293Dzl1WeeBcT2Udh+0S42P5Y= Received: from DM4PR10MB8218.namprd10.prod.outlook.com (2603:10b6:8:1cc::16) by DM3PPF00080FB4B.namprd10.prod.outlook.com (2603:10b6:f:fc00::c04) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8901.23; Mon, 7 Jul 2025 05:28:46 +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.8901.024; Mon, 7 Jul 2025 05:28:46 +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-kselftest@vger.kernel.org Subject: [PATCH 06/10] mm/mremap: check remap conditions earlier Date: Mon, 7 Jul 2025 06:27:49 +0100 Message-ID: <3a24bca518001fea3a5f2733c55cf727e566b438.1751865330.git.lorenzo.stoakes@oracle.com> X-Mailer: git-send-email 2.50.0 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: LO2P123CA0013.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:a6::25) 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_|DM3PPF00080FB4B:EE_ X-MS-Office365-Filtering-Correlation-Id: 2c4a7277-d91f-4385-faa8-08ddbd172523 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|7416014|376014|366016|1800799024; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?T+5Ex+IwttMBrFJMU5BsZzrtqB/A8wrpt/2yjJyTLTye5nckTXNEHECw/o8l?= =?us-ascii?Q?hUn0R0W19YDpeRg9y+W0qIF81AspkJAQpzjlBQGgKkM+O7ulgE3sLl3aRtQ4?= =?us-ascii?Q?TPb7JiJOLoq6iByDyDeHnbnJ42Le/Y/SQwfng8rt4xrFk3rfPI0Nnzzotr5W?= =?us-ascii?Q?hffyLL/81rXdG8nrIJgy8//rDLgKHxDnOeRvoqmXStTW0YU4R8VKvtgxGpAX?= =?us-ascii?Q?hOybKRvP5uQcu535i6oRHbcHOCkwtGcKT9BJCCwt7vU6zjSGHZ332OqIXBhK?= =?us-ascii?Q?sEQFWMgyCPFp3x4QUzQNEpIWnCCAr32M0JpZcAOYHE2n8KcTlkSJ0IhTOFR2?= =?us-ascii?Q?bIlaN/e1lZQh9Pl1ep9QWswPljWTwWXdM3TUqbqo3S2HD0f1UKp11jZyFFL1?= =?us-ascii?Q?wcUlzX/Gh6GqW46uVaBY3vMKVFQSQWJcm/NLk2R6aV+xH//PTVyqFaPlt9mF?= =?us-ascii?Q?ehHDqhs9i2mOvuMelbPa+W/mwojVGA4W1FRYgSuwhrLY4aQJJRXXZZiH6pAc?= =?us-ascii?Q?K/dIjuszxl96ec2n6Es4q2z6Ld5A5HllS5VgQHX8qRSfYohXs4/S30CZpWVs?= =?us-ascii?Q?R7CiENTtzoqHhGU6v4Mtl+HahnaT0uOvsFRTF5dsw4W7KaWBHwaaJBdtV4eO?= =?us-ascii?Q?++aokfAniU9e2Cax0yGh2eFYtBVwFPLwkE4N/+apzeaeQVQsBjuR1PkZ4kB7?= =?us-ascii?Q?tC7ycDWZ6dulbpYBG8Jr8GyAPPlbTFcTP2cOyA6ol0641dNzgHnTVkFabgza?= =?us-ascii?Q?oJLe535f2j7Trivrp3Hu3tleIl9Cw9Ic+GoT1VK/6WlIoV61W3CJAXVVhctP?= =?us-ascii?Q?2Npl+i2qF47q13CsmENGf+VqI2ZBTMtySeoVDgzZiI1wiphM+PBA6yvRyarz?= =?us-ascii?Q?UPZyS5s4i1+0DfGgqGxCtFuiVH7JvEpMGK2OyRHRe15mhuecXrOXNzgBGeMP?= =?us-ascii?Q?xl/qc1zVx6ld4rI0X2cEJ3R9e+86D8AS79fPnuGkIQKhMZiC2BQ8GBzglgYw?= =?us-ascii?Q?msJT/sYHFzQhVa1joNlkowPbQXFLRLJHIw+1QkzfbzU3GVI2tOGZNmq750r2?= =?us-ascii?Q?eS8REGo3+Y+Zxfsd99QesQOzCsJf2HSixvIaOVogtAZFIYHfs+1n+AXi7YQp?= =?us-ascii?Q?p6mXLmU6kecsgUC91fHBJje2Isj2KpLW+HK2tZZRTPqHNHxqIWdfKj1D+2jA?= =?us-ascii?Q?ZtP9zPLq4HsdvD+N6muC3hUk1c+M+wOusgIG3ldNvaEOXUKbDWKJAuzRp9Ma?= =?us-ascii?Q?xQnJiwwBr3Hf35mynT4X01mAoKeCX7rff8lld+Mo0xOOZ1/XDkA6MUmsRDU+?= =?us-ascii?Q?Pgt29yKeCI/YwANVJUXXp/3G9m1kA2jO0UCfIXCDfXWTvYS0iCpwC30HZ2qv?= =?us-ascii?Q?lucTm3EojhTdGbWLa7P61RKPiYXvDroL+OmXfASyLpaol23Tjw=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)(7416014)(376014)(366016)(1800799024);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?3qF1M6BIR/waLOJYMozNSwKhS20cnt+c7qsn3eCma/RfaCUDmXJCkpKYYfJL?= =?us-ascii?Q?/+qxdkxjdKJjiE556ozPGh+L2yOgbwn9PA/A/Bi59zDIrqH6iihdESVxpeBh?= =?us-ascii?Q?1Jio9/PnTge1oJAvQXgPb58unkNvlLWRfsZQKpj9jtIeULMPgf4bvymsUvIj?= =?us-ascii?Q?PIOWCEP4JJ+pmSTxDUfWQgcJyYpHPMM/GCBWNaR/yXskVcCA+T8wnSrHYmf2?= =?us-ascii?Q?ehGoq3ugKhggapD9/xTVkQRgLqNemeXs7gCvl7ju1fuaFHiY192qot0dLfJj?= =?us-ascii?Q?a2ZJSx2V9j4O4LcL+le0YK5PsPAtEobDmD5Kr1GAueD+hADeKDSTlYElT6Ko?= =?us-ascii?Q?0pxUXGUgTEsnMw8ESU7TyExKBpY6y6a3tYMRd/kiPRjEGmdFNd+eyibh2QN7?= =?us-ascii?Q?6bjgRiXa5gcgs6LVCzQ2wPTGD39iJdG6qswqEdOt9prRz24/uRBjS6vBHLJ2?= =?us-ascii?Q?YeqlH/CVmOB5MT8Z/BGbtnfqI9si7E4+/eYOMZlTyKqw6ywsJ4aTqNYdhERD?= =?us-ascii?Q?mocQCOrJrlEgyZacYe2g9r4P1cV/VqVjNELh73BzubedKaF8rTVRKnlyu1F5?= =?us-ascii?Q?3jUQkN3JamsQmN+wlH8fP0A/yoagjnuIEh2s9eHakk8Kjas0TmReS+C34tIA?= =?us-ascii?Q?WVr+x8fT3IvwVEB46iMHzqV7qDckOtaOicIQx4tl+uOP1g1ByGX18mxrXgeO?= =?us-ascii?Q?LaekDxy/rcIhe7GlARTZNlJlU/lW5kGKRDJ0rh3V/Q6Jpo+AuHh+fn0yP90m?= =?us-ascii?Q?kUElADKp3ximXCJ4FeFRzpblS/B2ut2+k+7AQWlthsrQVn8p2RWanoPVDqAc?= =?us-ascii?Q?je1vGuBA01EAAYqYBe/ieGgb1XQhMAoabfLEVTtMzQD0afasjv78DSe6vidg?= =?us-ascii?Q?nDA6ZKMMIzegjdJYmOFn93O6tHdZa/eXFI5M3C2Um6uGqP9ZikVc0kdRl03b?= =?us-ascii?Q?ZOyKbjWzZ9LK1mgSPkPLgdfMeo8mVUv9LNC/nZE7Ze7++Uoj+/lA8OtYJvS6?= =?us-ascii?Q?0c8PgwZz7YR4kN7gx56zWp2sav+5oFzU5GEsrF0elyqkEvhn+qGu3wW+c7Wy?= =?us-ascii?Q?79aua//Q9jxyVK0g9I/Vl1Kykt8iiWS01ExTuHF/jRPSF1akU7jgDbe+cAMt?= =?us-ascii?Q?DMcbzr4l4pHlBJVMcBBdEojf4fkaelLEO+wFn0iLleBgRV3M8cbrw73hLF+4?= =?us-ascii?Q?YsGhxVXXPRQ2+h2auG0OXcyaiWSJeGlCKmwe5aK5TCafXat3FUcxOWavDnKL?= =?us-ascii?Q?s8cWGt4VWdVK28/rKdE3dyy7n+t4F39ODBOglMme2PpqlyeY6xTC/yWRyN83?= =?us-ascii?Q?ZbNbLyzE11785+3trhj+qDKkeRuKaG95yjNDJlK5Eiv9b4TX8lj4gU4flJFo?= =?us-ascii?Q?YnehqJZ6G+1MdvsjBjXtGqUrkik1nfSTFbXUNeyqORzozaFvr6u7sPK5g72r?= =?us-ascii?Q?e7BZUzvD+UxPoHTk/QbVeYeKqA/mN3j9OIsic2HR/NZ/hIn9c+Rd3yLxMIfc?= =?us-ascii?Q?hFymyioJ2cLGAWbID3EhORizORkj/j+BFTalW2SkHAKxCGKo2sWqp2+DDXLz?= =?us-ascii?Q?4Hx+DD55X9WPB/wPa8IJwAb4lEmK/Ql7Ph6DjzjB2HnLVizu7oAbLvMWuoHl?= =?us-ascii?Q?Mw=3D=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: rakblP2UgPOPhaBMd126Vx1M9MZlqE7l5tzQShhm0E6WtkOdBsqasJXBH803LPB4h9b9hBYuShj+zZieZG34BShzvbrccOPSyX+MpUf0UokWM3x000fSzEH5GhqQGFxMzQTyX8WW+T7eljdBhdkLsh0Kj5r/YJogvhmc2kyrYnoiuOqd90emhyqkvneakSgP+spQMKLBNF73vAOsQTmSy6eTflCKzJ2M3KWVPLTXmVb/lQRnQmdgUdgeft+dxqd12nlWNHLV8SYrJgtzRud25LPjxNr4p7JAzA8v9IgnvAHm29AEfuY2vJAqWFKVaTlVIEB/R10GZugZP4145B0AB5UCqOzM2uE8AlI27NQMdnR1m6kkr03b6INpFyABATIbKQjU0UNUSykKeCEPSv1P1GH2CLs53ahfMpLSklT0URcrTV+1Wz16VUHfgw+ZfQoOm/O5RXDghGilD4OhZPid0f4gdsL8VgQ/ar8MahUm78EsMbnRM4c57L5DmBzje07U5h+D5tvCLFqlo3gskYofQKUrnWTiFwxPdfvk5ldrGF7K8K2VdpuTG5j+UISbu785O5PFYo334d8bz9AAt/pyRdAPgG6hOw4618QVGr20s7Q= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 2c4a7277-d91f-4385-faa8-08ddbd172523 X-MS-Exchange-CrossTenant-AuthSource: DM4PR10MB8218.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Jul 2025 05:28:46.2146 (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: pPf4nzMOZol4lkFuboQSUUR/NhjpRYHbE23fEdA0UH0MQ6THJX+X7pKTNXHKYxxIi6ZFaILeVdpOst0hSrg44XdSQYNcWN/ue7qVT+gocRc= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM3PPF00080FB4B X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1099,Hydra:6.1.7,FMLib:17.12.80.40 definitions=2025-07-04_07,2025-07-06_01,2025-03-28_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 spamscore=0 phishscore=0 bulkscore=0 malwarescore=0 mlxscore=0 mlxlogscore=999 adultscore=0 suspectscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2505160000 definitions=main-2507070030 X-Authority-Analysis: v=2.4 cv=NrbRc9dJ c=1 sm=1 tr=0 ts=686b5b1b 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=QQFbvnUwB9Dxs2rSiigA:9 X-Proofpoint-GUID: eebGw0-E47brR3x86r9-jpNy_7XPur31 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwNzA3MDAyOSBTYWx0ZWRfX1lC2h2SvARAl 3lmWVYQtizCMpcqWbQ+TJjXPYGf9YnpCkqSSXX6rKrqgROizybV6WFQdceUBrFusZ88rmg6aEko VBAoF58NApFqsCqc2MKp3Bo1q40kI0TRhKOH0/TsSxD01EvfbhwcSK/eYkXG/hruMuQiW/SjilB 5Ko8tKB8c++ooQI/fnY1q+c75h7YXTAN4XkIiCG8pS/jBOEjEOdcNYmwpHV7m2c4tMXSAhEnyV1 fdSI/ZcaKT3i7O2y9WxqIHcvVcG8vmp2TvgtWEcHD981l3ZAtkpQlFms9u+fjTj+kU+ZZXUyBBy 7sfkg5ljapue954Gek4hqKdigO2b+QKVR+dQrLw0YnFekrvRiEz6zpooKU82OdrOkkzT2DW46vA ZKfoJA4Lc/5cPkGsUXpuhNeENe6NXqqvrIvZPmXAm6/GBlAjOJjS/eNEbRolBRu0VZfrFrCB X-Proofpoint-ORIG-GUID: eebGw0-E47brR3x86r9-jpNy_7XPur31 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 --- 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.0 From nobody Tue Oct 7 19:50:49 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 700C2270EBD; Mon, 7 Jul 2025 05:30:11 +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=1751866213; cv=fail; b=aC7dADpCvXRNIOM8YYdZE1r3HqDMfnXdIF8edKOyAMUP8TjcRJUyMN8iyQPjrAIiUNrucEOIT1CUb4U8PU2mcbcLFDKWToGJVAwQZQuDI9V/x59+8BLSDhrF/6x++OxMdq2gkQpvH3NNmSAe0lm97ynm7iYtpHmEDFJWMDSbCD0= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1751866213; c=relaxed/simple; bh=p4rBH7+zbmjKOeJl1F14SbKU1NNBf4jyZngLhu8VWYQ=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=IanrCTjL82jyMuheiZMW+xTXKH5XdfpBW4iRWJ33SW6Rrnnr7ffWc8Gmvtt6lPKQg6HB/ulMy+SF7cVDVmILnhUccLuAdNB5k4OBV+Z/I1toUgxd6gpo27T81h2+GSbixyEwe/T/T5r9xbJX/+hvi34P++3ovgWV91KrtQQnY/c= 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=pbPgRVOW; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=L6iey9MC; 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="pbPgRVOW"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="L6iey9MC" Received: from pps.filterd (m0246627.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 566Nse1h024569; Mon, 7 Jul 2025 05:29:01 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=cc :content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s= corp-2025-04-25; bh=I3UdtRi0fk56F8aWl6dlmLResypWNDKfT5TmPQSA3tQ=; b= pbPgRVOW68HG7boBjJSsTtM93sB/T3yATB0OJ9HJuMZrK26l/diZe95Bl3F/WcYq vMYDhs+JKHVtTwhUy1Vq8hNyc3Dk38K8u2r2Z/Cj51eX5aJG4pjLY0NvagxI8rw2 iPAczTRh4xj9Urvn6I3y8yCVbPWtk/nE3ktsAwf/rJV84J/w1L6jMe2yV3OOsnSX EPubnj49hXSVWeL8DWvMtk+xmdT1Z81yVgZL4fsOyMj12Bt3Z6ovvCJeF/aQg1c1 vseTvZOzfy1dx9ekH1c1ZA88MzyScQIrUYDB06nynttYw2agvAqx3rUvU9ek+E/O T+wXIaUeDRaT5SXYwzMFLQ== Received: from phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta03.appoci.oracle.com [138.1.37.129]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 47ptn520e4-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 07 Jul 2025 05:29:00 +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 5672PVBs024285; Mon, 7 Jul 2025 05:29:00 GMT Received: from nam04-bn8-obe.outbound.protection.outlook.com (mail-bn8nam04on2065.outbound.protection.outlook.com [40.107.100.65]) by phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 47ptg82hd8-7 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 07 Jul 2025 05:28:59 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=GX1jMeyenkGP8dWn6M4pBZJPJrHtAsSc4jHo2uhshY0IONAKksDbnrApUUUJ2wnmzRQXFWPm4elHJHjLgmPoi27dw6kU7xyt33aHeBKOm0EJ4mT6Bv3N6BfLdnj4olnKyEFRFZC1ik14Cd+ENaR3I5evWqPpL3be83IBdgJQs5u50i2qxgxrn2htah3dwiU7dTo21WfOYlMqTPy0w4tGAfaA5FyhLlUXR7xdTOBuc0ratQGPIqfmyA5jHph5UqrTl3uqvJfkcwhN0VaomeouTSxZBHJV1UiHMoJ4fhWpjzUwq6LnA5wyDVcjNPVdHsle+PgmxYizBAVlDEYyRZAzPA== 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=I3UdtRi0fk56F8aWl6dlmLResypWNDKfT5TmPQSA3tQ=; b=eZPgg92il71Ocge8jaxKugxkxtg0IeKKIrJhVA+LcipTEwJCCWUWfuJCXsTmJeZNc98xIjkqO9MZyKECQigch1D+JD+YadRrI1vQrLUsVbDB1J0H68rrMpRitiSNaY1csTmADohs8V+vJ3XkkbyMPLhWjEmZHmiDqfhZVXyqxlhV1mIufuRWLaX7S3HHnYKxnSWZaFJ0ZUGwGktlZV4G+AQY1DimAcpD6EEJj/YZTJuUcGRQJkLBXgyYELHymifjitcsC0Wtwd1GQavPsbBMl5gk8F3bjXC6wj4FUHuJdtQp+L5QMzrvR7EG2jIBRdHnJdxXQ+73U/YWhbMhauuS3w== 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=I3UdtRi0fk56F8aWl6dlmLResypWNDKfT5TmPQSA3tQ=; b=L6iey9MCmu32PjKoB0xKwLlJl5FeZiblXnBpUpKcpkD/Itc/NLD/q8R6SZofekGtBxqCH+91nBvO/3y4Fc7+cBR0buSex7ykshJNYlgNxLLkmpMJXOLw5/ffEfiYnbyzSN52j3tBDZRORbNXLKG+QIO3HEtCZoL+tGi6gRNWa5s= Received: from DM4PR10MB8218.namprd10.prod.outlook.com (2603:10b6:8:1cc::16) by DM3PPF00080FB4B.namprd10.prod.outlook.com (2603:10b6:f:fc00::c04) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8901.23; Mon, 7 Jul 2025 05:28:48 +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.8901.024; Mon, 7 Jul 2025 05:28:48 +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-kselftest@vger.kernel.org Subject: [PATCH 07/10] mm/mremap: move remap_is_valid() into check_prep_vma() Date: Mon, 7 Jul 2025 06:27:50 +0100 Message-ID: X-Mailer: git-send-email 2.50.0 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: LO2P265CA0380.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:a3::32) 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_|DM3PPF00080FB4B:EE_ X-MS-Office365-Filtering-Correlation-Id: fb0b144f-2801-469d-8874-08ddbd17265e X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|7416014|376014|366016|1800799024; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?lxYgRDU2qxOdrl1nKbEd7GLa6shocezGmr0hcXGUv2je0SR8OwzD2eOBWk6c?= =?us-ascii?Q?1os1EnSjCseP0FSc4HDxAuGwFIS17DjSG/C6MXaMCQoiXpXreg10h8Z1nRoo?= =?us-ascii?Q?ph/tlc4olEZfqKsrbetDWd0lNuHzcrV6AjR6A2MYmYpWwD8P+W1k5/L+rULu?= =?us-ascii?Q?BDnsXfc9ry6uDsnG/s1gW84pD3u+DAz9EYiYkD+7MAv0wwkOqt9f0oasxWQJ?= =?us-ascii?Q?xXrGaQ+BtcbnQ4ZmHlN4wDB2+ZTSQI0yyilcL/LhdvhTZ/mvfnuX/PomDXIk?= =?us-ascii?Q?rDwAbaR0Sxj5Z1gqgpSBhmxJumtb0JqdmDUYtA47Fk4IyzlyBWoiCKgnGl5O?= =?us-ascii?Q?eXd6jRQ5YEzXHCb8sUccHYiD/aUJBgDqCDyehO8n/tSkjSW4W4mzQrNJSmdY?= =?us-ascii?Q?EMkSyNl9kATyPcrn9NPLbLGcjZ9nCbS+FPC3VJxJveF8IqYy7xByb4T0v0bl?= =?us-ascii?Q?IPDDrn6A26/4vTKMx6hadjtz6hj5F5ec8u0ImnDnowuTy1alBB4FHUCTD9mO?= =?us-ascii?Q?qRSZ4B0X33wKLawXUNbNehllA7mHKqpE9Hi6yh5ZYbQoTdFiAxct1Rsbivjm?= =?us-ascii?Q?tI6SnU089mJLJHbTNa06nlgZ0nvenMLMoiuRgjYdKvZlerevkAyJRDV0Js0i?= =?us-ascii?Q?yRjvsfsKPfPUl0MFFNHK0nOBk+/0QL7O/daoOEHL1jQsBfi7cdRCGjucDnA9?= =?us-ascii?Q?o7kFL9skfz1ZdJmIK67d7IUzltpKtUPTddYw/nxqNZsF53ab37kB8+4YlDar?= =?us-ascii?Q?XKPDUzYXJXNEI5BCmsKeiUWa9j86XVFV9CRgwt6Ijrm3Wo94rMTNuaUIOpfj?= =?us-ascii?Q?VewX0fcTf+3BKXZuow4hoWZGNnxdcBr5WCWbBTf0iRYCXQFBdmbu0J8vdvzf?= =?us-ascii?Q?vH1EXUTavCgwrkFpe2/EsuBcBQDQwVSw/JFUn4mYYd/OyPoFAYXgIB3RIhPC?= =?us-ascii?Q?biQDr98XVmaJGdEPSQT8+KMGS8lpnK2MFtA+hTSer6UgTWBpjLrg6NgTtFKk?= =?us-ascii?Q?TSi+05+XkJMnvWdCW4IFf5sxd94NNFzGFXo3dvGeU/6pvsa8Is84XJdQ3AYD?= =?us-ascii?Q?K2gndeAAIL4CFptqblF0HDMexIATxYjakhEEWuZxqaH8fjkvGdNtHiAEoylv?= =?us-ascii?Q?lnVLtrguEhIkq9I684R8nG/TwFnVVBZ9U/CY9dn4CTbVhMkRrpS1IInPVTa6?= =?us-ascii?Q?1g8YJ1I/RwV2+t8cHBPlu8fpSjMpWj4NmrG759kJVixRH5oXfZBOfCtFfR8o?= =?us-ascii?Q?lkrPgLz1pvBzx7D00tHl2PSdbYHb/dL8AN7uUC9nq+ZIzfDkalHGmq8ig6Ot?= =?us-ascii?Q?nJP4mCUWTnxUKfMv6r6qfCiqE+sc3yKn9PY7QNX0p+ipUXisJs0NwQcjS+d2?= =?us-ascii?Q?uNeOc5LS3M0q7RrbrWkTv6sJATAZf4oOiWq5NaCjZPxkaaFyI2FTtuxpf/Kw?= =?us-ascii?Q?/jIfKeJK/vE=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)(7416014)(376014)(366016)(1800799024);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?MqjaH5/163UnxsPnVZC+EHZ5XLt5CqBxoQlaAAqV6zBNWM+oZ6BjG52VoXlh?= =?us-ascii?Q?w2vV9NXK0PnKagDFaZvyA4lYklsa0aJlWNxM6vSf9fUFZrcZVreyUnbepQ4f?= =?us-ascii?Q?3QZ2GzA575xt/4PwNZpwFcOJaqYt+YlMvv7yl1DlXqeUtQhVX0jFx8vtVva+?= =?us-ascii?Q?T1b4GAtlf2shxSMCllMwisBoMD8sTyK7+Vry+MpJkzJcnGbhOxNlbKQh5DNk?= =?us-ascii?Q?zYAN9IzyE9G0E0FKNoOlJ4tTIY/ezvkCTAb0rqvmn1HnMMoRzwkcfc/2st7l?= =?us-ascii?Q?U6xjR/xrrfPzadk0bnrRmb2IHBhoyPxmWG64pwuw7TCCFht9m4vTuHoEpxp/?= =?us-ascii?Q?KGbEcTdmAnmKAPrnBV6IBN6o/S7quKGdab8Ddbozc59+gQX5g5E0Ge60q59f?= =?us-ascii?Q?SBy0HOzR/7fWZ86FVICij/Clp9vJuC7fljR5N9bE+gx1Je46DrCL2Miuc2v8?= =?us-ascii?Q?4FyjYQS4xeuYHQXzw3f0lCIWJUzxuJrjHNjN7Y0ybit+PmmsQEaIINsB3tAF?= =?us-ascii?Q?CB3JDeOKLOsbmzaJPRR+/dCCZyK4Z22Yc/xJF11tdqrMJu7Jp6OopoJZ9DAX?= =?us-ascii?Q?iFThJNHo2L9FNkC9rcbiOwmdEfDVeVZWTBjFz3ogREVo5pQPm213MK15Kb0e?= =?us-ascii?Q?UuFLy83wRL0MXGLtSqckD50itVilibqnHokdQRXQyc/lL5W/R2V4UHgBrIOF?= =?us-ascii?Q?+A8KKKRZLondBxaBOoul8hdhsrKDLJfZSp2777oKYWkYpmibjlekBmVywWe+?= =?us-ascii?Q?0zgSovxNos5S7kmUtpFC86jluDWWVAbpfGfXH90NXVKackp8Pujh8pYS8/i7?= =?us-ascii?Q?VpRNWyvs2/drXa4yCIGGjp55rjUi90bkfRf4BXTMNBribqi5doHJwzdZea8B?= =?us-ascii?Q?WXE1tWbJgoHoyKb3cq0xlGYuUBouFsjMgZ4hXyGKzNRQ48Em8S8loE29ChAD?= =?us-ascii?Q?4IugeeL8x4fDAVz0UH8qUNajK9k1HXT5W3+UY3MXX+XEpNTGh7mWGZCjqdsk?= =?us-ascii?Q?qJPJWWitlxau/EYQM8+HoNPf+WgD39RYlfVce0YEzKTuv60uizM9nzTU75Fa?= =?us-ascii?Q?vFnbWaUrRR7AbQw5AmehLUDsWQ4nCk7TmfXHlwDlphxNWrZvCT7MmMtlOoL5?= =?us-ascii?Q?regUZy9cqaH/jFdOG00x7TzkoayjpFQz6Br/Eog85wvfYf3nMHoS2LrmNjWM?= =?us-ascii?Q?TSYSxJrpdMwjzca/xuFySnZqNF2/6MBlnfgBR0wmTt8FuIrcslvO72ZmXSJg?= =?us-ascii?Q?ruAVBzBYotEhqZub3Vllx4PC/EntE/ZTQG4W1MGzuk97fwHRFtO8mdI4ndDX?= =?us-ascii?Q?iK5RqkMAciX2++IdiFkYcpltqae6a9QkUYGhR+Xu+nbAOGHza1yRLchmKTJZ?= =?us-ascii?Q?JFdmresP+apV/wPa/zfQdHvLbZlNzFXm0xLT48qf5aEp4gV341nsQ9pcArG/?= =?us-ascii?Q?tuWqYUcJi+ddzM9TUF7VHHTxhNG6t3TEgYoT/BnfMHcJW2Ak7yhp6GrA7aMj?= =?us-ascii?Q?oXYwB0czo2NLdEtbF3bTxnOqS5rxwTd6Tnhfqzse1bfPMVay2++gbmU5pKiB?= =?us-ascii?Q?GrWz5MR1y4onWYBm8uvDUx6PPlV1UBM8pIQUOJ+rHbUBx7sokp0oNY6oA5FF?= =?us-ascii?Q?hQ=3D=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: mZUR6zoOAooai7zzi77+SHIGNEkc6bedu+OCgDXWzRK3sMrceo0VFCsD7GTcSWF979nQflXWk8nKsUo2d1fDb6IJCsXM8BLB+CjICNzO+a9cer5JEne2pKDeITPet3FMRx3X/9WNmfiQu5zmSIEvwHlWQIWke2PXs53Cw9G9rO4L+DZFmNsRQhw2Vl1jhUVoKAdoDEPRmg80yvL9c51fvQYwyrr66/kvdFiuoLEutVygJKRhE/a34NOJKP/OlANqRJyPsuZiZ290VuXOnZ7h/d06cnbCqIXkv7VRQKXA/oLK6D3tRWZfXf6bKWzPO3VhI4vo+mjn5JZWmFqUN+uyhuBex4VYa7LbkqFv3gY92FnU4VS0fTX81F/0hBt7D8Bxz8g88PzruyN3igQB8Nhv04SnW3/Kw3DkRQte97kPjhV8njfPgBca/RJNW9vePfjY420ywV+90U+QAYO2R6gkMpDT7oBs/uxhKV9G79ILrRWarJNHC1Xi75KgxeiNTvX34Hrz08yF8c0dSJpczyJF/BnPzFDgNvAj1cQ0nEkxd/+NptqBbF8t/ls1IRYkVALFclKzOBe3j1NxqcqqnDJAAiymjXLmaLM+R8crT2TYjf4= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: fb0b144f-2801-469d-8874-08ddbd17265e X-MS-Exchange-CrossTenant-AuthSource: DM4PR10MB8218.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Jul 2025 05:28:48.6731 (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: CneNzv7Z88aS7zoV/smVbDLR6SeaVJmnSiJSNoIpHUZtLdz77MAAtsLgULoWSfcLLopmIHQx0/Rb9m67IruqtYFMK2FwktHLD0IMVOPG3Ns= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM3PPF00080FB4B X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1099,Hydra:6.1.7,FMLib:17.12.80.40 definitions=2025-07-04_07,2025-07-06_01,2025-03-28_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 spamscore=0 phishscore=0 bulkscore=0 malwarescore=0 mlxscore=0 mlxlogscore=999 adultscore=0 suspectscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2505160000 definitions=main-2507070030 X-Proofpoint-ORIG-GUID: g4tXK3MKEBzMFJVInWAnmHbG-facoDqi X-Proofpoint-GUID: g4tXK3MKEBzMFJVInWAnmHbG-facoDqi X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwNzA3MDAyOSBTYWx0ZWRfX6gShlgb1l7s3 Syah/zvGb2ReaLT3gMG6EGm4+ZbyD+hRXP+U8mOJ3W8hsUUduHsFdlCYClSvTMsuS1ygYA4PWKM D0zFWedEqI3y0klWp3/RPlUDSVxTTSPVOeolpoEtYxYb6CRAP8lUMyfvxKEao2J1MZ3J7DmecCM 0LMEiTRzXoInZyw40IGB6CngyCk2ePxtwAWcv3hEQvv3n0IXp8iz5lMqS0w8pwipMa2cW+rLNn7 7LtZJLFKmLXkUiV6B0cGlAPXqah573rhZK4LIqNkwhIzeCUn+3mdhBupH8bsUBmTtOoKEPs4zEW 2XSQNNzis542j6b7LLix83mJhJB5ad/Ef19J/+9qw+0kQAwCJ1wkkP6ZhAW8DNFOEfoKN0g5W/M QDuhf/Q+K/dqGPBNmunqVD/+4Ly2pJBaShI3dIxDIJzJ+y7ogYTM4edmpWt40XlEREP/whbV X-Authority-Analysis: v=2.4 cv=UpRjN/wB c=1 sm=1 tr=0 ts=686b5b1c 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=JNHyDlmCLAJVxX-Ft_0A:9 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.0 From nobody Tue Oct 7 19:50:49 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 13471223DF1; Mon, 7 Jul 2025 05:30:07 +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=1751866209; cv=fail; b=oK7eOv/l3/zrDxw5fCoxOOEvvv5Ry92k68vsejDLlEPssxbOBKivBVa2a3Vdrud84DOjHU6pU05TwUJhsxY4tEmofdrSYs5t2ehLRVtddypdPom0kQZ9Sg2345/LQqqcZ4NFRERjmt6vPDkBBiOJ0wrOHAoafwMDzAGKVcKAgzs= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1751866209; c=relaxed/simple; bh=qFnPV5LhESmfVccBAKwH1Gwb8Z5IHju3ZMcCAfrGs+4=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=luLXhdSP0B0vHr9zQ123Kma52X7ozSidCruwt1X7Y0WucOTZwBpD8J/tFoxUrFuxY+LmrtxLQfcU0qPpVwFvQHdNkuPIq8xfzWZhQ9R6Uk+AppIgE7MoRC+GH5xx9PytyltwchQbqix2NJlVY22yPG1THpgxcJ7qzv+dgA/tdZk= 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=FNBCNX5X; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=lf9/07ih; 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="FNBCNX5X"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="lf9/07ih" 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 566LeUe3004231; Mon, 7 Jul 2025 05:29:01 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=cc :content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s= corp-2025-04-25; bh=NM6i9pblmjitPoO5W9OF2SX88EM5hA6mCVZioM/mT0o=; b= FNBCNX5XKaBlLpTZuNxrTEqVU3cdkiNkIjvJszz0BRMntUIs6gWHllKxo2T5FARB JjXKdREKOw7+f2jrpGR1iyp+bz1h/7JEXXgjzUUVJ9T0m3/BvgGC1ZQvHLNI51CV QizpE2XzM17u3la7+m9APT1+h+tC1m88JaCv/1RFbKrJAPTOTJ3EXmli/nSkCobU bj/ToqqHXPaIWgI0TSWs+AmVMZvfCOLWctQh7ed+6p7E4SFNtGxUhinuAfVaQzaC jSBi1x92ykk+buWrghsDh9tJVnWpreJAjM9L8DA3Ew2Q+aoaN/w9jba1XWtQjJgq THtMkUwm/tDBZdlE7RRpWA== Received: from phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta03.appoci.oracle.com [138.1.37.129]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 47pvkxsxyr-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 07 Jul 2025 05:29:01 +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 5672PVBt024285; Mon, 7 Jul 2025 05:29:00 GMT Received: from nam04-bn8-obe.outbound.protection.outlook.com (mail-bn8nam04on2065.outbound.protection.outlook.com [40.107.100.65]) by phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 47ptg82hd8-8 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 07 Jul 2025 05:29:00 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=qDUGryXIyn1tBKweW6NQ8TQTnba9e6swS0ibBjO8w1Kk8GGRcowJInCzP1k3tdXB9AJmbmEnudvrkm3RJC71X8jsCCEKNxBi6TEPkm4ajHHh9/IpqbqCjvKixJr4rFFUE7v97QMQc4zA7pGYj94pt6hBrtyvIYVXQF1dMHYzPAGL4sliWWQhOiR9IMgqi1p1h5A9ii1l+lveRz6NgYg2jsEVy/kgdpztHNNzKNFv0n3+CIMQqV5+7pFgMIq/RabMHip4WW76b0u5p825GFKxpwSV1clJDyjdCTOIgOgzzPP/2rKEbkiPMPOYMKU8FefW79kKyjrubQWQcRbO/InSSA== 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=NM6i9pblmjitPoO5W9OF2SX88EM5hA6mCVZioM/mT0o=; b=SGOXnnE6uapwqnVhWMs9IcVo6zDcF1Ho7BbL/BahH9Q6OI1G1+aUhXLsx5Ag1wVveCP/k8p6eXLCrIh6RQGnde57DE5NB/MnDur84gVAz0is/MOgUONu74t23psnHRzHPYdwthkoCQXg2NL4Z6yPcFHoJfSWCCaPQtv+w0jB8qV3K4R07nBw9INm5MyZjeCgLBC+6n0Ce/5QwTKyJFCQQkhbAp+plSU0aYWEM6xfYZIaobTjCyVIt0/m2ro4WVzwcRrOqWxA1F/BWnQBY2titJV7N+nyomHgk9eVryh0IfdAev/pJcJu0gP5Ul87kYwoE6tBSwfx29y4J9R0zpZXNA== 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=NM6i9pblmjitPoO5W9OF2SX88EM5hA6mCVZioM/mT0o=; b=lf9/07ih/pid08snhX6x+LzPh3Iyy2mib1tK+FUjvC9b+0Il1myJDc/93pUumHgSrNQkUJV+gb+rUEHVtQ97nXChCboA21/tc/59IK4ku6sxczA2pBoPHtf3CBiovOaKQZgmFGG5bLgUk7pDdz6j61HULhGMkphxhFWtfVvxMlU= Received: from DM4PR10MB8218.namprd10.prod.outlook.com (2603:10b6:8:1cc::16) by DM3PPF00080FB4B.namprd10.prod.outlook.com (2603:10b6:f:fc00::c04) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8901.23; Mon, 7 Jul 2025 05:28:51 +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.8901.024; Mon, 7 Jul 2025 05:28:51 +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-kselftest@vger.kernel.org Subject: [PATCH 08/10] mm/mremap: clean up mlock populate behaviour Date: Mon, 7 Jul 2025 06:27:51 +0100 Message-ID: <1bea4f7b5093d603ff323570076142eaabc8a480.1751865330.git.lorenzo.stoakes@oracle.com> X-Mailer: git-send-email 2.50.0 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: LO2P265CA0012.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:62::24) To DM4PR10MB8218.namprd10.prod.outlook.com (2603:10b6:8:1cc::16) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DM4PR10MB8218:EE_|DM3PPF00080FB4B:EE_ X-MS-Office365-Filtering-Correlation-Id: a9faada9-3e9d-440d-656f-08ddbd172814 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|7416014|376014|366016|1800799024; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?zA0Kxx9YF3hE/iVKF740m+Uk+BjrKJ0/rrxOzYePkkXO3BKvvzDUSPenyHIJ?= =?us-ascii?Q?h0fPclKF4rb6Vr7I4hwCyDLUQE047JqIhxLOVyV62Y2jrRLfn0w3doBMSK34?= =?us-ascii?Q?3s6JRAj/X/mu1zpsBMFwzt3uD5InVUxuq4B9TvlHpgSISPx3EFip9Z+0ljdt?= =?us-ascii?Q?scCgGC5Y681H76GvAimcBsvxd3DKU5xXo0+2TKXDNWWPcGf143bS3yaaaRNb?= =?us-ascii?Q?uaSnRZUHRARiMLBIv+gG7hiAH2sgaPW5rkz5in4Au7V9FrxV848WxkZJTz/4?= =?us-ascii?Q?WvLr8zJk/5wGlGk55+bFioPO3NH/+cg+YGZ468Kk/T545RCG2TwpdDwu5hS8?= =?us-ascii?Q?JF+/XXN9J/0X2s2U0nJd9VKzl6zMFcUxNfKjqQcpebUcesPmeAdNXrZqHCNB?= =?us-ascii?Q?GFi7ZMz0/fryOOavGOtesRT9vafW7HMKOZpNhWU0Om2eWMl0vl6RdiBg1taL?= =?us-ascii?Q?mkq+7dJ2oFcG2tcmkYQzxf7KiMws4acFEJIAoGJo0wpN5HZ8pLfJoAKTF8Eq?= =?us-ascii?Q?pAIC9bunKgBLLsNKqLlPxrK1Dxcp36z1G3ucxoIx9yiSDRcpQRH5rkUecMgc?= =?us-ascii?Q?trZetJvzM8EnxWQ7L+H58lngXfGwuEAB8dULDSqYpmb2BtkG8V9E0H6lWHhv?= =?us-ascii?Q?bcLUoaR4KTBqp5KvePpRMiZzND0+YRdUcpKWh2pxCi4S0npquYs9pnik+69U?= =?us-ascii?Q?GGLLQvRoEBAYFbyyRngsk5pKEiuoz8+H0lmrz0RY8A8f/pX3KMNFE/GekwyQ?= =?us-ascii?Q?MguRyLZi6GQHqelW2mqp9wNrdBTKgR3YZj/PfEH5WBupeMqbmsevLUlEFcvO?= =?us-ascii?Q?hAjmvMI1JW9DN15IfkZ8spPUYAaM7EepFzBCj4F9wAreE4JDNgMavJ6GQNUi?= =?us-ascii?Q?1yzagyJ0uNng9ce3IjBKyfCzuhDevIe+UqY8afcK2bZXGKeq26PkHzg39Aig?= =?us-ascii?Q?qFNeIzRn4xuL0ZiPMdT46KZH180fL93hlPUgndn6siWvX6ta82PzVu6BZ8bM?= =?us-ascii?Q?6Ub597NORIHMw4ZdA6jlePDg2CEfpraIcirtX4yt30NLNfo9OARILTquhwco?= =?us-ascii?Q?Uln5wQ+98qH/9akNZamL2RxkhG38SNoUKWZqH6M1PvwkwEBvltz/Ag4crB4F?= =?us-ascii?Q?9FHOR6WlT+lhrDI8fYMcpepIanawYKjF0BwkT2Z5e/m7VH6v7yfTkRShYhpI?= =?us-ascii?Q?irrlodAjpxzfoMGkZgN/i+qew6SHNOWZRd4nBf65fwp/rXwUKfBz9lNgWHE8?= =?us-ascii?Q?W0PujzFFJqfkoL0joktjaUwULb42to/OwWb9Rz7BF5j72uAzkj/TPC7xJDnb?= =?us-ascii?Q?YD3VrdBQZKCeGvuk8+eMIfnazH8XsHUVE5qjZ9KtkpApi66+W0Cbp3sQ/OT0?= =?us-ascii?Q?/RurolGRRHjItOn2olD4mi2xV82LPtA8LlB0o0UsT+4NIV/Bm3RzpSak0phU?= =?us-ascii?Q?hpf6Phgau0M=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)(7416014)(376014)(366016)(1800799024);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?tAzJuB3mGjnA/IXQCIhw9A4GPIfRW4FOFn8ta6iFRIMQco+jLSJ2CF74qU/e?= =?us-ascii?Q?4TOSC6kjFMsdqyVbENrQO+kDb7HLZd7k0zcOjb7wSrUkJEPfM3sI1ldsq8dX?= =?us-ascii?Q?XK6RLKZFJ5TLh5KylC+LNlTCcvhojn7RyQXcpEsmr8yWWWbe3Dl6Pol0oATs?= =?us-ascii?Q?DRN01R4HG0JlLzTrMc/6uywKljeRoL11Gt0kAQXMuLw3eH6go5m6DtMrQY9u?= =?us-ascii?Q?umUgmy6MIfgmVv7IXkiVnG6MtDb7SFaDEcDOcp06/yp4PMNsvfa5vXztpyMg?= =?us-ascii?Q?dEbnB9wz424P5Xy12cuxqtCP4veuSYPBVOdR+kJwatAdgjVKZHR1orJWaXvf?= =?us-ascii?Q?siV9Y6TmcpI4qbty33D+mIgP2acI4RWN5OLgkXwLoe+EivmSsN4CV1VrTXUT?= =?us-ascii?Q?AzdIVnNc8DnsenpD00SsAzxpb+rssye/BV8oVhkdt4kVANPfrTaITRm/Hmg5?= =?us-ascii?Q?Y9kqe7MIgyK+PSFawrSvtTJMHVsRrM38bSOG9O17FyzLdxvF01rgkcrGnLSF?= =?us-ascii?Q?rx+NkmjKE6F128EEUBlcd/2n0ghEhlZIJ3lO+WCQz/3JTyQYvECQLovAqqP2?= =?us-ascii?Q?HFnn3/QiQk6o3ieJtSiLIeflkOdNlaIJrt0wN5u+UtFDUTfkMVSbOSgNVXWh?= =?us-ascii?Q?kn0ZRjDxFowK/aDfW+JSOYcG4M4bM7ZnA8v5i9mIN/ICijnpR4LYu0OdPkrT?= =?us-ascii?Q?7UjWPtetYebFwJtLfZUksRC17KEznDs0CwdD1VG8FLdpxFqTgQs2HMZys6vC?= =?us-ascii?Q?wmTvC7n2x/VgWE8ySVaGtGCvPJRV0FgIkuv6zfnHwmBR/qSro4JEe45skAF0?= =?us-ascii?Q?+kpAxQkmNbYuahUAoeVXIHM0ZRlpG6ncIyONBbgk167jMfCJt0oehihBsZNs?= =?us-ascii?Q?bQmxW4NGq9GtxfVoeYC3E88AGL65RwfOW28Gkj/p2w1CL9tpkHpxfwCrF3xm?= =?us-ascii?Q?zV1MeavXHpVU9xVbMDQCWVr3KBTutQmfgAMjrPv/3RwqmyhSgFBSdF/8rpBm?= =?us-ascii?Q?WRfVS/oYk0xisXXf68mV8tLX3CHMkAuoN+N5gZmA2rvKw1xq8Uk9QuqgtDvU?= =?us-ascii?Q?/mbC0mv9aNJa7Kza1AWRCE4G6YAHEuSglB3JqfpV0OWoDC6tJZbEyKUUq/1N?= =?us-ascii?Q?AlYvyGtNg5/Q/pSMg04V5vbJiiK3ZyotmdsTDvk0zL2Jmyhzp9Pns1oAR1xe?= =?us-ascii?Q?o8Y8S68lz6khNXnc28SjIJ8Ti7myX1PoVKBYwvrXSVybM1yrIdiusgadEMK3?= =?us-ascii?Q?V6XeTP6WWb1DwEYWFNuSrnFd+gXsGrL0JSITCUEC0wP9BszA1Q2hVMh+jJ+M?= =?us-ascii?Q?ShUWId47X24ufcMtEM+QykXcpoMbtauEE1s6de3Mdfnas7Ea3Jwe4c9QvNZp?= =?us-ascii?Q?mKbYvpKeuENjYNBZbEGs5kuuuULwt9K4DzdvC2v0miFOhKAKgU4Q5P6kjgHn?= =?us-ascii?Q?g80SG4hLRMQUexeAyOlhco+t2t58unhklsj7R+aFJaQVTZn3Ig17gC7Cce/W?= =?us-ascii?Q?VjJK8qwmD8daeQEGeWcnYFckF9kBTmgNqe/fnnMVKVewJzeDbF2WxXj/2xNA?= =?us-ascii?Q?SF32xkoYezONFS2HgkvHvZtLvpzi50hGFaLy9dLaa6WDFZCjXkfb8QCs8Fi/?= =?us-ascii?Q?Qg=3D=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: M8iHUhw60PSg1CQZchRQKJY2p+L9wo/UY9k3EfcqJTJ0vCW+TvdTnTrsGbmEXMTN9cFByw5de7sbwAoJNwGyI6ZveoZgaj1o9wLTAfuxX4XadOzYHUQctvFpctQmHjK+cY65hTPh8lVk7I5U+hH0VHl7G/0HeCLpStQQ/MhqC7aLgCa5JGEQtgSeTPTctHxo7BReWbu8/uB7FlX/fEx5H04BJEiEfhpUFhZNi11AmO9uTaQ21nj76zZdcStva11LZ8AMlYD5Ws6ZURlWk3eLh8Gas3EOlmSU1T81ja5vpbRkPV0sMBKy4qqzlP7lWc6NGxAEroSg6gCpVGIA0uyRTL1uwgyh4wQ4KPye6pnr+7Kzf7BWfqi56hsVMe6DTicYWzsRhvlinFa8y/6LdXqEgzFCJeporEoNSbflqihn6A7TcL6URB9kghV+lpRTLprOzTSgoN7MV/7FlBXjmy6Kk3XKCpGNH5l3afdiRnOlMuZB5fI0ojECSA+OFMYv4RjoNFTXIccs7HpJ9+DOP7Dn6jtlsuQpuUe20vI48bNQu/FGMk9d9oGEnTARkww3Lw3UY0VZPBGNmA94b528YDLG+6MidBZ+S7JWlyDbawDNz4k= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: a9faada9-3e9d-440d-656f-08ddbd172814 X-MS-Exchange-CrossTenant-AuthSource: DM4PR10MB8218.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Jul 2025 05:28:51.1289 (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: IxzA3KS9eBr1IGocsN6724NRlYDp4MYVlKr/Qt1lhYhxFQKgp2fXIYmvBn7y7CqgK/N18Qs+bbvsQ/8UvmWegHOSou19kg9sUqxCw/00fq4= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM3PPF00080FB4B X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1099,Hydra:6.1.7,FMLib:17.12.80.40 definitions=2025-07-04_07,2025-07-06_01,2025-03-28_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 spamscore=0 phishscore=0 bulkscore=0 malwarescore=0 mlxscore=0 mlxlogscore=999 adultscore=0 suspectscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2505160000 definitions=main-2507070030 X-Proofpoint-GUID: nR3C7P4-0RfbY-XvefB1lw7Ml3hQkGKg X-Authority-Analysis: v=2.4 cv=a5Uw9VSF c=1 sm=1 tr=0 ts=686b5b1d 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=vjQNCPEVpfjC6StvhboA:9 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwNzA3MDAyOSBTYWx0ZWRfX/ofo+fPELcR+ aXA+7xdkg0fvIOSpRUYtIfjzy6paOA/USQc+V7FdI8xikZOw336/hLKIezqNLx8eN9dCanEze6v 5m1vPBSGWz64/37hYvczcr4MFy/q6E9MabAqJoAR27hXNWLWe7fUSyAC0Q9n1n4GdI10EEAG5nv MBpjJ9GjPoYjLAiWMXT2ITOUzlluXkVCWQDkNeUdXzYmjazEUSGs1UfDI2nW6W88CkAXJxhjZar Ih5qPOdF7jXf2z+eKWxaIp7RggP5dh9TChrzEjQhiknoGwAAr3VbBTlAc4T5Y+GAMrAULV2J1+2 AbvIotTUYIsTifK+gXcpCDNwB0TerjhV78mUvwW3zREsPyC2H2u4/HxC+lahhsqt3pIFRXA3von xDfHZ9QU3pgavugDUVU5InqSpYrxSHG7lUURiLWln1MZqR2SosNudUwOaiNcg1+BZudCyDqL X-Proofpoint-ORIG-GUID: nR3C7P4-0RfbY-XvefB1lw7Ml3hQkGKg 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.0 From nobody Tue Oct 7 19:50:49 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 DBE3A27146F; Mon, 7 Jul 2025 05:30:12 +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=1751866214; cv=fail; b=bgnvUOiBtC75GuUa6cOKiITD6jXi5IxLHsy9IAmueke8pi2IG/Acb0k8doq4d6y3PKLIafJWl+ZIiiInPqnWhao0dWdS7K9jFlsDb7iaFbgVwvnGkc4idrmDLXqlZR/hdBkCVwO55Z9UdW5fIeEtE4kDl8WnRaz+0d3wm8yOJzY= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1751866214; c=relaxed/simple; bh=GUXkFzPycSKBDyO/GmzJNLG+hBu+XN6WYaek4BENKUQ=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=g33uPZHzfUaMvkO+b7M8/B65zn/63v6ZZsJtbBRpALnF/zzn/1ytFlI877/EVIDqxsZdzNvgn0/Cb+/Hh0axVKKdi/kLLSy9i+O7B1uWJeFMkh8azHaGpT+w05cDsXSUhNaBRtZ9049lDw4iPx+4OhKD5vtWujAMjvu7GTKZuII= 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=SlGSCWJ7; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=mN2oXevz; 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="SlGSCWJ7"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="mN2oXevz" 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 566LZ2AV021433; Mon, 7 Jul 2025 05:29:02 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=j0/J+S/C3rX2fQKgA5kfxt8UpyRZb7Fu4jzv2Q/Csic=; b= SlGSCWJ7Q2BcZS/fHqUUfac27H14e9w3oPJBljCvnkDTpOeBQi3/smKrqTOnNR3p mOFLvmFeeYUh1MdKuokdHws6rZV62QCURJr0TSuvUas+iFaUXrI9sromGTNszvH3 Wmc2TVcmPt//DEKiLsQfR8EbeLiaG557lasPkL8JMZi8w01HRg9ET1+nXDS5glpD LoWgIsz72Ud5ABubduwBKZTvg56UZEai7x0FkIt4bBHBFga8YJtpY7o3JgHWNuRM ZzGzpyQIKr7cq2Ut8/q8nRIW6TQkbfgflIUzKbH1SxgofZAnuOi4HV0fOWXL8JHi KP5RGdGtPR8Z/fNXE/Ir+Q== Received: from phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta03.appoci.oracle.com [138.1.37.129]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 47ptyfj0vk-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 07 Jul 2025 05:29:01 +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 5672PVBu024285; Mon, 7 Jul 2025 05:29:01 GMT Received: from nam04-bn8-obe.outbound.protection.outlook.com (mail-bn8nam04on2065.outbound.protection.outlook.com [40.107.100.65]) by phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 47ptg82hd8-9 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 07 Jul 2025 05:29:01 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=gzhIqqDe7kmt8o+LlRgKyhwG0RltmdLbp2IGTnwxZo6is3O8pzVbCC26Abn1Cz3YQxm1qlmgPb/7Ar+p0dzJBWGAM5J5aqKgcEBBdu2/NhQWu8jRGbzQniznwH380lKkI2ZpBicOXQTys7X6a5Ckgpj9Z68tUMuM3q8gA/7ragXrAQV88aAv+78Q+0CMiBLiAM6BkxZg5mTosUF+GBG+H95IkJfNg2zGH3CZ9R6fiqJtjjr96kx9eH6NFEfzLw7ZLwruQ6nfBDxPvs7oEeIlQwH+OsUbAWXMygtXwL5cgCD+npvANTilrG5O/d/zoxxZsOKjfcZ6Kgxwiznrjy1B6w== 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=j0/J+S/C3rX2fQKgA5kfxt8UpyRZb7Fu4jzv2Q/Csic=; b=yHMCRo0pgeRxaidT7oEgpKOKQGrblkuBPcl/89AxHphsWHqggJHTsbcMYUFFiSMluEajPVsYx1UkC0F4rmi/JABVa4hRy4QEY8FvqbTzMP83E0/rfdrd6IyjzxErenlk0kAxd8/J2xHbXJ7lnr0S8YGnoXM8KwshjnFo1/CDLZB6jkljXWHbIvuKD1Y12txlbRclmSc90+wxRagpJfYwlFpYG7ZZdw+CGM+OEwIl9+Ap8bpYyal5eUlxBwORDs76eKRL+z5km/WAw+RMJRuXjvm9QpIG56GG1k9Y3uhcPj03kNrcxZMo9bPebBxFOzAc+RFhDluOXVFzMCjND6iDIA== 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=j0/J+S/C3rX2fQKgA5kfxt8UpyRZb7Fu4jzv2Q/Csic=; b=mN2oXevzzYyto7Drk6+wu9ac0aJo2yGtmazcVmDF+oCV2SVYy/Ze4gpk9lNPP7oFXBZKgjiBI5gR5zkBJ22LAqakmd8wgPjaR4zFvQ6B5pZ7lTT14mgbTtF/EKMX6rd9Ofc4v+e5FlyQE5GnM9YREe6JzlnaoZoi6owoSLmPkI8= Received: from DM4PR10MB8218.namprd10.prod.outlook.com (2603:10b6:8:1cc::16) by DM3PPF00080FB4B.namprd10.prod.outlook.com (2603:10b6:f:fc00::c04) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8901.23; Mon, 7 Jul 2025 05:28:53 +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.8901.024; Mon, 7 Jul 2025 05:28:53 +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-kselftest@vger.kernel.org Subject: [PATCH 09/10] mm/mremap: permit mremap() move of multiple VMAs Date: Mon, 7 Jul 2025 06:27:52 +0100 Message-ID: <6797c4613e2b65f64def79acc4621e0fe42ef311.1751865330.git.lorenzo.stoakes@oracle.com> X-Mailer: git-send-email 2.50.0 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: LO2P265CA0375.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:a3::27) 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_|DM3PPF00080FB4B:EE_ X-MS-Office365-Filtering-Correlation-Id: 6ba9a5ad-afff-4726-6f89-08ddbd172954 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|7416014|376014|366016|1800799024; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?o9a7ZcAxchCLIlO1PK0Qxk4/ZulnHEMyYtWaI/0KgRokxrPXSzc/c6BcYrKs?= =?us-ascii?Q?+CpVIkGGS9zlpRbCKChUaIXGQhYrBMpyb5KZUgA6PXQjX3qnYISQL14CoICL?= =?us-ascii?Q?v/bPqhOsHJxUnszqRnpKK5AJCu+PIDM9aqSxHnWaUBNJA2sghpc8aGOrjUxR?= =?us-ascii?Q?7cI8/qty0sAqq3Jc6sDInQqSOhDOBnAKGPE5o9nUdun2/rsub5Lv5TY/5eeH?= =?us-ascii?Q?+g5NVvkI+DpW+b+E4BJh3gDMbIXizEZLuEdL7hwhVRu1ogPXnZCZcamgQ4Si?= =?us-ascii?Q?nPBgTIKZCzvLjI2+9cfsNqYqswKNwQI3EP+YEwLfUlXzOzjQVIRT3Dvn7Jhv?= =?us-ascii?Q?VsXIuGFdD8S++UhCx8SX2jN22IGC6U3W8GyxgO1gn+J1otcutMoGmBySaTV/?= =?us-ascii?Q?VbbSraiKGq/6Ej8iCnZWKR6rgnRrlB4BeyA96S1Jv7AZHnm7v5Q4sfPfd79a?= =?us-ascii?Q?i+Jj/htqSaGKz2Or+kBJFBSOjBcTtKqDqnEw20bvmu8KlU0Wdbk8X8b+a6G9?= =?us-ascii?Q?E7RiLdpysgjFOD2TUPNcHDsKP++2SpRu6L25XodBaDWEpl0SNwQW1zRqXg1L?= =?us-ascii?Q?EXy11pxvXB4m8w6Q1OWUIbTfxt02pcy1L9cCv4gkch0Tk3xkQGJfl1EHiw+R?= =?us-ascii?Q?RbMKGLEl71BC1BQUd1e4t/v4duGVHhPgUQAE5NmEUXtW6pLnC3J19k3wfRiT?= =?us-ascii?Q?QKsahjzKitrVV23gXwbrBrFdWLRvle52Qed5hIAaH2ukuRhp8YN5zz3dEUIB?= =?us-ascii?Q?1R2uTd0jj/m37HulRR25hjPouWrkhyDRNPgIi6bUB/kDJlaHJ9NWVgXRIC8c?= =?us-ascii?Q?ZWckdhXdTyKZYFS/XrYpih7RE5a2fr8hiAWvnZXgs2zZy8xrqDMpYUhmcfg+?= =?us-ascii?Q?wZ+8E87WRWwcT7tUIA2ivGoDwVbNSa1ggXod2fmqtbwoga3n+vCKmuV5pHoy?= =?us-ascii?Q?unJqPIkl+sa3OikVUAcD2H3jrM11ulcDYwka1siybQeOAGp64cWNmNs8XMNf?= =?us-ascii?Q?mU9IJKO0u61cpJCPKh0scpZts+JQUTvBBOsD3jR7LI5U8/hJBTYKH1r69cM9?= =?us-ascii?Q?6M4ZPRORTigGoQ7qASCSbLN9gQUBlKWz9BEOoQKrQcssOlkP6GH9rEjIR3Qm?= =?us-ascii?Q?tVY4K+jtIr46fyOdxBo+zvuuXHYGXh25J9ox7Eyi6EiGjZseDbuQldF/VTSI?= =?us-ascii?Q?N6Gd9g4O09Y5XlmCx3k608U+uxD0hhp2aJNjZodGl9q2JZXvsb5AJxVxJ+L2?= =?us-ascii?Q?aFh0z5roEsc2CTd2qCQ0mNi55TPyjTt/eg/T8uZuOoIDHFaQ1H/sAZoVUAkY?= =?us-ascii?Q?e/hIGopZsb7BRdMxkWttHW9QZ4kklXxYUnOPQZ3WlkKsNa06edkImrBZkmX0?= =?us-ascii?Q?w2CSXDUv6g8H9vHcolnw2lN4C9jDazpgFyBj8QrNQMNGMLKQLZQe9qGkfdUY?= =?us-ascii?Q?YNVwgWQ0zu0=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)(7416014)(376014)(366016)(1800799024);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?gzw6yDoJaf9SEj5i6qGFftaIXl4gy4M24AMHxBa0Cm/YQ8IL5EiD25AG6n2a?= =?us-ascii?Q?Va11IwaS6J5QWNLGZCxF7K5RqVaUjsccLbmvHc9gAf1kFEEL4c78qz/4gYfE?= =?us-ascii?Q?0DWEK366cg7Z/WXu4KNhuwOmCRiDWko7CqPNVRiOXGcN9jpkw7aAk95DWzcx?= =?us-ascii?Q?OQ243GozWV0gfmuBfyxs5CBVsp6RgdEiqQRf96TUtE9GNbgv48pTfkip9Tu/?= =?us-ascii?Q?qsZlKG4PiZJQMhWqFQXUIqFf8QXcB/LpQ7ce9Y3Ttw8NNdDV99Itcd6wp+9W?= =?us-ascii?Q?eFo4Uqou2MOLyiepZYIjpiWvgJ5UAaaj9+LvhNmqNjx3YQ2+FMLlAIMZDM4N?= =?us-ascii?Q?m78h9Hy4KAYoADb1ZGcnTyPQa04OebzILxMOaQkbhnEYUweA8qBTCynh6l5a?= =?us-ascii?Q?wTVmLg8/tMo9CBYVAgUlm+gCTaM8wcjrKLruEfKGnTkLaf2iuGnUxuh8BUKl?= =?us-ascii?Q?zLQbPcZvu3dwDSmFFfFWj4snvshTVVcflayzW3GWr+xEyyA+ZQ/y29yTA4aH?= =?us-ascii?Q?VJEqh6GEUEVoO6sh2UuedFhL67HpDsOXxo0+6x9afytAbd/Y1g4Wc04XFF7E?= =?us-ascii?Q?bIxwAosG0v1RosU3aMs22/ND+IyfqrnzFpjliMJKamNA412IADioVxaA1wzw?= =?us-ascii?Q?7C4l0FDXTqfw8Pxp2O8vjf3DKchwjzi6NekPVwNsee/r2sb4VTPhMU1gPqD0?= =?us-ascii?Q?blh4NhjYH1xXFInsOUBWkQT/2wLFXviIcKAFJLMmK/Lzgjh6jeodZOa7FdOt?= =?us-ascii?Q?r3Z4qZttB1EHUMMW67YwWmv/cb50DCXbQL1ouPhQO42/YGuwnerzUWp11JNs?= =?us-ascii?Q?whVU6kIV7MWVknZyVucHaweRlwGantp3EDZ3Q9I2caJAN0+plK8D6MF7CfvI?= =?us-ascii?Q?nI6GNkmsfkQHIQrQ/NNoxzMOPy9RwCt8KD37s5/X5uqfeIuefmwr3X5ZmJGq?= =?us-ascii?Q?n9eT1gtPjHH8+KUtms5+0O7InjjAkePJIxijTkjhLop1YImAf2M+Ta1JjZkp?= =?us-ascii?Q?FdPf9AUxBtqx0FGENVBgNdid0ARQFrt/1K1BJlcgsqI5tgkiMnMgtnpGQPxz?= =?us-ascii?Q?/mplGod8uCmh2RilKuYkxpc6avCLU86XY2J9iF0uLM568ewOdYutRfPIUIai?= =?us-ascii?Q?uXbFJXIKllrQurJGqh0rawVByfclDpaHGBbhlqFW5ToOHv/sZ40z/4wkMXyQ?= =?us-ascii?Q?6h56iII10vWmsqlKhGdsXXPcMqT68mf5AdX8ITAo+ZL//49OqHSNACNZ92Wp?= =?us-ascii?Q?VjeFmPvBjqJMwSCayv05dVjm7TxRlZ36X7vaoZyCCvNBTiYvSx+oY1m7oNaX?= =?us-ascii?Q?cCErjU/mjalOpqlMho8m3NCAqgmSoz9/OJa8C+fdPoxlBhvxndb70RwNMLG8?= =?us-ascii?Q?aFQLT9yfUDaKuOa71K9m0wE158eru8i9B450nYwHB6B4j3B9PBV6vlgA8s+D?= =?us-ascii?Q?MrhD6kjsY32nEMZ3bNpB+GD7waWtgWdR0QpXDdPuagvSGi76mlFXZ+NL1k2g?= =?us-ascii?Q?ePYY7Lp0wtIec715sKB4z1L8tu8RosKUcS/sRD8+leHYpZTN69Xw+tbREV8e?= =?us-ascii?Q?wrYzaxBWLO//SX5FqvXzBnWhE++bfJREsES4+fZNd+LJ9UcLJUWzSmBYp1m1?= =?us-ascii?Q?1A=3D=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: 4ELXEb2N7jHrC4ETRAJGxcoiDJovLKj8LkzKQ0PX+Lvxu6HMsNPg2jnN7gNRhHBuI6PVz+Y1/7CVCr1yV9jTCUywfgWpYQzX2Un9fB5XsLAw+lX3JryEALF+gYsK5SNOEk28syfHJMzy+sjIl2YbffoOJLznTlQnaoVk122EYLTcVN4JyIYJq7EYP4yH895z3IkkYwUfVN7ZLChxQXfagb5LrjX+skUlbbgLVg27NYZRRXTXFMXE1wwRAQIeJOMvh6nKmkZNYiyLiY4/3+2PKzpv4Rljr6HoziZpFZPKZrXdYhkQTDeEqmSQyaz/PVTuVrzE5IrbFnlmk3QmwvMyDJD2SO+sFygr39rExfVjDmkmWkgDRGOTBb69ClzqPjJ/hOzQjE0m3JNJE3o/yHLdQTv6fDsnBAL4gvsiPvwaHTCqXplGW6+Y8qQScfe+C1zButCqf+UhDt9L4J0f0KM3o8rQJrfOY1pYVTQ/eGdF6PYig5tAAtT/5FpBhdrT1WXnhu0CW89QU4n1nz1rMmHkxAwksV21Prt4s3Ovd3DQXJ2pJN8/59BHoYwnupXeyEcn+T1adY9+BT7v9nsnc+2sDWWTirqHi5OBuBKHOg184/A= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 6ba9a5ad-afff-4726-6f89-08ddbd172954 X-MS-Exchange-CrossTenant-AuthSource: DM4PR10MB8218.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Jul 2025 05:28:53.2377 (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: JAqoNIOTuI51ZKGuH1YYY/2cd8mZnigJ4HyGEdslX1cnZErHYD+/sxXfznWiqV1a7iZ0RecXS3teyNxC8IHDDhaJqehdWzh7sVlZ2f+XxRQ= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM3PPF00080FB4B X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1099,Hydra:6.1.7,FMLib:17.12.80.40 definitions=2025-07-04_07,2025-07-06_01,2025-03-28_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 spamscore=0 phishscore=0 bulkscore=0 malwarescore=0 mlxscore=0 mlxlogscore=999 adultscore=0 suspectscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2505160000 definitions=main-2507070030 X-Authority-Analysis: v=2.4 cv=NrbRc9dJ c=1 sm=1 tr=0 ts=686b5b1e 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=0r5cTyXUqGrpW3ZitcIA:9 X-Proofpoint-GUID: PV-Wt5TCpj7dc8Y50wbMdzppKaAxjIcc X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwNzA3MDAyOSBTYWx0ZWRfXxlcHcufSU4YN VBb8DPdB66j4diR5AA0gcvIiSiuI27wi1Z1iQ9bFwNFpb4BCMF8883G/KzAdu0dLOQ0aWfFh7Z8 xua/Hc326Lu+N1xaFi5sVN9Sw4otDlO3xyNq55eRj3rJjAkmQlzVNBWy1g9BSPt44UzqPJfBAh4 NNHRlGC1rMrJJO2X7LogauHf7Queq/kgfWqKf9OMsif9tsL7UmXDKFvXCQDTZSXW2JawDdWvd+L IiyxczL+EonlaxKOhN8gNtPMF4fq7WOdMWVdu8f3jnAW0wCp9TNV7WgFtm6jwMI+wErTEwOrigx HH5L92sg5QUj752bmB09zG2wkXLw5biMrC4nUzcH0DGCVyKOqxc8KRnHi0WA1SsCF/gls54YtIL 4vl593QyqlnM06Drj73Z45lQIalo5oW9vbXipCDF406S1eIAm+PQglrnU049F63AMa2UcRox X-Proofpoint-ORIG-GUID: PV-Wt5TCpj7dc8Y50wbMdzppKaAxjIcc 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. Having refactored mremap code to aggregate per-VMA and parameter checks, we are now in a position to permit this kind of move. We do so by detecting if this is a move-only operation up-front, and then utilising a separate code path via remap_move() rather than the ordinary single-VMA path. There are two tasks that occur outside of the mmap write lock - userfaultfd notification and population of unmapped regions of expanded VMAs should the VMA be mlock()'d. The latter doesn't apply, as this is logic for a move only and thus no expansion can take place. In the former case, we explicitly disallow multi-VMA operations on uffd-armed VMAs. The mmap lock is never dropped in the move-only case, this only occurs on a VMA shrink. We take care to handle cases where a VMA merge has occurred, by resetting the VMA iterator in such instances. We needn't worry about self-merges, as in those cases we would, by definition, not be spanning multiple VMAs. The overlapping range test is performed on the whole range so specifically disallows this. Signed-off-by: Lorenzo Stoakes --- mm/mremap.c | 106 ++++++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 99 insertions(+), 7 deletions(-) diff --git a/mm/mremap.c b/mm/mremap.c index 28e776cddc08..2e6005e1d22c 100644 --- a/mm/mremap.c +++ b/mm/mremap.c @@ -69,6 +69,8 @@ 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 multi_vma; /* Is >1 VMA being moved? */ + bool vma_reset; /* Was the VMA merged/unmap occur? */ }; =20 static pud_t *get_old_pud(struct mm_struct *mm, unsigned long addr) @@ -1111,6 +1113,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->vma_reset =3D true; if (err) { /* OOM: unable to split vma, just get accounts right */ vm_acct_memory(len >> PAGE_SHIFT); @@ -1181,6 +1184,7 @@ static int copy_vma_and_data(struct vma_remap_struct = *vrm, =20 new_vma =3D copy_vma(&vma, vrm->new_addr, vrm->new_len, new_pgoff, &pmc.need_rmap_locks); + vrm->vma_reset =3D vma !=3D vrm->vma; if (!new_vma) { vrm_uncharge(vrm); *new_vma_ptr =3D NULL; @@ -1325,6 +1329,7 @@ static unsigned long shrink_vma(struct vma_remap_stru= ct *vrm, res =3D do_vmi_munmap(&vmi, mm, unmap_start, unmap_bytes, vrm->uf_unmap, drop_lock); vrm->vma =3D NULL; /* Invalidated. */ + vrm->vma_reset =3D true; if (res) return res; =20 @@ -1362,6 +1367,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->vma_reset =3D true; if (err) return err; =20 @@ -1581,6 +1587,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_implies_new_addr(vrm)) + 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; @@ -1644,10 +1662,29 @@ static int check_prep_vma(struct vma_remap_struct *= vrm) (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 + /* + * We can't support moving multiple uffd VMAs as notify requires mmap + * lock to be dropped. + */ + if (vrm->multi_vma && userfaultfd_armed(vma)) + return -EINVAL; + if (new_len <=3D old_len) return 0; =20 @@ -1744,6 +1781,57 @@ 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; + unsigned long prev_addr =3D start; + 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) { + unsigned long addr =3D max(vma->vm_start, start); + unsigned long len =3D min(end, vma->vm_end) - addr; + unsigned long offset =3D addr - start; + unsigned long res; + + /* Merged with self, move on. */ + if (vrm->multi_vma && prev_addr =3D=3D addr) + continue; + + vrm->vma =3D vma; + vrm->addr =3D addr; + vrm->new_addr =3D new_addr + offset; + vrm->old_len =3D vrm->new_len =3D len; + + res =3D check_prep_vma(vrm); + if (!res) + res =3D mremap_to(vrm); + if (IS_ERR_VALUE(res)) + return res; + + /* 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->vma_reset) { + vma_iter_reset(&vmi); + vrm->vma_reset =3D false; + } + vrm->multi_vma =3D true; + prev_addr =3D addr; + } + + return new_addr; +} + static unsigned long do_mremap(struct vma_remap_struct *vrm) { struct mm_struct *mm =3D current->mm; @@ -1761,13 +1849,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.0 From nobody Tue Oct 7 19:50:49 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 7829226E712; Mon, 7 Jul 2025 05:30:13 +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=1751866215; cv=fail; b=b8nMQ19PMlNTttV3SXCCbGRIwEGgB2t/doE3Ky1F97nMTuP7hIaC5NVYsJktzPmT0RYJtkPMSJ1apLHk51zq5ISgu0Z2w7sd6FI6/IR6O45RrdwhKXJr8RNL3aRX4o0AhKFd8ao6bet3EmCzPRbysI5KQtDrr7rNOjoazBE27os= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1751866215; c=relaxed/simple; bh=eX3Bt/Q2HgquhsnAvOucKRuVpaGYip2k2QEYy+Ssdtc=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=BNFYrEvUD75xK08wHGfmN4p3H8duwcgPAOR8yG5hfh5aQUNopoWfxDIY6C2EJXgx6v8/lxsg/w9PyMhKlPemtdqlveEL8wDzAjQ6YZXGnPRe5uhoHf6u9HLUa2vFtdaaEqIlgGWhg6PL8akzCq0AmXnxQY6MHAvcVu9Ya4/G/60= 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=REwHbmLh; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=xLLtHkOu; 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="REwHbmLh"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="xLLtHkOu" 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 566NoX45012289; Mon, 7 Jul 2025 05:29:03 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=cEMKcr1TletxdCHvl0D07RiYtYzAexLFvYg3R7snJ/0=; b= REwHbmLhjdNP+Bb2cE1MrtKfCRqt0cfZ3f0ernmFi3SnWxGatWOItthBDSyu2Cdh PJJZBP6EXKuLZ9wBsZjvwheLcbMTpfYgs8rhl+QQUAF1ruTf8Q+9dKqBYjmBKCRi qlzHuLIHujSmPsi91uMAh2tj7xJAJv1EploXPnBYteCJl9lde16UFwX61dswmejS VEycD9oW5aoxxHABZ5fZSOcb4Fw+xK+lcjE2MYGrKbb+NCWC+K5zuyhO2GfXJE4x +/iWBT78n2sJD/LvdMDAbFe2KRBAr0KPY1e0zDKPYUY8yfn9u/hygD8iTGrh/2cN b4DJP9VwgOeUYAqbpQIZTw== Received: from phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta03.appoci.oracle.com [138.1.37.129]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 47ptyfj0vt-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 07 Jul 2025 05:29:02 +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 5672PVBw024285; Mon, 7 Jul 2025 05:29:02 GMT Received: from nam04-bn8-obe.outbound.protection.outlook.com (mail-bn8nam04on2065.outbound.protection.outlook.com [40.107.100.65]) by phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 47ptg82hd8-10 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 07 Jul 2025 05:29:02 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=JnuegrLYwUBeTOW9fVRU8szGac9D1YgX0DUyX5qAQ/hQ7niE7yScJVesUHa74HZJAyKAUwc94y3Pw6tEs/J5YOykSVjF6cdDILUNX/5U8IhmMbR3doXQ0y7ofrA3L6rY6sum76e7ASW8kpe2Q1+XEiYr1tg3GNPCROsIG86uYCP1G/SPVI+YyQUpowYZTx1BZGCsUHBfMv3juLoPebupd0CAx7FmXL4V4ReE7LpfZYgJ7EUg2nE+OZ/XZSvAf5av+b1e363zeSojr58O5HNo6kM23kh5/oik8A2Te2MkKLsbkQzlhxew6sfmFPBfXhQJDQITeIL52JCbU8rSqbE1wA== 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=cEMKcr1TletxdCHvl0D07RiYtYzAexLFvYg3R7snJ/0=; b=ti96Ase7q8okmt+LE9AG3BY/Mg6595f34sEIuMek/4l7tzMU8ug6lvzfk+W5G6yFj4EhqxIDUADusQQ4AAnNBk+CRy9yaJIUpQLdgXuhpqJNV84DwKJQQ+/COJ+zhzBW4Z1BIRxKuQ5vIYaKJms1eHF5JcUhLZcFjE9a9/x/lWhrD2phxOM1+bzjZXu5vK38I89oi51W8+nGhd7kAaPeNSo1wmC+qRd20vmD/8FBcPJGMSMhh79ALnyimMTH7+A+Pbok1xRYxwhoZBXkmYHvc4GZX6PEVQu+e6YhNC7mSzp3b6ZLnDN7TeTuJZeT9GISwBt2Y+4KRc6PhSft6jqJjw== 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=cEMKcr1TletxdCHvl0D07RiYtYzAexLFvYg3R7snJ/0=; b=xLLtHkOudOALaCfF6aKlKFp//iZrSqH5gqrQyLIGSjDqoXu8uKTG4JvN09bdLWKktynFnxOzKZZzR9/uyCQWH3iYuhbyLWImrGrxGuY1yduoGkwXBjlebhYPOuldg2sMsrNfs8ao83niH2lv+NME87GtYtow7u9DRAqxsmmkqoo= Received: from DM4PR10MB8218.namprd10.prod.outlook.com (2603:10b6:8:1cc::16) by DM3PPF00080FB4B.namprd10.prod.outlook.com (2603:10b6:f:fc00::c04) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8901.23; Mon, 7 Jul 2025 05:28:55 +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.8901.024; Mon, 7 Jul 2025 05:28:55 +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-kselftest@vger.kernel.org Subject: [PATCH 10/10] tools/testing/selftests: extend mremap_test to test multi-VMA mremap Date: Mon, 7 Jul 2025 06:27:53 +0100 Message-ID: X-Mailer: git-send-email 2.50.0 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: LO2P265CA0322.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:a4::22) 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_|DM3PPF00080FB4B:EE_ X-MS-Office365-Filtering-Correlation-Id: 2caa6c4e-27dc-4dc2-c5c4-08ddbd172a96 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|7416014|376014|366016|1800799024; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?yeX1KeiATtYcfLn6YcdZYiOvmYDAnQTKPjlxyLoB+OIbQ8EFPUb//ZdiXWoh?= =?us-ascii?Q?+648zRu4NlnyemLL/mGwOI8vapYQyDFNo64VN0Xu/rqb8+lMTjJSp3glbFnA?= =?us-ascii?Q?SiC4UCW805q6D2+prc5+pVqseBuw0uteGQvM5FfSpDzmfB2k7me5vGXlaX5m?= =?us-ascii?Q?cpYY8qwZVE7yK81TogpgCMUEvijsvJ9ur54eTKKfqX6BkrPTpI+b/fMm5grD?= =?us-ascii?Q?syboO5CPvinZJ4NBmq5Jakl2wXF/bMhrB1rWmk6S9z5x7kQPexgng/amH/zR?= =?us-ascii?Q?UIUkfbpmRxglFaU3IkX+6ARcTW6bZ7NbFdIGzLYbYv8712TRSdD3ybrTmqYx?= =?us-ascii?Q?xnPKpuD4ChrKVbpstXm7o4Nkub+EmiCsIIkdqQ9L4tbsMdJnynFXk94Erviw?= =?us-ascii?Q?hISAIalli/8+LenTgfdZ3xAuttwI26i2XtgKFTGK5QwbNMc3C99gfoN4+kJg?= =?us-ascii?Q?Jxzchea30vPXKOyTdK2qK3ziiJOISvSA6971UYLF15cvMVaUABbZiO6SYI8K?= =?us-ascii?Q?J0cnqwTRxITfG/V71CEWm8Fb+YnTz3bCm/yhcft6oI/HH/sEc9Nm8sJkmI6Q?= =?us-ascii?Q?Sbizm9/N9RgAvjkRh6ex6HltnWxgQ3v25FpPhMkyjYryp6mxncPJJuOQ6BKH?= =?us-ascii?Q?r3y7oDTuZEWfgjR99GIIRSjh/iMVwg+wiNtlVYbfXH1G4kqMg47SKWnuFN59?= =?us-ascii?Q?hARMruRNH7mR0WbXigG9yexRHMruNPTCmf5bMA8utHxIudsw+A7PQT8Yi5ij?= =?us-ascii?Q?j5WF9VH6HWDHzgI3Bq/vIy9TsHctFjpL2RZx42DzXhBl7mjzSuZxyUcTvcW/?= =?us-ascii?Q?JdXX/XvPV9afko0YqJAsar/5dwXfZ3GvtYhcsIjoT52tVg4YOz69oTWvL57b?= =?us-ascii?Q?bpnYhoxULGmeRuDLQWdGC5dAJvTBE398tukPCerFfFzqg8b3KnYHItyi4wRA?= =?us-ascii?Q?zEuZBpuEt5FKgk13QkIyM668oz156NKbSu25P3BohilgSK2PAGCMbx1urMzT?= =?us-ascii?Q?CzxxUC6QcErMvwKNqdgi0We8PpE/U9JxXiArnHW0UWc37r2MezdIyw5jpO/Q?= =?us-ascii?Q?Mhs+AhqfOXHcItBqnOTlqDXemwbAv+oku7nnfg6+dWuOy890C7cgUHnleGIl?= =?us-ascii?Q?T3V8dFDCO+y0BR1nmVG2RxbprUz6kkaaDJOw3R5fV8jsYy7peUOzOzoidmnX?= =?us-ascii?Q?B445CYfnaFb/Y0roUCJ6999BWzfMFkPOooXY32Yrd/Ty9J3CXHtGGXOlVnYY?= =?us-ascii?Q?F1rb4RLRFsUJvngmKj4zkvGFO9+di3j6VtPAQFYtD/+IUWCt/uHBv99sdxGR?= =?us-ascii?Q?0c1gbc+vNlCAyMQCFXCcZF+JCOsttGImug3ngh9Vp9fYy11bo66+8MI9ucZ7?= =?us-ascii?Q?WP3S2FJlhQNImy8H9vQId1Y1jtM6+reEgt8QpmqUCSDKsIf1oA=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)(7416014)(376014)(366016)(1800799024);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?7HNQfq/XXmAlaCIFB66iEUWL5kEI2DyvU6RJVQGB5TUhWzdbojgIBSSkBnmN?= =?us-ascii?Q?8xwdn92ljSLfc64l9cIX27moMxzh4ab7MC6Eoz2mxdPCcRE7w2tKNKbI3gXm?= =?us-ascii?Q?PSdMoxIc9GPdwxtkjensZlzRL7VdQfnyp0IWf6HPj6NOzrPOIydvFiDaqQLT?= =?us-ascii?Q?mCaQJYYTIlO5yZFVK16ogKfX6QUmtRhiS7pMHnqnyb85hx30FUufjdWeTOAj?= =?us-ascii?Q?P5aFlGfr3kmWuMw6fPj2TKEYv7DdKttMuxyCG6qyBJQwXHM6nHivOi7QWMmI?= =?us-ascii?Q?ZmXNfheKmw0TL1JbR0J+FT5xrcwmhVTSDc1cQIlQTV4l+Sm4Gr7FpqxllkDT?= =?us-ascii?Q?HB213qoXvteb3bLVabrO1UfxknhnDxDIiAz21u0WNKBp/ouMHkB0xh3hHT4d?= =?us-ascii?Q?MJ5ZSEkYLqaFsbp3GDVw6izI5jLcKbzXJAjkDjeV+emVKG03/WcDeox5Kjy5?= =?us-ascii?Q?ixxWXg1xB8zimhgwaXHKhtLfQckwrCTPty+nzLY1DxopyYGWupvfVserjWfF?= =?us-ascii?Q?TCQ1o/N9IME8kEIyKYv7NCSZtp9jUP7zKnn4Ls8sLTRoK850s9VQUePPE/Eq?= =?us-ascii?Q?TAPXnOhWS5z83yRDOY8Tw/QdtSKny50Jx3C+bkh2W+9wEafIZ77pjPIPeWKY?= =?us-ascii?Q?whbrwLeX9IrB694La1s8fXe86rpcQLqW1IMuTYeeV6f+3bD/8mJNFi5kbXF+?= =?us-ascii?Q?vScZnrKU95dWDrKgAZhAGRKssGgoJj0IAQD88mTH5A3Vr7hmKDCwGY7MDUSP?= =?us-ascii?Q?B8jsEPb8PKCiHwyEcKG4AGkv46yPck/9129zQsNPigS8fUEQMjSrIWb6SykO?= =?us-ascii?Q?5t5sbCrw/y5ljBlLdLDUXmdPHiU0BzJvvPUTbxXeBvodcJW8ZO6Vy8lQDKxC?= =?us-ascii?Q?otHEZ+bGViodP4KGWyD/FcfvW0bPyjH4PoN/9V7meUxqXi3OWH0q7TQFSQhL?= =?us-ascii?Q?J9jXcYYlOt+blQzMirvpU4qzFJsev0MCEmqzZRoqGcJb5/ekTas3V/bLwkSe?= =?us-ascii?Q?NMjqnRdhSnIZwwDrjbROmeaapjtzGNxZ41orBcUn7ajhCcetyiGLmuu0AzRv?= =?us-ascii?Q?vTlISAMPKUBuSNLsHDTUGiqabkVgMXZfW5ey0VPF+3olAiJcpZ4a+7hjZRYV?= =?us-ascii?Q?LM6AwgkFh81RE3Ne+d1hMufJ0fpBbgZpaiT3xcJV+f+Ba3OTWy0hJidM0kB6?= =?us-ascii?Q?fHLyaMOzIRQy6gQAxVT5APg2prdboEDFahd6scYsDKasgFLW4y2E9U1nAUDj?= =?us-ascii?Q?On38ro9FdmC/aumxXBCuKhGC8TCss17mE3neK1Q3AbvZwwrJhKzZWJB3FtEz?= =?us-ascii?Q?N4uTo6/YP/KSKjfyK9dn/Sw1+YiDqQ49v7B3n8qZYA/xo4w1/FMiKjQZmX0m?= =?us-ascii?Q?c03rAjli1IPeRtbzr4wC5T8GkGN/gycgaZHHQ6EFInfLMzXHfQZDQFjnFCIs?= =?us-ascii?Q?JTj8UAropp7vvyFRkLCqt4oAI1fcF1aAticgy97h1tUfhuoFeF5c9OCa3lzx?= =?us-ascii?Q?6YXA2MkEXoUH/E++Xh81oq7xZNRMLBFA1X0Na/fSuY1T/zNh5eED2eqxqtDI?= =?us-ascii?Q?aLU4hZm+ruMTpN2S3ixW5MdDYjHuiNwVCG+jL2N4LhmGDtBZ1hgMyOO75+pr?= =?us-ascii?Q?1Q=3D=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: L1LueSL9HyETGNcm5r0Eie4Cs8Iwc6WKVRk17Vw+9mtVH3Dmfcgkf4+HwnEYTQYfTUhHkfHT8pE9aZDH+YerXCCknYtN+hDqCr7RmNyVUduUghwEWKzTFMLLedDJa88d+RvWviIebEhXdrXm8FYykRakaMh7kJYcS9S5m/T+PHijlYO0c3VXExf/KEjtPFLmx1BcvPg28EuIM5rTBrlf0VXxeoHBLBWggIDnVE93AggEg6FrBR/4rbaVogaCv42ztIlEBvgfVzUPkX6722YI56Fl+cxkTgyLdrpp5Bn+rw7+EjN5ts/yul7NxraHDnc4ZUYjWigy1qzv5oS0me8mSHybWsXxuvM3fyyHLtRs/k1+iHrFfBT/KiRsqhMXB9kpCUwH25JvO7RtP4qL4HtCWcig5cseuT2gsyLl1eVIVFtdFc/GKDxg6rFe9ib1dBi28BSrL9t1CQ6Q8xaf10OXdbvTFEH5zR8C6QMiySR8ZzpqDyy193YMGhonTNiWEW9Ao83yKiNtcTyjZs0fRu2uhnNjr/CqiWfmUs44B+t6ZmK7zotfoEIXqH049lpji3vYFDEHEmEj4sdHyYWg4w9UIITt2ueXZ6yF1eNRaD9H3Wg= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 2caa6c4e-27dc-4dc2-c5c4-08ddbd172a96 X-MS-Exchange-CrossTenant-AuthSource: DM4PR10MB8218.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Jul 2025 05:28:55.3436 (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: YpzYQeJ27u1qZoZNKu38Tn3I31/+SoGD75xaZMHXHCTXOyrVBKXymhYDq1wwWO0Qgd9Fq1xbc0uygJ8WQwfOo8XVHuKZYClN7SLZK3VyQzw= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM3PPF00080FB4B X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1099,Hydra:6.1.7,FMLib:17.12.80.40 definitions=2025-07-04_07,2025-07-06_01,2025-03-28_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 spamscore=0 phishscore=0 bulkscore=0 malwarescore=0 mlxscore=0 mlxlogscore=999 adultscore=0 suspectscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2505160000 definitions=main-2507070030 X-Authority-Analysis: v=2.4 cv=NrbRc9dJ c=1 sm=1 tr=0 ts=686b5b1e 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=GuY5gsdr9MwsYxRlPWUA:9 X-Proofpoint-GUID: Qrt-xRKm0-x2_V3sjSvFPW2zdhXLzBXH X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwNzA3MDAyOSBTYWx0ZWRfXwCz4XukYCsjt c8faWRFEiyvYjxP2Ufd+qmncV18yxX8LFpFI5wN3AAYSFFiiR7AOsgUP8Wbnr5Em43t7O/JWYsD z0C4BGj44/LL6pNMdCJAbmmEdDwLH4EqadCkQvZHA2VZJ5wvw6+LWZsJsXsyZYdFb/2JgzJA14M PZyxORAdR7SmNuSHMUZsqfn4BO1WWceaFO8D6KkIcDQtI8CWz79DM4q5C7rPtQbvmE+XX8CNxnr ISf91WIeDO1/PBN3YKN2NxF6wb3y5BFeiAMzwt7MRLmr7rEZdbjnq/q1PVQW7F89ty7kyLCTRUv zCaC5+gtCRBLHuWqPhNrnY/u49ObU3kVrLvnEJwKG4IANoA+UHrpKAt8liRVcB57qvYg7h+Embx QNxEcYYhAIVyCbkJeArZhHeFlpSAOc/icwIAQw8HVRhQOZcQHgzi0JUpBfW1+RkGikGIaspd X-Proofpoint-ORIG-GUID: Qrt-xRKm0-x2_V3sjSvFPW2zdhXLzBXH 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 | 145 ++++++++++++++++++++++- 1 file changed, 144 insertions(+), 1 deletion(-) diff --git a/tools/testing/selftests/mm/mremap_test.c b/tools/testing/selft= ests/mm/mremap_test.c index bb84476a177f..36b93a421161 100644 --- a/tools/testing/selftests/mm/mremap_test.c +++ b/tools/testing/selftests/mm/mremap_test.c @@ -380,6 +380,148 @@ 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; + } + + /* + * 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; + } + + 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 +863,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 +990,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.0