From nobody Thu Oct 2 21:39:18 2025 Received: from mx0b-00069f02.pphosted.com (mx0b-00069f02.pphosted.com [205.220.177.32]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id E4A142F0C6C; Wed, 10 Sep 2025 20:23:16 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=205.220.177.32 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757535800; cv=fail; b=oAULuhCvDdnR4KpeoFFieHJ2kTYE6TDJAl6FETziz/M5mkB0lISwftLxJ8uWQNGYRHf2IA9H7w343g1UXyXj5SW0rPOHzSFLO7rqm9Irq1/Bz2K2H3sezAsHIisEYq6PeEqITex3ZFa1Ox29Z39pVEaor5NxV+eZcI4pqp3wFE4= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757535800; c=relaxed/simple; bh=OmBk45+xqox65yLOlKChKPb3T2sYjfHosl3O0JyXpDk=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=HV95IteTNt6/42ApglPSNWfbH2/8b2zhhRYvw6in6XxHfLJTPl2DqoCPaaav+r1aW+ArawkG2lPW/JwrRo8itl5W60uQ7jmzc8mm1qVpeiVpN1Zo4eS94QnCE5gjyQHE+p0niU4z1AwEVPRAhBnZ8q6FjxyX9aPDGCZUGJ/baNY= 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=LGv1E2t9; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=o545mt3E; arc=fail smtp.client-ip=205.220.177.32 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oracle.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oracle.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=oracle.com header.i=@oracle.com header.b="LGv1E2t9"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="o545mt3E" Received: from pps.filterd (m0246632.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 58AGfiCU009725; Wed, 10 Sep 2025 20:22:35 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=AmUcjNy47CjjgkAwV08cKlUqjlePUW7BN5yFydg4gC4=; b= LGv1E2t9XxJ78GktcU7luDJ8lMbhag9dCfTDKYCLbgb3me25kzVh2ZY1HVRTpWa8 JGz+DbWV1RFoVUY2P1c8Fo3M28iHVH/Qt2f1dCsz8Atm0qQU1ejkIV1GoBJ1Qd3W R5zym60NaSdQGYEx90ATlln6Ovy36tbvVrKJAV7l0Hh6wZ7JT1dvPzMr4vNHNZb+ flsQHVkpb6mRIpUpWBuDp5xxNrjsYQ0EmJ+oVePu0QgdCc0+I94A17PHOonlTyT5 Je+OQdni8R/C+sCcBzoCzYyFXgsqrQZxqSdF2Fa4GHWOYM/9Y7tZWQXjISSplEv0 HuqQnAp6RDdz4guPjjQCvg== Received: from phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta02.appoci.oracle.com [147.154.114.232]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 4922shvv1h-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 10 Sep 2025 20:22:35 +0000 (GMT) Received: from pps.filterd (phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com [127.0.0.1]) by phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com (8.18.1.2/8.18.1.2) with ESMTP id 58AK3dAp030716; Wed, 10 Sep 2025 20:22:34 GMT Received: from bn8pr05cu002.outbound.protection.outlook.com (mail-eastus2azon11011034.outbound.protection.outlook.com [52.101.57.34]) by phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 490bdbfhjs-2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 10 Sep 2025 20:22:34 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=BOLownyJS118HOK7Q0fEk7IiEf2EvkkhFR1R8PFRQ311QY2w0ovTZ8b2+UDaSiG/JlGYnkBVONbuz80sJwnhpgQ2cA0WOS0F85Qlt0rkj8hWiX2LiAbaSeWcDo+gcABCPv36hMMHq1sSag+ahHd/whAwfqwCgLaeF/tNaNnrVl2hFtTMFMPOocZdZgu4TUX2m2a3UIU22+8+TB8ZGRPGw179j2h9lu1br2Z9d/hLQsT48/P54vgEG8n1gJkSPRlZokCR2arBalcJZ7PJlZpDv2BWfjpCC0sxx4QoRmBSwf+ndb6bGa88R9Hm68INRhMofGz16AmVIWCj8cLiLIVrcg== 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=AmUcjNy47CjjgkAwV08cKlUqjlePUW7BN5yFydg4gC4=; b=UnSKrnrpuCJL7Nz1S/vPYB9dMcAfV12RoIv6Fm8Q3K1go4vcftJMQgsqdzOatJvO6TMHA5PUiFcNt5Nbon6k4/znsUmQgu8fLTZ0sk1Fm1hVJSNgYDvmz7QZlR0wKgJq8gfUddjEe+qcukvnzt+exkwOp4Di1fAJg0Uajui7KWXw2sjtUsfYXryXNH2F3hpE90L9wjh7mlIrRZx95WqO6MLa0u2Aq6miVUgq4WB9wxcNXy9svOJgJ11q2aiNR5NAYQBF24yGr3hVRH0yp5AXE2eiYXeG2yAiMF/pQUSRqemk55LSeqwqeRgiFPjzpxkfj9zzlTfoIOqHmIDVlbeEng== 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=AmUcjNy47CjjgkAwV08cKlUqjlePUW7BN5yFydg4gC4=; b=o545mt3ED0WQl20O7W2ieJOvHEoO85qbZf6KTRS2sXVT61p7gHT9gfzBuWOIWLI185MMWix+1LQ8V4bZ9bZ+D57qofVD14VdMt5QJ/JE4wkNFrB3N3VR0Z4/rbX1cFJX+Sj4604cVu6fiRQ3gKuQ2e2yn1IVPlCVzSb2EcLYOjQ= Received: from DM4PR10MB8218.namprd10.prod.outlook.com (2603:10b6:8:1cc::16) by CO6PR10MB5789.namprd10.prod.outlook.com (2603:10b6:303:140::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9094.22; Wed, 10 Sep 2025 20:22:30 +0000 Received: from DM4PR10MB8218.namprd10.prod.outlook.com ([fe80::2650:55cf:2816:5f2]) by DM4PR10MB8218.namprd10.prod.outlook.com ([fe80::2650:55cf:2816:5f2%5]) with mapi id 15.20.9094.021; Wed, 10 Sep 2025 20:22:30 +0000 From: Lorenzo Stoakes To: Andrew Morton Cc: Jonathan Corbet , Matthew Wilcox , Guo Ren , Thomas Bogendoerfer , Heiko Carstens , Vasily Gorbik , Alexander Gordeev , Christian Borntraeger , Sven Schnelle , "David S . Miller" , Andreas Larsson , Arnd Bergmann , Greg Kroah-Hartman , Dan Williams , Vishal Verma , Dave Jiang , Nicolas Pitre , Muchun Song , Oscar Salvador , David Hildenbrand , Konstantin Komarov , Baoquan He , Vivek Goyal , Dave Young , Tony Luck , Reinette Chatre , Dave Martin , James Morse , Alexander Viro , Christian Brauner , Jan Kara , "Liam R . Howlett" , Vlastimil Babka , Mike Rapoport , Suren Baghdasaryan , Michal Hocko , Hugh Dickins , Baolin Wang , Uladzislau Rezki , Dmitry Vyukov , Andrey Konovalov , Jann Horn , Pedro Falcato , linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org, linux-fsdevel@vger.kernel.org, linux-csky@vger.kernel.org, linux-mips@vger.kernel.org, linux-s390@vger.kernel.org, sparclinux@vger.kernel.org, nvdimm@lists.linux.dev, linux-cxl@vger.kernel.org, linux-mm@kvack.org, ntfs3@lists.linux.dev, kexec@lists.infradead.org, kasan-dev@googlegroups.com, Jason Gunthorpe Subject: [PATCH v2 01/16] mm/shmem: update shmem to use mmap_prepare Date: Wed, 10 Sep 2025 21:21:56 +0100 Message-ID: X-Mailer: git-send-email 2.51.0 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: GV2PEPF00004532.SWEP280.PROD.OUTLOOK.COM (2603:10a6:158:401::35d) 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_|CO6PR10MB5789:EE_ X-MS-Office365-Filtering-Correlation-Id: ccf4f7ad-bebc-4e20-c43e-08ddf0a7c45d X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|1800799024|376014|7416014; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?B11zIKsXFrIYiJr20PeoKdAPn+wWU6k5j0lGpTZCHL3/3dtqff5QjWqr8cqv?= =?us-ascii?Q?kQ+A2plbfPMpwIMlkSJSjVgtAwc0r2XV72GsV41FDA3PEXiOvpB+2V0tXIv6?= =?us-ascii?Q?Fx09Crlltsz6HwbVvlNcQ2QPN3gcIicPJqfBY5sQccedqUMIe0J6ZPo+Yy7f?= =?us-ascii?Q?bnnJhZ1rXuta6cgj6rO0yjvYaoCxXEn18z2lbN9JvMk4KC+MtYLrpzfPGL9P?= =?us-ascii?Q?EFz185uDiZHkXE1bczMN+is+zL2mUQOh0dVWFAlKMXQx/2A7hmo9kyZ77dGB?= =?us-ascii?Q?7NPGZmpmBi42kJTKv4wWlckXxSXvMgPp8bCZjTcRa3n5ZXp4rk9J0sL/iakE?= =?us-ascii?Q?uncXdo8C/KUQinawlNnggQUMexl7hNvegG4UYv0BYZ/1Fiy3j529HZmaoyKL?= =?us-ascii?Q?//XvOG0XxHKnIuAnN2XAjUT+6i5kSbFIqUQGilGfwylnf5cZ6NamV4ZoYfUa?= =?us-ascii?Q?wlNlQqGZz+6cIXqPrGpb7uG/7igfxm9RO5r1yPXd5ib4la4b1GhD3g4m9O1K?= =?us-ascii?Q?H8X9VLKMWZYom6PmQPB64HugoqU1yKV2o3qOblDOoQxhxoHF8GS3vrM219tp?= =?us-ascii?Q?eGEVs8CndqqWnjRAfkApXWJl1TmAkBR33cp1WZTgSDsI0ixtDkU4TVd3J/QI?= =?us-ascii?Q?tffFqhORylic/9iz2Q3Ju+uT6pefiTePWNwB8ih4zkgGgBohmsYD8kgk3J9Q?= =?us-ascii?Q?VYDewrdlxGgqPPRG80Vg4V+e81A7dYfLqZbDrrXXyc/V4Gnot0bT22AfidLO?= =?us-ascii?Q?l4qoxqgACVuQvUbWMSDM5r8vrHwuJlGx29Ll/0xTLskLGkoaPhwjVb2rb1k2?= =?us-ascii?Q?lUJ+9vSxekSwgCINCX74bq9ruBjof1Ctt7g1UP6JuALx5w3oMJtbJXpc7ZI7?= =?us-ascii?Q?Ze+CUfJZfvPZHBJJELdm6pvrWzDx+P+Csec9uqVjBeQWCgP7MsCW3V/RuqmC?= =?us-ascii?Q?2zukPnvh5fRpKGGbGSyJXIAN2KblU0hN7R95xofWYew7wN4SZYvTs1aK5D4L?= =?us-ascii?Q?RbwUnwNheklE255s0/XRgzDgqziQnxvfIVEg4azrm5E1XFYiMf/UTOV6J1HA?= =?us-ascii?Q?xgGMEy9Jp4e3EJdKqgrmoepZu+YOyTVn0ODd/NOLa05NEvCmB9aB6i9/UMLS?= =?us-ascii?Q?tjzqsiw8lAaZ1z6+mvtZub1ZFjCSTKnqGZICLKbYcJKVcYCLq+lZnGxuUwMq?= =?us-ascii?Q?0xtZYyKZOybHg3k6jKEykiEOq1Dyf00WhFwqKDsZW1Noqh41/nlD85LR79r1?= =?us-ascii?Q?U/1eCliWOZjAi4/T9GAzFMTQaTlez8rmyuUpmLMONVFjkBNLxupUOhqfyYJD?= =?us-ascii?Q?1bq48M2b6UPmwwXwGVMI5PGgK9fUYlkTSGXSyc7pzA0CdDLItKFpE1fxloJc?= =?us-ascii?Q?6u4ZeVOLyySZJWEy+nnp9G9FvYL56ylnw011dO04ZLjSrFU8QuQwlQajSIM+?= =?us-ascii?Q?vpTc6kpsNR8=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DM4PR10MB8218.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(1800799024)(376014)(7416014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?VsiYuZCMKhXG0nioAlubhjlKmR1Dr8GaZnsOvXWypOzLkyOHS7/PMOQqNHRI?= =?us-ascii?Q?KTakZ2iKBcGjEfBIftIUtYnfC6LfUhOKaFeVdaM+2vwL+mP9mZDLpkS9Ggq1?= =?us-ascii?Q?jkMdjnzCT8DfnNGhqfAu1MXt3c6H9xSophHPPaALp4Csyv4CgA6rL5tblR9r?= =?us-ascii?Q?SB+7UdHUQEv//B6yiPOH8ktapruaJ97uPujmWheAI5Xkwr50jPtuU9EWzJ8w?= =?us-ascii?Q?9OIoGxSOOgmcydCr7D1lDc0MnPEt7xQF6pMt/hLtckOUVCFew1kiftSmMPao?= =?us-ascii?Q?pi04ST9aI8DIW+fH4dhAk6BCJZMD9511vNyYyaiNTh8xEioEir/4Z6RPLJNs?= =?us-ascii?Q?OX5O6jjtdW8d9Vnr3d8DmTkPgTq/l7prqbfd/oWSR+YAjqxnekgYgg4JFcDI?= =?us-ascii?Q?so9P3vpBalIv/77/u7PWe/vuV6FBk1TiMtXO+x2vHlO5mDWDtRvWDPngmjG2?= =?us-ascii?Q?cV1KpthEjXYlx87eHRzFRCuSP5z0kLHYkCZwog2WShAb+wWlg8DR/4HtoAdu?= =?us-ascii?Q?W2HxdgK2o4oQP3uAhfjqiCypQmpkZU0JVYcajmV691oML5zj5+uUEnuWMlC6?= =?us-ascii?Q?3o9EVbON5qOzYSq77LnXR+X0J1UWr4R7EXuRcJcBDm8zhtqXxV2pxwh6JSom?= =?us-ascii?Q?xH0iGmwtq8QdXoGR5EoAgDqT+GFJNj8nZZc12L/6rie4EopYOAjL2b6tKei4?= =?us-ascii?Q?kU0hZA28pTq6YhCiQ2Ps4jAgDuiTQ5M5O75k7sRbPPt5iXf4SaL7UTqq+ZEr?= =?us-ascii?Q?U4jojGr2rrQwHCUJACGMVIuTuMz0gef/cLQswoFU5K3ibSJBN/nDNRFT7ZD9?= =?us-ascii?Q?wz4ECdYfU8o9Lmv9dv5EiTMUs9IYbFq32OVHTsNANSuCCmahS7K1s8N5oky1?= =?us-ascii?Q?fWG5yFewQGhTFxlU/d/qq9n0Xx/Fphx5Kn3YHUF/GxqfbhgCht0fqfPGpk2n?= =?us-ascii?Q?fs8xwVZLAtyLjd2qcLLNWPDjrv8OnGG6NpaLbxTE6n20U1JBzYIQsZwzgbhI?= =?us-ascii?Q?5nD0MwNNUz9OzLVfNyLD2F3iD7m2peOp3HluNC9wSsXxv5vxCUmpK/eAmdYo?= =?us-ascii?Q?Eud115Z1/LXRUm3o0BRK2LOfeaZbFD0BVAFtAqSEnRE8bkSvS4V9DV4yWvyB?= =?us-ascii?Q?loCL9YFx3LbgAyHgJcAczPSqCPRFgUxv/xRSjujh9fRPc5GqtlLaBVPbj5yw?= =?us-ascii?Q?Pr/v3A25+jVF7ikboZoUW4PXbUXcI1EO2nTB6hmdd3OvGmSZUM7h/vAIVNOf?= =?us-ascii?Q?/0KxHkJpg7eTL+9UJLJN7baPwcsyuOWipGb9lIWXc0D76cBKTjQ41PxmXaF8?= =?us-ascii?Q?skBALQRZMB++Iy2qutIoUvf8325QKz2DBpbikBFb8H2oj7X0m0qRoQVS7j+9?= =?us-ascii?Q?7CVE04/UPtNfzVuu1vW6IVDkfPCHvzP9QI7S7EPgRb6yP8wwAM7q3VGwYE3v?= =?us-ascii?Q?IwN0xFWW9LoOqrPfS4ofOFzmUETygaez5wHy7AuzBJFdqGarOje8DPU/PFI+?= =?us-ascii?Q?tMvbUHDTv9tfrzsEAMt711OKUVBeal3BdXyNNzbsYtHXuSfxBnUHIHGdyMBa?= =?us-ascii?Q?9LDgon2cF5hWRh+XewIJcMqsKs9NmlhwoI04PzAwMeIvCGneefYskyo5cLpZ?= =?us-ascii?Q?hA=3D=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: djpwhirJCLPyoghPxLEuYTHGmqZdQ3/6QGJzQZnFNDLF8/9/l54VRyYLfVAP5QT/nFHidCV8YHu9LgXNPZpqsc1j8amL2HfBQ+ZMuHVukfR+S5tg5utPAK569WKAwgu/ESoA6+Hwyh5Vn0BS5p2w9no0OEQ3WOveTY012o2FbCP4rrcCHXIof+EdDuqTFaEvov0/sbgWgz+V3BOvMPi884erLLCmLx4+c32igrNqhbnygUipQ0kyNhd2oFLcVv8v8A6Y6XHNz2poyDH3LWwB16EoQwFPluVF06VHOqm6OJRcXotxcMCxSk3vpROMmXjCnnQAqf9RtZQSFrzQJQR+a3m37g9orFs5rnDB5Ds30G18WL+2oAHV5v43EtYqGqUOzwVjyHo/M8sM/VUb+DN9VBXpkfiDmDkWoVHRYY5Sw44e6bhB2Un331k54UfVnkbFD7VFjquVl1OJu6AvhrBjO0Y8Pn/L+kuktOdRKaNKZ6jrwV6NG+ooE4T12jnzMYm25wjj+l2rVaobOdbvVjbRP9rs4sI0nDMJ+zon7lexq5oWswIcLEiSSgkckMd2e1O7Ii+ZYgrUkFl+M6Td14Jbl+W/Hu3Wq4iwvKgWoj8ZOtQ= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: ccf4f7ad-bebc-4e20-c43e-08ddf0a7c45d X-MS-Exchange-CrossTenant-AuthSource: DM4PR10MB8218.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Sep 2025 20:22:30.1953 (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: 6Y2NM5r+x2Z7jNgDR8EKm9RUQKSEHtSC4kdQ+eEHkedf3X/82lk3JAswZSN3XunBo39NOY5Igm3lZ8WYnklidhTlqHVigfIRdtOZZKMBm4o= X-MS-Exchange-Transport-CrossTenantHeadersStamped: CO6PR10MB5789 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1117,Hydra:6.1.9,FMLib:17.12.80.40 definitions=2025-09-10_04,2025-09-10_01,2025-03-28_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 mlxlogscore=999 adultscore=0 suspectscore=0 spamscore=0 phishscore=0 bulkscore=0 mlxscore=0 malwarescore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2508110000 definitions=main-2509100189 X-Authority-Analysis: v=2.4 cv=esTfzppX c=1 sm=1 tr=0 ts=68c1de0b cx=c_pps a=OOZaFjgC48PWsiFpTAqLcw==:117 a=OOZaFjgC48PWsiFpTAqLcw==:17 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=z/mQ4Ysz8XfWz/Q5cLBRGdckG28=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=wKuvFiaSGQ0qltdbU6+NXLB8nM8=:19 a=Ol13hO9ccFRV9qXi2t6ftBPywas=:19 a=xqWC_Br6kY4A:10 a=yJojWOMRYYMA:10 a=GoEa3M9JfhUA:10 a=SRrdq9N9AAAA:8 a=20KFwNOVAAAA:8 a=yPCof4ZbAAAA:8 a=hKknKL_MvJZ0P6Ka4G4A:9 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwOTA4MDE2NSBTYWx0ZWRfXxt3OuHH2FB8T ZPJdgwiA40Gpu0E2RJ+rtQItnq4Lvj5qKzndFvmMZZA+sQedDy52kb07kccc+2iOGN4uE9Tev9T 2OzOOcX+xfP0ccvprD3270624BIqSMzpzp5Gr9GwLTbxBS0aOyFHQa1azabVIWmPura2bsy8ZlX iJed+RUH4HKhXEhzrNka5inpYeYlsqaEgj3AVrTV0GCjeHBeNNu1KAnyXwCE7izMUojj8WAuJhp R78Vq3WW8fS2gwYg6EeJBy7fZhjf/S9JCHIqyWnYUFANgX0KNLuP6VstqbZk+QIVzrag6eymGZs 6xm7NR5YNo1XwACatyMHlELA1U73VXE8/tvbDxYUG+St3OqqNyJAu0kGj+zpTQ8xkCoHC56+800 bsQp02xu X-Proofpoint-GUID: _SXzNTioQD4tmu8rWAwd4SW1mnVHkuSk X-Proofpoint-ORIG-GUID: _SXzNTioQD4tmu8rWAwd4SW1mnVHkuSk Content-Type: text/plain; charset="utf-8" This simply assigns the vm_ops so is easily updated - do so. Reviewed-by: Baolin Wang Reviewed-by: David Hildenbrand Signed-off-by: Lorenzo Stoakes Reviewed-by: Jan Kara --- mm/shmem.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/mm/shmem.c b/mm/shmem.c index 45e7733d6612..990e33c6a776 100644 --- a/mm/shmem.c +++ b/mm/shmem.c @@ -2938,16 +2938,17 @@ int shmem_lock(struct file *file, int lock, struct = ucounts *ucounts) return retval; } =20 -static int shmem_mmap(struct file *file, struct vm_area_struct *vma) +static int shmem_mmap_prepare(struct vm_area_desc *desc) { + struct file *file =3D desc->file; struct inode *inode =3D file_inode(file); =20 file_accessed(file); /* This is anonymous shared memory if it is unlinked at the time of mmap = */ if (inode->i_nlink) - vma->vm_ops =3D &shmem_vm_ops; + desc->vm_ops =3D &shmem_vm_ops; else - vma->vm_ops =3D &shmem_anon_vm_ops; + desc->vm_ops =3D &shmem_anon_vm_ops; return 0; } =20 @@ -5217,7 +5218,7 @@ static const struct address_space_operations shmem_ao= ps =3D { }; =20 static const struct file_operations shmem_file_operations =3D { - .mmap =3D shmem_mmap, + .mmap_prepare =3D shmem_mmap_prepare, .open =3D shmem_file_open, .get_unmapped_area =3D shmem_get_unmapped_area, #ifdef CONFIG_TMPFS --=20 2.51.0 From nobody Thu Oct 2 21:39:18 2025 Received: from mx0b-00069f02.pphosted.com (mx0b-00069f02.pphosted.com [205.220.177.32]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id F05082F363F; Wed, 10 Sep 2025 20:23:18 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=205.220.177.32 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757535800; cv=fail; b=WrtWzz036f4wziIoxXxprMFx69fHhwanhUaHN1SqOmD9SteJSOnVuzX6r5msy2WyeI7VBiaiU6wtlf17iQSSE3AGPP5tQz0Br7e5OniJnVu8TfmnfZmzRIAqgP9eRZqt0/h9yOSlr95Gde8xLEDLhgbQuL1ELqDgGGf+iTKfP7M= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757535800; c=relaxed/simple; bh=2++/s9XH8uJJ6CPezliHtngfkaGLv8gpHr9Xqzk/L14=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=X4bxcDGdZlKzN8tJihl0s0hHNqFWJEzZvtpjjOffGF/ux2UqRng7sHsw/yPCkNICwW68WwmcethI6kKoat3fHZqEKCnEVP/rXnsrhGT0UDrMWG0ROzFphPlTisfPkm40bH9u/exX87rTIWCruia8B05Vf4dK1Nd1+A9LRi6j51I= 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=phx2wMce; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=jPV+fErD; arc=fail smtp.client-ip=205.220.177.32 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oracle.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oracle.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=oracle.com header.i=@oracle.com header.b="phx2wMce"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="jPV+fErD" Received: from pps.filterd (m0246631.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 58AGfiEQ005177; Wed, 10 Sep 2025 20:22:37 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=cc :content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s= corp-2025-04-25; bh=pHTSDKgEPrqiEwdVqZJMgJ38DNBd/ZIi2DccuQYZpxs=; b= phx2wMcehpZL1VMk1o5x6/W65A76zr7GwNpXynmAwjUydWgo2+hJznH/rpTGRids VUa4j5kVe+hTXRhfuh3mat7FpD9fS2wsGtvwTcvJadtBfdjRzqx1rdRjesFlqkVr gligQPlbzVURAaPwGY0wdffBMSXwvRdV7apPBV4Paz8Z2pz+XVtZLgUVGxRxHD/u 4JqIjw/z6QvTtFkWMlL0oXBSWgrquLsTpAHX0GfAYmt9KQg9IAMUDyVAZY2KoMdO jW9SR9dNIUJlDRbDZjYbsNnqIttqBhEsfl2lvGnGO4LdVoW2ICE1bhnDakvdubuK wRXvr80YHTp+FTKOd1ZhAw== Received: from phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta02.appoci.oracle.com [147.154.114.232]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 49226svyx8-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 10 Sep 2025 20:22:37 +0000 (GMT) Received: from pps.filterd (phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com [127.0.0.1]) by phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com (8.18.1.2/8.18.1.2) with ESMTP id 58AK3dAs030716; Wed, 10 Sep 2025 20:22:36 GMT Received: from bn8pr05cu002.outbound.protection.outlook.com (mail-eastus2azon11011034.outbound.protection.outlook.com [52.101.57.34]) by phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 490bdbfhjs-3 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 10 Sep 2025 20:22:36 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=qAl1QJLhxkk2eGXVkbnB6699/xgUc46ywKIW6fP+1jh1Dsi3V5rA48dOlXDuBJmiJcVuHcQvqB9HefuqEmwm3lxVMg26dQM0ZqZHGjTlEtEoMD/DMw3h9uuwxg+z9pfID3N6PmLjokkTiTh3xrwafx3eOmBy8rsvCwZcUPCriOO0O1oUt7fAMjA34E5RHtq5zjnUaqgMPsmeCD33kENvLELrxdey8mNcPW6rAD7gKCbwHh8GBm2/LKI49N5W5Zbl0NpR4NghnjIIZY+EumcLMWdOSYY5jQQh/Oxm0k6imMXRDMC8u5ZMJqkr27jFFXDNqGVjC7UoqdbHpzua9Rk4eQ== 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=pHTSDKgEPrqiEwdVqZJMgJ38DNBd/ZIi2DccuQYZpxs=; b=f6H4GX4AcybSNUb/pAfp5bhlivT1C3avWjkEAS6Ol6+MvU8QcEy6Bt2/4t2p74ORwr6SRG+GzY7b1tfs9b1udKtjJJkxWrf72dqwIgqwaU0UOzLlR7NZfiJqirIk6yNySzai08uPtcz9nhYJj+SCOCsWfim4wUmawukDp77Ri9dGPshbSECgnK/CPgX5UdyqZOdgJlPQa3jNFF1SCmhzTzWQvZvD2mf0wZ0dhZeNVxN3jP9IKxfZidQu0VqHqNySEEb25dpE3K63EN+oWh0w8y/JtiWYymwiGx4FCjT5QCXeWq4BbmGfCfL2Q1kleJFKp2b1T44Vmk2a9rnYL9wNjw== 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=pHTSDKgEPrqiEwdVqZJMgJ38DNBd/ZIi2DccuQYZpxs=; b=jPV+fErD7uv9eb9zvopvSfT0/LFddDI7Y/3QuwxvWN6R8Dk6UHqteDxZ9Rnrl68es5kbi91bBmW5oFd3BA57QLru5c6r8/vyAL31zAC+POehJ9qvXuOWa9oM7YH1v3uQ3fsLS6JGyrkjk31sRysAkMA+qLAhpwpgO6m1PSC5ljs= Received: from DM4PR10MB8218.namprd10.prod.outlook.com (2603:10b6:8:1cc::16) by CO6PR10MB5789.namprd10.prod.outlook.com (2603:10b6:303:140::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9094.22; Wed, 10 Sep 2025 20:22:33 +0000 Received: from DM4PR10MB8218.namprd10.prod.outlook.com ([fe80::2650:55cf:2816:5f2]) by DM4PR10MB8218.namprd10.prod.outlook.com ([fe80::2650:55cf:2816:5f2%5]) with mapi id 15.20.9094.021; Wed, 10 Sep 2025 20:22:33 +0000 From: Lorenzo Stoakes To: Andrew Morton Cc: Jonathan Corbet , Matthew Wilcox , Guo Ren , Thomas Bogendoerfer , Heiko Carstens , Vasily Gorbik , Alexander Gordeev , Christian Borntraeger , Sven Schnelle , "David S . Miller" , Andreas Larsson , Arnd Bergmann , Greg Kroah-Hartman , Dan Williams , Vishal Verma , Dave Jiang , Nicolas Pitre , Muchun Song , Oscar Salvador , David Hildenbrand , Konstantin Komarov , Baoquan He , Vivek Goyal , Dave Young , Tony Luck , Reinette Chatre , Dave Martin , James Morse , Alexander Viro , Christian Brauner , Jan Kara , "Liam R . Howlett" , Vlastimil Babka , Mike Rapoport , Suren Baghdasaryan , Michal Hocko , Hugh Dickins , Baolin Wang , Uladzislau Rezki , Dmitry Vyukov , Andrey Konovalov , Jann Horn , Pedro Falcato , linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org, linux-fsdevel@vger.kernel.org, linux-csky@vger.kernel.org, linux-mips@vger.kernel.org, linux-s390@vger.kernel.org, sparclinux@vger.kernel.org, nvdimm@lists.linux.dev, linux-cxl@vger.kernel.org, linux-mm@kvack.org, ntfs3@lists.linux.dev, kexec@lists.infradead.org, kasan-dev@googlegroups.com, Jason Gunthorpe Subject: [PATCH v2 02/16] device/dax: update devdax to use mmap_prepare Date: Wed, 10 Sep 2025 21:21:57 +0100 Message-ID: <12f96a872e9067fa678a37b8616d12b2c8d1cc10.1757534913.git.lorenzo.stoakes@oracle.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: GV2PEPF00004524.SWEP280.PROD.OUTLOOK.COM (2603:10a6:158:401::345) 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_|CO6PR10MB5789:EE_ X-MS-Office365-Filtering-Correlation-Id: f77d8876-69b6-433d-77c7-08ddf0a7c5ef X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|1800799024|376014|7416014; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?/8oAtNDHiNvTcCpP2VuL2JrmxEC5oRHDCe2mL5gRYcWwK9oAD2KRQYrTqMfu?= =?us-ascii?Q?eDR0Zoo8EPeQXtfChULk0jO76lbWS/tx6Tdy0Pu8Zfvsb4r4cE266a5aQuVt?= =?us-ascii?Q?5a5wkvhuEOff8Grx3v7tI0EhPPVWCpl2glpNSqRMLgaxvfDvMywKzlja1d2q?= =?us-ascii?Q?QrC0/NkE/09c3/qkmRFfU0BRCV68mplboWHSdxGfa/meF3FQSJWr/FsBoSPH?= =?us-ascii?Q?aVjhZfJA1jbTVZTH9vvOWJMklLK6G8GqJj6cE+7pZObAa9J/eE/lZ1r0k4VI?= =?us-ascii?Q?HqkgrxnjEjfttSC/QZt6V8oGaIeszIvLrkSjdYDW+KJU3vvWclOV1Fh2Wgmk?= =?us-ascii?Q?jJwIihPENRI5sPMyYKcC+Iu4J1w/FLEQC4agwccErE+QKDD9rs37vRki/nIz?= =?us-ascii?Q?y8etny9HrccBQkAO/p/b6D0yiz8tC+s/24Z1FUHhjyiVBMlK7aV4KeAS9ft2?= =?us-ascii?Q?616q2IMhMAYVNnzTSeymYrWHraAvFZ+bI7M1rlVlQ5n7oV5Sp6bX5qP6N/dL?= =?us-ascii?Q?fdNUJ2k7bHo72ZJI0DsjymcdxiMjlvy7KeH+VgiCoGXNivro7mPx1ZmnbCJd?= =?us-ascii?Q?NrxYKwunJiMo8Bg3e7NQjRjaJ1qYRwjMaqEkXha6mw4QkFYts4b0MVIXOI7Z?= =?us-ascii?Q?caJ+E4JNv9aiW7XDJTyCAWuH6XxCcO0hgwmSlJ+jMYH/TqdUY6QKk/qk6MVh?= =?us-ascii?Q?X4l2yxmwHPrUYRrrGVkCT7IOPm6kEkdqarzVXEHsQz0j0olUino2saI5SVBd?= =?us-ascii?Q?jrooJ45Bu+ODr/+WKYHs98rF0Wkj7o1mh+LoO/kIMv6NaEDEBCDFW74hDh2N?= =?us-ascii?Q?+OLjieR2GqMdh2U0264TCJthhAPCvyRmiT/8x2vdBdtnmG/EKU+TpRHua03N?= =?us-ascii?Q?T7e40xmROionWXdZsPyNTw5hMcl8++asAnBSVQvzxq0QCyAMu+XszwFz3bkH?= =?us-ascii?Q?nToV1s9jCD4Jy9LDEQrJslb3Ns7VxP58PSYalun8F/MDT96SyHyTo1b5i55h?= =?us-ascii?Q?gWLNDT0HObJNY6fuXh70/4V49e/c0kVp7DUZYaucwAEaA88GHAOGbVOZKYuT?= =?us-ascii?Q?hBgWT5yIHn6zqnjBkqsI/O3L+2CN20Sim7N9OuxxTk78ISuxh/tmSVQD06zq?= =?us-ascii?Q?HAzutWE0q0RNCsGhKqifAcbYPhmmY032IdTHHNHT0V65W16gc5VXrsSe7H5i?= =?us-ascii?Q?veKRFRPm6R543JyERCQgf9HU2PvLwFm7lXopyieLBUpoKmdTmMLtMXUfRpro?= =?us-ascii?Q?ZQmNna35ojVuxL0XuyKBejqoYglegUdt2sys7zsxd+LS3h3lPakLZgB/sT2D?= =?us-ascii?Q?LuiJa+kJ6OpU1ZZxLU74JfkOK/CtCuBd4RTnbWyABn5UIiHUOYNDp6Tf4/IM?= =?us-ascii?Q?uqzPcmO01lriu+OMR0wVxyfZbHPbr+zuyybEWNDkWRr5MihVDWs+52RRoNoE?= =?us-ascii?Q?9MdHsBl54o0=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DM4PR10MB8218.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(1800799024)(376014)(7416014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?YqB44gdwKQf55Azf//PW6/sYTy4a6VoL5mLEdSn/JhWPhZPvldtHtVZfQM/z?= =?us-ascii?Q?xlB5YAPDqHvgBQNEDr4JSjlkOJAPKVFtlKH2K82Rp8Qrir18Nt9RJvTrCfkA?= =?us-ascii?Q?cJWOWp/h8wU0U3/yyb+WzawJ7+fQqyC4ct5W5u7fYpZ9JMu2hKXga5i33Sq9?= =?us-ascii?Q?uGgLyusnZ21Gb5xXL79OMOUFWzG82gYDA/aAO2d83LVH/vAczldVEtsn1m7g?= =?us-ascii?Q?QlGzaEh5IXq3oHHySxaH+hz1EvHO45u/Ke5c2sFiwmoLIVYmUofWpTFov1sa?= =?us-ascii?Q?LBJ2OrL/Why03gAawEAblGMOmb4l7d/Zt9YQ7iFfLqMmZru6IOJMEduOJNwQ?= =?us-ascii?Q?kT8tqRGJFLpoYxEcaNaKIG0V8MV07/MtXZCdg0zdJCF3IbNQ0A2L9sLA9QyI?= =?us-ascii?Q?0DimkmJi/m8GFxqA8tdiSgiw59aEElxxVZ1OeGBcCXtCcnqVKtBmLcNveRt7?= =?us-ascii?Q?VkNt7ALw7rp8JZitCEOlXX/4z/UQrcGDlU8OadaNQDfiRIU4ubC2HOW8Yljh?= =?us-ascii?Q?HsUClg7tDzuDp99qKXqc1gYJtDV+ccdfpRijtCtoTvstNPLJLdTD6VXeYjYm?= =?us-ascii?Q?4QQ75H+6S4hzBxanZ3Y+D80xDD0VjxrqiXhP2aLmzOC2SLF216rKMPsmB2iz?= =?us-ascii?Q?XBLyYYLurREEtDCQYjZe48VaYXKeJA96x1hlwCPnZ7oGd88pkMo6pvlKKiT5?= =?us-ascii?Q?uHcfiia/+Rq7k9wUqUvgjXzIwVuhMzLR7zR8xkr4BHw3WXeuZ5eN7hEDOP0z?= =?us-ascii?Q?yHqEPvrrpIOdAr+DR//i7fXcVuiwAFwrvx5mREl4EtUt+pDHsl+1E3bequC/?= =?us-ascii?Q?K1uYujqToXFfwgbBStuMiNosn0qAUaG6wvY3QXltP6ntQXHdRkUt3HJZg/bd?= =?us-ascii?Q?ElpyQIRqdRkqIZGTxWwelXB+HoaUo6FokcwwT9CwIVRnqNfy0sre9AL9cboI?= =?us-ascii?Q?hIF4uBAQ87YNu57R1XhxDlNgq+fAIqMLR+s2eAoFosT7UFYidU6ljeeo7iPk?= =?us-ascii?Q?ujIRatwgJTG5LdbGl7zK7Nt8/z/lgolUMUmR9bdL6o52Q1DJI4bYgwq2VW8n?= =?us-ascii?Q?Xliqqs534Rt2RI6KlzKPuKaVD8Ajj+DbMLVgOK+cvwoqcjJ1XMKRXvxe2FlC?= =?us-ascii?Q?UNs1h3tYwd0EGs0EVU03GqTnbu0x++obuVqnjBGHybWicjHO47MAhx+xAEbN?= =?us-ascii?Q?yQHytK8mmEz9wWwXhAe8mAXDozpES438a1eYE6ZhbEy9DQfcHVm4YSEFqYcF?= =?us-ascii?Q?pNFwKzeNvCPtFxHozj1CNp01s5s/QrCGb17wsw/Rw5rMbl1GRSsczyLBRlh4?= =?us-ascii?Q?EG1xNCVvVchxRQys4NgdvJmKvqW/i8NR/GbvGvoDhtbkv3D8fgXRfseVNHI6?= =?us-ascii?Q?1vBs3XrGMZmuY6hcmHb+xYhpqcyedR2H+XiS6lfqZ9lskpF5ZND6XAwIHZpb?= =?us-ascii?Q?dnH3+pfhx6DPsUZbo/ChD+n9mOSrgkm0Ct6d3myWgdb43hpfv6bWU6eT4AAP?= =?us-ascii?Q?wssKq0ZaiT1uBFdxM7RyFRZsFvZ7pTRD2M2RXPUaWlBjrAGDmYqkgJATgTU+?= =?us-ascii?Q?Asv3B7HJ+lW5KEWHNRINfiiKssExH110d/8poCLiA8q1ESVVTQcpchkmZLlm?= =?us-ascii?Q?bQ=3D=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: 5TjvicNfGgtsN9jcMmzIj8lYLRyFY+XBRnC1CqG+bb+AWvrG4ntj+7+HOQiOCyOxVi+9DbtnJlp6Nn9dJySd2azqTgLYsVqngpFy957Z9wg1YfMCnQpF9ppdR5aZSZDUDB979CIbc5eJqjRcUN3S4+++iswscztDpgR65jOY5NTN7O9YtvsbZ9ToIvcG3p/1zBWx1F6T6PBqMj8GIJegnx3o+PlESh5oa+C+GHE+W2/TlGh5Bb38suqk+TZFFjjbzid02h7yAQ1fkhyc+I5vV7x4d7R78eJu+Pr6PLQvqsFi+FIHaTONVU3lcNxFMDU20a23lY0XcEBouXkcTYcYKQ8qOIAOObMrZ9dpuxWhktZ422m2A9nqosb0wvqRrx7Bq8MWVu+rCrhvp7XzYek46Ikt/LceQLTFuwSDlinfVprMqbCdsDsB4gZazY5kw3XXt4LiOl+0vuFeJ0pEgqSYlUjxSKzSkBxT3gZhT+ZINOPWC91ecucU0ASDnwOSguOF9PV7RTYP3y2R1bjUolFt15XvblDZBfhpmDGSGf7dS9omaqtce3CFqdmpJ6uEizc0Z1c5Knnaye6Dw8RJ7MJzUg3q03yZrvqnV4d1TDvGM+E= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: f77d8876-69b6-433d-77c7-08ddf0a7c5ef X-MS-Exchange-CrossTenant-AuthSource: DM4PR10MB8218.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Sep 2025 20:22:32.9325 (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: VBWM2xUioMlpCa3AYMEi+oZfvrllXZtmsZKLkR0JiE6VuPEGPYXcI9Qih1SEahmJV49QoVR03kJj4M83fzl9OkgtRZ2zmP8/MD7GwH/9z6A= X-MS-Exchange-Transport-CrossTenantHeadersStamped: CO6PR10MB5789 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1117,Hydra:6.1.9,FMLib:17.12.80.40 definitions=2025-09-10_04,2025-09-10_01,2025-03-28_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 mlxlogscore=999 adultscore=0 suspectscore=0 spamscore=0 phishscore=0 bulkscore=0 mlxscore=0 malwarescore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2508110000 definitions=main-2509100189 X-Authority-Analysis: v=2.4 cv=QeRmvtbv c=1 sm=1 tr=0 ts=68c1de0d cx=c_pps a=OOZaFjgC48PWsiFpTAqLcw==:117 a=OOZaFjgC48PWsiFpTAqLcw==:17 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=z/mQ4Ysz8XfWz/Q5cLBRGdckG28=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=wKuvFiaSGQ0qltdbU6+NXLB8nM8=:19 a=Ol13hO9ccFRV9qXi2t6ftBPywas=:19 a=xqWC_Br6kY4A:10 a=yJojWOMRYYMA:10 a=GoEa3M9JfhUA:10 a=20KFwNOVAAAA:8 a=yPCof4ZbAAAA:8 a=2q_dOInNKJsfLPmpoRAA:9 X-Proofpoint-ORIG-GUID: rWR3MS3hl-hTvI15kBnc2dabVda0-fAn X-Proofpoint-GUID: rWR3MS3hl-hTvI15kBnc2dabVda0-fAn X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwOTA4MDE1OCBTYWx0ZWRfX6HJ8s5CXudJI zYr/f2fhPceO6MzOi77utV+CezKZYs7nOJtyYcH0mIBcsR4+sRTYuaF9u3+ufQ8srczGrZw1cZX 3TqPf2+0yvIoj/fc7vg6/2kfv8/U4DLapuFhllWNjUKshEmyx5iIXXOnjOPM0lX9IDGm9Ly6A7T YkPuAAfrfV7Bq6w6jUeP49CDA7pbPOltDTHZdGuiqwVX9/ISCO36c1dfRjPiXmgsRyKzo0qxINl O/QMbX8TLaMK8PFx7tUTab5F4vazA8CUPJ9eKQKmHsWon6KIjOaKEJyYBhM9lU82Zv3H21ReKMu 4Wn/W8DTSkdw7RjxtxvMzcoKyOc4YPMLZ4vXPQaJrJVh4B6Fvn1HoNp6xySeUwQDCjioNL9B1n+ 6zUdqb3x Content-Type: text/plain; charset="utf-8" The devdax driver does nothing special in its f_op->mmap hook, so straightforwardly update it to use the mmap_prepare hook instead. Acked-by: David Hildenbrand Signed-off-by: Lorenzo Stoakes Reviewed-by: Jan Kara --- drivers/dax/device.c | 32 +++++++++++++++++++++----------- 1 file changed, 21 insertions(+), 11 deletions(-) diff --git a/drivers/dax/device.c b/drivers/dax/device.c index 2bb40a6060af..c2181439f925 100644 --- a/drivers/dax/device.c +++ b/drivers/dax/device.c @@ -13,8 +13,9 @@ #include "dax-private.h" #include "bus.h" =20 -static int check_vma(struct dev_dax *dev_dax, struct vm_area_struct *vma, - const char *func) +static int __check_vma(struct dev_dax *dev_dax, vm_flags_t vm_flags, + unsigned long start, unsigned long end, struct file *file, + const char *func) { struct device *dev =3D &dev_dax->dev; unsigned long mask; @@ -23,7 +24,7 @@ static int check_vma(struct dev_dax *dev_dax, struct vm_a= rea_struct *vma, return -ENXIO; =20 /* prevent private mappings from being established */ - if ((vma->vm_flags & VM_MAYSHARE) !=3D VM_MAYSHARE) { + if ((vm_flags & VM_MAYSHARE) !=3D VM_MAYSHARE) { dev_info_ratelimited(dev, "%s: %s: fail, attempted private mapping\n", current->comm, func); @@ -31,15 +32,15 @@ static int check_vma(struct dev_dax *dev_dax, struct vm= _area_struct *vma, } =20 mask =3D dev_dax->align - 1; - if (vma->vm_start & mask || vma->vm_end & mask) { + if (start & mask || end & mask) { dev_info_ratelimited(dev, "%s: %s: fail, unaligned vma (%#lx - %#lx, %#lx)\n", - current->comm, func, vma->vm_start, vma->vm_end, + current->comm, func, start, end, mask); return -EINVAL; } =20 - if (!vma_is_dax(vma)) { + if (!file_is_dax(file)) { dev_info_ratelimited(dev, "%s: %s: fail, vma is not DAX capable\n", current->comm, func); @@ -49,6 +50,13 @@ static int check_vma(struct dev_dax *dev_dax, struct vm_= area_struct *vma, return 0; } =20 +static int check_vma(struct dev_dax *dev_dax, struct vm_area_struct *vma, + const char *func) +{ + return __check_vma(dev_dax, vma->vm_flags, vma->vm_start, vma->vm_end, + vma->vm_file, func); +} + /* see "strong" declaration in tools/testing/nvdimm/dax-dev.c */ __weak phys_addr_t dax_pgoff_to_phys(struct dev_dax *dev_dax, pgoff_t pgof= f, unsigned long size) @@ -285,8 +293,9 @@ static const struct vm_operations_struct dax_vm_ops =3D= { .pagesize =3D dev_dax_pagesize, }; =20 -static int dax_mmap(struct file *filp, struct vm_area_struct *vma) +static int dax_mmap_prepare(struct vm_area_desc *desc) { + struct file *filp =3D desc->file; struct dev_dax *dev_dax =3D filp->private_data; int rc, id; =20 @@ -297,13 +306,14 @@ static int dax_mmap(struct file *filp, struct vm_area= _struct *vma) * fault time. */ id =3D dax_read_lock(); - rc =3D check_vma(dev_dax, vma, __func__); + rc =3D __check_vma(dev_dax, desc->vm_flags, desc->start, desc->end, filp, + __func__); dax_read_unlock(id); if (rc) return rc; =20 - vma->vm_ops =3D &dax_vm_ops; - vm_flags_set(vma, VM_HUGEPAGE); + desc->vm_ops =3D &dax_vm_ops; + desc->vm_flags |=3D VM_HUGEPAGE; return 0; } =20 @@ -377,7 +387,7 @@ static const struct file_operations dax_fops =3D { .open =3D dax_open, .release =3D dax_release, .get_unmapped_area =3D dax_get_unmapped_area, - .mmap =3D dax_mmap, + .mmap_prepare =3D dax_mmap_prepare, .fop_flags =3D FOP_MMAP_SYNC, }; =20 --=20 2.51.0 From nobody Thu Oct 2 21:39:18 2025 Received: from mx0b-00069f02.pphosted.com (mx0b-00069f02.pphosted.com [205.220.177.32]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id E1BD52F0C41; Wed, 10 Sep 2025 20:23:17 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=205.220.177.32 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757535799; cv=fail; b=DyWoY8WOA1zfxvzVhVj3/J7F0jK2AjjQfQv48NOdmcUznFaT5lPlKLDSpju1Z3nR9gJ0CE64iFs88uqgno/EUDi26icCK1a5WATUjotJuUx6wDKyspa2YgHHewrW9rgpRxUyCnIZZ9iAyXLKTqswtoFjAJTTYPwLXtYPnJf4lkQ= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757535799; c=relaxed/simple; bh=x8xJrsjR00jay88p/OIPI5c3wN4R+Utt/jI3ety/Vfg=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=Gr2m2MYHQawlx/5Xd3NWktLliIEcKyr5hRUAt7J9ZYgAOqP7CDYtdOPM7pCYSX6H2AiVhPjDH0CXKRaWOpX2aWHDm1HHL1jbaFrl6MhgKcG8MpEMlTo1E5SFPIocKOBm5Mwj+QNWvWphCB2RTbfJsjxv0Q8crcV8Kv/Mi+EQ4B0= 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=Lj8xAgLI; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=luJiU53S; arc=fail smtp.client-ip=205.220.177.32 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oracle.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oracle.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=oracle.com header.i=@oracle.com header.b="Lj8xAgLI"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="luJiU53S" Received: from pps.filterd (m0246632.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 58AGfiDh009732; Wed, 10 Sep 2025 20:22:40 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=0cG/XxwNz5xQssOe9Mru2Eu/iCohBsLiNJ9+rdrZYTo=; b= Lj8xAgLIWkEh0BNVFY4pd+bH3NZxLci7FZK/j6X2Xwh12KJNUdQI6nZLdOORpmGU BAkXWo3g9nt//ItZ+Sz9Xj5CzfqcFuklnS50xhf6q3HC+UMAKbDO8Q5/OX+IUzNg FeomKicfsiS0R5CoSGBToaAKFS5a/IHdlIa0lvo5mZM5r+537x29dQC6+mMriczl zjkQdmSrukzZ/qmFBr6QKD3PDVb88F6tM9Dq3CTl2kJ/tHsCKz/f4/l75XQ5rnGo 5ijuvWHnqZ6CyeeKhEmPDD8xoD9APiLAn273eCODqJHJr//3cmoyPehwtRZ4ay4I 86f+77cHE/KRNbDIODV+fQ== Received: from iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta02.appoci.oracle.com [147.154.18.20]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 4922shvv1r-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 10 Sep 2025 20:22:40 +0000 (GMT) Received: from pps.filterd (iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (8.18.1.2/8.18.1.2) with ESMTP id 58AJvaTY026078; Wed, 10 Sep 2025 20:22:39 GMT Received: from bn8pr05cu002.outbound.protection.outlook.com (mail-eastus2azon11011001.outbound.protection.outlook.com [52.101.57.1]) by iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 490bdbhb9x-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 10 Sep 2025 20:22:39 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=Q6rRZq7/WihSnRViSUn84VUpngOtv2PpNx82xWZhePStJ2uatw4liElf61qO9nPqy2nnYHAFMcpdgFVseAblYTM3Gw99QH/hmmXWENGeQdihQFcldmpeI4zulfAxw6ydg9vJHc9HQFTt3UdM6B7wiPMiKQZ1pGc55/7Z6uOrzLahCwkcPJW/dfdNmkU0pF+bUkZEJ8hu5RMKEKg9Dv59Ue75hyur80EadsQ+2GBCW62yOGfh5n3bTjRzznNm9m8Dn+43xrlnKPncZeHDQWA0flaGaLkrrSg6Gcpyt9OHsGarQhBWIvmXBdNi8CF6GdBNlot6HFI5PISfVmbE6nBlJQ== 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=0cG/XxwNz5xQssOe9Mru2Eu/iCohBsLiNJ9+rdrZYTo=; b=PpUtLVwthEi25soaJg7PKAdNIkKxExocmlxIoIti/kwBrR5hk6lHa2ROjP9i7PXnbyhzOcTSsWgxiKK3/FuhM6BYcASLWwVRaQjaR2w7Daj11eix+JNf6QOfg2MurWbuE8Acbhc1Z5/P4T31B/mOvN7zehD3AhHDThYXZ7eizcJUklrfgzjnc/AS2+vx0UCeSGDBvbl0c4UcQxMRDjtlUTjTFzjxvuDFgItAcPQc6VgKq9aK/aeVMFi0CLmHchz2ThVcz+8UZ01RcrtR/MVdDqX8buDPNZe6UdzLmm6jbxQckbGuHerdErXBeejUgiNgRJS5mWuP2u6wVoTmBb2B1A== 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=0cG/XxwNz5xQssOe9Mru2Eu/iCohBsLiNJ9+rdrZYTo=; b=luJiU53SG9w8xepgigdlIS4jn7FI435dGlHfZXlPUlxp2IXTbEOU5HKS3V31cW2uSDVgfXagJxyLq3JDzDhZttmAqHVLAE1Jv/eJcYZkokr5erExqrhVrN4QbnXy4/GLCYay6CK4hrFWrz2RLWX1cayQQX14MYH+OKuxTJzpFq0= Received: from DM4PR10MB8218.namprd10.prod.outlook.com (2603:10b6:8:1cc::16) by CO6PR10MB5789.namprd10.prod.outlook.com (2603:10b6:303:140::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9094.22; Wed, 10 Sep 2025 20:22:36 +0000 Received: from DM4PR10MB8218.namprd10.prod.outlook.com ([fe80::2650:55cf:2816:5f2]) by DM4PR10MB8218.namprd10.prod.outlook.com ([fe80::2650:55cf:2816:5f2%5]) with mapi id 15.20.9094.021; Wed, 10 Sep 2025 20:22:36 +0000 From: Lorenzo Stoakes To: Andrew Morton Cc: Jonathan Corbet , Matthew Wilcox , Guo Ren , Thomas Bogendoerfer , Heiko Carstens , Vasily Gorbik , Alexander Gordeev , Christian Borntraeger , Sven Schnelle , "David S . Miller" , Andreas Larsson , Arnd Bergmann , Greg Kroah-Hartman , Dan Williams , Vishal Verma , Dave Jiang , Nicolas Pitre , Muchun Song , Oscar Salvador , David Hildenbrand , Konstantin Komarov , Baoquan He , Vivek Goyal , Dave Young , Tony Luck , Reinette Chatre , Dave Martin , James Morse , Alexander Viro , Christian Brauner , Jan Kara , "Liam R . Howlett" , Vlastimil Babka , Mike Rapoport , Suren Baghdasaryan , Michal Hocko , Hugh Dickins , Baolin Wang , Uladzislau Rezki , Dmitry Vyukov , Andrey Konovalov , Jann Horn , Pedro Falcato , linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org, linux-fsdevel@vger.kernel.org, linux-csky@vger.kernel.org, linux-mips@vger.kernel.org, linux-s390@vger.kernel.org, sparclinux@vger.kernel.org, nvdimm@lists.linux.dev, linux-cxl@vger.kernel.org, linux-mm@kvack.org, ntfs3@lists.linux.dev, kexec@lists.infradead.org, kasan-dev@googlegroups.com, Jason Gunthorpe Subject: [PATCH v2 03/16] mm: add vma_desc_size(), vma_desc_pages() helpers Date: Wed, 10 Sep 2025 21:21:58 +0100 Message-ID: <5ac75e5ac627c06e62401dfda8c908eadac8dfec.1757534913.git.lorenzo.stoakes@oracle.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: GV3PEPF00007A88.SWEP280.PROD.OUTLOOK.COM (2603:10a6:158:401::615) 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_|CO6PR10MB5789:EE_ X-MS-Office365-Filtering-Correlation-Id: 80c6830d-5a12-45f1-1b9f-08ddf0a7c7be X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|1800799024|376014|7416014; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?RPpCrNp16cOF2S7rCLqWC0KWR1dIx03OZAFJJgwpcW4/8IpXlAktM33Rb1xq?= =?us-ascii?Q?ibwdcduAA/gVEebSoQbhtDUnJfHcF6pPp6O8vBJDMyyLseZ61Pxvjko6In8M?= =?us-ascii?Q?ptjfftnMSRuMhuRXbs3dd5wka+LLriga9dtgUqLwdfdlCS0RwZO9znvv2ZMM?= =?us-ascii?Q?ODvtmWCxvxMm78R3yXUGH36ulIKwGwvuyj5yadO+YNZi2KNOo4oV1Szk3hxR?= =?us-ascii?Q?AJ1zbJ7BGXFiOD6mJt7xXplkHEZPVfxSCl6jx3S1p9698Il2Ighn55iv/5YL?= =?us-ascii?Q?yE2hQcaYnYhAHv7S92ML7CKEK5UGzXSdL6SnX2ApUIhmdG9pBhrlm9ZzNeUo?= =?us-ascii?Q?rZ/LcXmzyUZpbYBEDLY6L5O6vIYtj2tVBZlRBuIyH/NN9PilA9iKWfhAO83+?= =?us-ascii?Q?E+PptIVkOr2TG2YaJgaJMppuzNVPV8+3pK4y9kd/gNx/al/jcu3zaqj5R7RD?= =?us-ascii?Q?Nvpf+sTie8kg8VKTC5HBPBS7aoFaOq9LKRmIrjWvmlEbcCVmP3Jzw1X+M0Fj?= =?us-ascii?Q?fr2Sm0PDfnsWRCOi8CxzixWcBPbbizZzC/3lqRFSzQzIiiSQNuFy9ENtEoWy?= =?us-ascii?Q?xMnSMNgU+brwgJbCpsohjyolOSbKcqovhMcdd6evY3LJlpVSQl/zJ/J2a6jh?= =?us-ascii?Q?zp5iqx5fDcouoWPe3pni++dGFw2PW34qWjDJrK25ufwf4ur3UW6xIfyOacjz?= =?us-ascii?Q?Fg19I5PMoaRv/8vEgVB22wUwTyMCMfMJ2YwzkMuAxiXoTd9MvIsrfq3gynVJ?= =?us-ascii?Q?Oo1WeUC5V5QVPv79dQikBm6p2wKggJ0soQ+QyYf3sDD043DOdPxhSxbdEAI/?= =?us-ascii?Q?z1kRTXCmnhELNrz04rzPPgZAJjsM6sq5aZ/j1A0wU9x4+aBdp6Rl96QBn4N6?= =?us-ascii?Q?o9CSepY2eIYL18k7JoxppkIq7Rha84YifmqhM1DuI9cXepfh93Q6IfdPiDKk?= =?us-ascii?Q?rdE42Y/pi3FTlIvxn2+ToXBwwNlBfPtafWYo9Sgx7r6y/ojCVLEhQ1r4EIEQ?= =?us-ascii?Q?T+yeCLFA3a49JAuE1K+56cSoO02jRYrdkc3ehRyTtTkfEqKCN0T4PXA1+rDr?= =?us-ascii?Q?qeJqKotH6eVFTg1bksjZFeDS3iGzKWIXbJCwXqip6W6MRgN6FomFBA11UlO3?= =?us-ascii?Q?/eeHPYOb1acNRlHArBcIs1h8l+DzCAJO4VO2WyfVIGwRg2z8YjeSqN2mfm/t?= =?us-ascii?Q?K3Jqc/zpmZPlCdR7UM4lzzyYh52+NaZAzea3oeQHlnChG29KhJn0rmkP5kHw?= =?us-ascii?Q?Hg1wc4sp9VgLx3gvcB2OV6ZSUgFFMtx+xj4JIv9VxsSXChI5SWt9GFeCklH3?= =?us-ascii?Q?LWqsKQ4fzdrSbA7lO635/GRJLcNnRxY1bAB9vmUWdS8VJCjVwQhcotvIWkwz?= =?us-ascii?Q?lZWsjpecqRgkrOZEe65QP+2VO6wVJzd0j16MPLDxLjjAVK6lCGkJ7sD2VUA1?= =?us-ascii?Q?Ss1YY94VI0Y=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DM4PR10MB8218.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(1800799024)(376014)(7416014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?/cMYCpoC9cubvWYVx+Y4H8PT5er2B5xWMu6RQkf0Tt3lzygJYio3MaPsBpaN?= =?us-ascii?Q?tlh0C7+IqSZbTBaNE0qRrBpiE6lm2szbD0+7B8arUlNbggLu/PRxJ2TDLOxE?= =?us-ascii?Q?9WkYV19T0mK+yscuxdISVBBWJHdQk0aIw5ZrerV2a/Nq3NNFOYAXVtFMSa8q?= =?us-ascii?Q?RshYMDsStTGZHOluyt9HhYxWUkMsHM53kLxWYEWpZvBxnLCDOe9/v4Rtav3j?= =?us-ascii?Q?M4hzWfbaWA5BUPiK96cjgm6pDTBE+Gs2g9c2yBeWq4BaLVUnZBu3P+PdPPv3?= =?us-ascii?Q?v4zg9b0MXLPAJ/CQYJlqJfEnLh9brubbW0eRNwY/AMarxqaQkgFhniQFLyEL?= =?us-ascii?Q?CrGy8ajf80fqbozNQ2Cz0nWY79VN9pUde7PMLPEmmK0roaoPoZyAPS/MwBMk?= =?us-ascii?Q?eYfMaRMgwzEYEVyJn7HmRie5pHAwk1edsXJGzS9L+66FqQLuafrgtXEe5Fop?= =?us-ascii?Q?tEx5AIn38cE5DwDNVj1ZY0FeoAJA+7TPWeCUlvdPJqpVar9o1+B7kxsXj9vc?= =?us-ascii?Q?4zazp3EVWga9TnZxuqUPSlFrkc3IoxAQM9vZZ4cf7WUGYxVJrdg5hHZTtfYx?= =?us-ascii?Q?4sx3OeuMTZq2IGu5pGeT5Vo05me4rBivU2b0xx0EVQ1rV/Q58sDC+BDhFqak?= =?us-ascii?Q?6IDpmmwLmwkLcLT/luhuNW7yoN4PTk6YvWlEfiNI7ICF+S7dcqPRC9UYH/0d?= =?us-ascii?Q?FlHew4G9jwFU/dW7PEoOiotScZY11EPbHxa5Wko3PMX6KJ3/yHiFKsPirBUQ?= =?us-ascii?Q?yoZ352hdzNFYmlxvL5bp0iRq9Bl3SPVg2Hkgi0liCOCedD1aSU8kSKB+6fUI?= =?us-ascii?Q?IjKv1R4/wi7m6Oqk9mg1vGPHs9H61w5KcNi4dakgYj57l9JWAgLU2ZVEPKIK?= =?us-ascii?Q?8IZwTObwAi/SrC7bMVh2EMaPCnPRA8O/I9J1guxZmEg7RlMSXL33dalC7dfd?= =?us-ascii?Q?LDxraB00JQpgifuS0X+YYoaSKkSQgjsIdhXQilMHHyrTBvbwDvhkGSPy2eHD?= =?us-ascii?Q?mz2zznLSQSyErWVaTKLOWtbZZCS51E1FcV7w+T7DuLnXvG40D6CAqxdSgqHg?= =?us-ascii?Q?xvMgtHJfsFziDVKOPxkKOzKLownFem8gwywJgyiAenLtQRxrGX6cJsC5znUX?= =?us-ascii?Q?yK7K3gmifThlDGTUJWo5c6zIArCqQzV9hdJuO4wKwZ+q62O+Hh9H/UW9CgJX?= =?us-ascii?Q?EUldpRARVGcUSfLGSqvlClcOcbjUPTIrT1B4DuYDrGEW9mBVSjNTjlzArhmA?= =?us-ascii?Q?J7cqpAFMbz7sffMG0Puj2GzECPkwTCaz4vjZ7JR0B3mudas8VpanrsWDxEsN?= =?us-ascii?Q?RtJ2fKomqWBPuxmbP8ueU0vVceyxzwp+nxTYQDJitCV+4LiaCU1bPEWkAnSa?= =?us-ascii?Q?I92pJTDL5w4+EqOrpMdlG8CCyr95nP/OPphTZ9cV+yfbpkcyQQa537TAUFo2?= =?us-ascii?Q?kPupAq3imLrFez2ERCA8BIZTVerGcF0oMpKQVj7YbxMjN/aVVu7V0GowRt48?= =?us-ascii?Q?Og4J4PtnEkN0AO364qyfdIM5SHnaxqkEgKzFXL4V3U9O/oP9rdiNiI/UkBcf?= =?us-ascii?Q?/MopYQVAPxRq2eJd5GUzwg/MtuLb8fiUyWyvjWsEYzubSylyN80A5ITLw2yq?= =?us-ascii?Q?rA=3D=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: e5QL+UltWhgNK55CQ4Vdx9W9ZxpSLyDyVK6fY9DCuovKgOOSapO3+bPIJQMtY5rj1R7/IqW+zEN+afxRwk4R5SlbtRG82cg8NR0XGhbSEGeazuXVWr2sMWKXE1iBqhG3gnFbtdJLy3CcmyLGDVaBSGXJJ5mWRia9gGc39EYC1x8Oc7TcnJksIl9J/mI6hfv2sBqkuTXmNAEF9dyL9ZdVwidMIpZ1FgnjYx9fvJF7ntkSdDtrcxYWGBTtQW3oeN1EUeaj3iqj/BWesfhjsfmb0olv/DpJJtCopsNx4A9gTRCr/FFAtuD9hF9UevmqIu8qDX36dZGJGvyNUnIOKj+m40TjxZRbK3SoINEPc2lbMum2muifWhMpQPoNRdw+NWl3xvrLPO/Q0CxwmaaGvTIGwH54UGVXwswdwlj5t5Src2OpWOjUJ7YNyIDqCxnHKLuL/lPRZ7wgBK97aDjHVjaLe4ol3TPNNaJd1rpVPsNO0ZERyDB1ty0eqrsUX8/nAYTRPsgO3J30PN32KpU09Koo+Z37XEy/suO+CZGP5fava4+B/9Z5fsTs/hWFF4Ip9Di5KDcvnjjr+3A+k4fhrKFq+BMKxPyOlakkit8CCjQgKiQ= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 80c6830d-5a12-45f1-1b9f-08ddf0a7c7be X-MS-Exchange-CrossTenant-AuthSource: DM4PR10MB8218.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Sep 2025 20:22:35.9639 (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: 6ZMr4UfGVvpBLrDD9mwJEuoXh3Epd/aFmFW5cGmHA4YOAMVpamZ0QFdZPchXOxxFnFNhkrWAQDT/324pWRoA8J/WuXc9oOLOyrLljrhpQSY= X-MS-Exchange-Transport-CrossTenantHeadersStamped: CO6PR10MB5789 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1117,Hydra:6.1.9,FMLib:17.12.80.40 definitions=2025-09-10_04,2025-09-10_01,2025-03-28_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 spamscore=0 phishscore=0 suspectscore=0 mlxscore=0 adultscore=0 bulkscore=0 malwarescore=0 mlxlogscore=999 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2508110000 definitions=main-2509100189 X-Authority-Analysis: v=2.4 cv=esTfzppX c=1 sm=1 tr=0 ts=68c1de10 b=1 cx=c_pps a=e1sVV491RgrpLwSTMOnk8w==:117 a=e1sVV491RgrpLwSTMOnk8w==:17 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=z/mQ4Ysz8XfWz/Q5cLBRGdckG28=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=wKuvFiaSGQ0qltdbU6+NXLB8nM8=:19 a=Ol13hO9ccFRV9qXi2t6ftBPywas=:19 a=xqWC_Br6kY4A:10 a=yJojWOMRYYMA:10 a=GoEa3M9JfhUA:10 a=yPCof4ZbAAAA:8 a=V8PVCHvh7cpLA54rH4kA:9 cc=ntf awl=host:13614 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwOTA4MDE2NSBTYWx0ZWRfX1r+yBw/PKBbE JuzNuRhiahSbCxapF6nIwYRcrkXrGSIdRS2sSsm6WRAa7/L2KrYgH6mfVgDlE0MWCi2YBtc6gMg BUfqzLtXYfi0tZqTlwhOeY/cHVuHMunezOPBMVkpB26PKVRz9C3KYLCUk+UHJr5hJ22pBVNBI9x X9FYTdDe08lEm/XaHJnxz8rlBQJt2uREWTkCqAfLhbuPkXbH+AsZfEL1swY0EJYOnp58oEb6GXl Xs6MeZ22kITolBXA8goNM85jkAjfuZw5/loSJcLjCiDH3Az4Yr0FtkIr5ccNATP9xCeHmft7ScQ 0RDReZHdy7QRcMLgewFYAPuF3P8LsIOrym5T9RBPnJBDqulQ0FPk6PorV3CppYtScA/GD1X+Z6O 7wPXqzd7WYgRrjs9NhoHVALUqqQhTg== X-Proofpoint-GUID: 9zhFaUdicrhfnM6rPj9dikALdF6Jz3Wl X-Proofpoint-ORIG-GUID: 9zhFaUdicrhfnM6rPj9dikALdF6Jz3Wl Content-Type: text/plain; charset="utf-8" It's useful to be able to determine the size of a VMA descriptor range used on f_op->mmap_prepare, expressed both in bytes and pages, so add helpers for both and update code that could make use of it to do so. Signed-off-by: Lorenzo Stoakes Acked-by: David Hildenbrand Reviewed-by: Jan Kara --- fs/ntfs3/file.c | 2 +- include/linux/mm.h | 10 ++++++++++ mm/secretmem.c | 2 +- 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/fs/ntfs3/file.c b/fs/ntfs3/file.c index c1ece707b195..86eb88f62714 100644 --- a/fs/ntfs3/file.c +++ b/fs/ntfs3/file.c @@ -304,7 +304,7 @@ static int ntfs_file_mmap_prepare(struct vm_area_desc *= desc) =20 if (rw) { u64 to =3D min_t(loff_t, i_size_read(inode), - from + desc->end - desc->start); + from + vma_desc_size(desc)); =20 if (is_sparsed(ni)) { /* Allocate clusters for rw map. */ diff --git a/include/linux/mm.h b/include/linux/mm.h index 892fe5dbf9de..0b97589aec6d 100644 --- a/include/linux/mm.h +++ b/include/linux/mm.h @@ -3572,6 +3572,16 @@ static inline unsigned long vma_pages(const struct v= m_area_struct *vma) return (vma->vm_end - vma->vm_start) >> PAGE_SHIFT; } =20 +static inline unsigned long vma_desc_size(struct vm_area_desc *desc) +{ + return desc->end - desc->start; +} + +static inline unsigned long vma_desc_pages(struct vm_area_desc *desc) +{ + return vma_desc_size(desc) >> PAGE_SHIFT; +} + /* Look up the first VMA which exactly match the interval vm_start ... vm_= end */ static inline struct vm_area_struct *find_exact_vma(struct mm_struct *mm, unsigned long vm_start, unsigned long vm_end) diff --git a/mm/secretmem.c b/mm/secretmem.c index 60137305bc20..62066ddb1e9c 100644 --- a/mm/secretmem.c +++ b/mm/secretmem.c @@ -120,7 +120,7 @@ static int secretmem_release(struct inode *inode, struc= t file *file) =20 static int secretmem_mmap_prepare(struct vm_area_desc *desc) { - const unsigned long len =3D desc->end - desc->start; + const unsigned long len =3D vma_desc_size(desc); =20 if ((desc->vm_flags & (VM_SHARED | VM_MAYSHARE)) =3D=3D 0) return -EINVAL; --=20 2.51.0 From nobody Thu Oct 2 21:39:18 2025 Received: from mx0b-00069f02.pphosted.com (mx0b-00069f02.pphosted.com [205.220.177.32]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 3DD0E2FB633; Wed, 10 Sep 2025 20:23:22 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=205.220.177.32 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757535804; cv=fail; b=V2ZuBjZlFq1U99fUbfRjHVfHRBtfjI7NaeOHqnsuiK3yJNnJXwC9AnfAVjD/xAWyO8nMQK2Ji9V8MLlWRon1DPnXQx9x+C+Vwpl+W3a6PFgg5fyPRiOzXvKRaCZBHTCU59P7N/5nFUqmQIvHV+CLG4b+ZhKZGQzzKEFm3zUMaPY= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757535804; c=relaxed/simple; bh=p8SWiLSqRYUUS/tzzEdlclpVNIvDTSSMePa3PlsKnx0=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=ZbRMHtXDqZpdmRCeIeuNezh8gISBiOEhrcTHRCGE39HhesnDR99BwVHQeEy98fghCPena7yr1g9WH4Ayq52fOx02aWwsrLNUMDAPVgcFtaqVQgFxwooIOrY3BuxGv4UOa0KxwDx4Hoxg1nrF8yDSVfm+iJGeH1kGy9E5/os0O5c= 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=DJg4eRCM; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=ASaT0Qlz; arc=fail smtp.client-ip=205.220.177.32 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oracle.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oracle.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=oracle.com header.i=@oracle.com header.b="DJg4eRCM"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="ASaT0Qlz" Received: from pps.filterd (m0246630.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 58AGfjnb031746; Wed, 10 Sep 2025 20:22:44 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=W30YNRG8/lpU89Law2KHsxlhvmZdHGHDHObMYfthywc=; b= DJg4eRCMPY6pGUJ4fHqzq3iljOpLGaGPyu/27yjzLeN18uMtSYn594n20rkDLoBv uH1XtQchoFHjSXQNiaSRP918fS51twSNTFhiPnqTjHMnRnuysbzpH2dnSOmHL8WM JhG9a+nugPj9ZbE/2fmv+REIQ8pdgb/R0oE/GB8ak+v7XXGREydpGYjW1ojixnEX VmJGbUfdJqT4LXpIVN8jFyLI8t3V65ysaKYb8nrN4dXCa+0Nnn9QqpRvJAClQK7V 3TjZF+a0SYU5SvKN8dC7AAD8j89vIuVjBr2QJKqRsvWbECznNxB9PdxVkc7qYwxm 1R2OkA+So0xbKZsughqiyw== Received: from phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta01.appoci.oracle.com [138.1.114.2]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 4921m2vyxh-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 10 Sep 2025 20:22:44 +0000 (GMT) Received: from pps.filterd (phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com [127.0.0.1]) by phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com (8.18.1.2/8.18.1.2) with ESMTP id 58AJImr6032819; Wed, 10 Sep 2025 20:22:43 GMT Received: from cy7pr03cu001.outbound.protection.outlook.com (mail-westcentralusazon11010002.outbound.protection.outlook.com [40.93.198.2]) by phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 490bdcg0rc-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 10 Sep 2025 20:22:43 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=XqGyrFr/pyZ4H9GyQBoYEEQTTWhz5iFxge9FYAKeKCsG24vhhAenUnpV15Ks26aqV+fUDpkpSNS8e2cBMH6HN8Z8iFUcCeESbFZkBjIEwAv2YzO5SAOdKN4XXjoOhVOPvPj16FVJwiyKDPhgIMMTFhMitT2K6fzVlQDNZEohYRGo1krC6UHMFVz8mC7gIrQZZRuaIVFeZUu71D4yVnd4UQOG5JNC8jfueq2Wo2FLzqaAgbQu0JBYgpRHEl/4xi6wpyIDai91vWVhcjOeXe98H6RSMmSadPrQLrL10vP0R4+Ge/T2LzjnQQqPDLYmlM3ejTAf59JxMhMMcFVXtpnDVQ== 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=W30YNRG8/lpU89Law2KHsxlhvmZdHGHDHObMYfthywc=; b=oGEjy3DVRMUn1GJs3ICLdBKbvMcQPypm5Fr1/TXiXwdYMB8Ncqc7fSQcg1KYZGs1WWFG9RF7/BU3aVusX3aM8tAWlMmQH7IeAT9cS+zAmVz/GJ7+S16wyl76mkHKGVtPIbTf6DFqEG2tivXrI9g4fttFdwq8DArJOIp0yweakzRqA9j4lEbqhP2/krSczxfwhbLxs47ch9ThPG3idPA6dEFy4KgZ4tCeKCoByEbMqGog+5Nh5jmBlIQ85fGOPNwnbtSpgBeGBPlnZr6WnzzQC/mQrmNeGpH4jclyrCbDGKlWxbwjzPlGpUbgdbstJGcR7TiuKdem5w2RhttnshpY4g== 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=W30YNRG8/lpU89Law2KHsxlhvmZdHGHDHObMYfthywc=; b=ASaT0QlzwxWm9dpFIM5juPyoyZtjF/YW4ir7MD3edW/amfz+kzhxkQ4Yf26ezmZuMXHEzY964VzJK2LQsDM6gR1TFHwGd4o+xnR8ru5c7fpdP4080nuutYyBzTMtyZj/N1GugANp6GfZdjatR4oZHndaHm4+0Dw4DDdISBHwWVg= Received: from DM4PR10MB8218.namprd10.prod.outlook.com (2603:10b6:8:1cc::16) by CO6PR10MB5789.namprd10.prod.outlook.com (2603:10b6:303:140::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9094.22; Wed, 10 Sep 2025 20:22:38 +0000 Received: from DM4PR10MB8218.namprd10.prod.outlook.com ([fe80::2650:55cf:2816:5f2]) by DM4PR10MB8218.namprd10.prod.outlook.com ([fe80::2650:55cf:2816:5f2%5]) with mapi id 15.20.9094.021; Wed, 10 Sep 2025 20:22:38 +0000 From: Lorenzo Stoakes To: Andrew Morton Cc: Jonathan Corbet , Matthew Wilcox , Guo Ren , Thomas Bogendoerfer , Heiko Carstens , Vasily Gorbik , Alexander Gordeev , Christian Borntraeger , Sven Schnelle , "David S . Miller" , Andreas Larsson , Arnd Bergmann , Greg Kroah-Hartman , Dan Williams , Vishal Verma , Dave Jiang , Nicolas Pitre , Muchun Song , Oscar Salvador , David Hildenbrand , Konstantin Komarov , Baoquan He , Vivek Goyal , Dave Young , Tony Luck , Reinette Chatre , Dave Martin , James Morse , Alexander Viro , Christian Brauner , Jan Kara , "Liam R . Howlett" , Vlastimil Babka , Mike Rapoport , Suren Baghdasaryan , Michal Hocko , Hugh Dickins , Baolin Wang , Uladzislau Rezki , Dmitry Vyukov , Andrey Konovalov , Jann Horn , Pedro Falcato , linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org, linux-fsdevel@vger.kernel.org, linux-csky@vger.kernel.org, linux-mips@vger.kernel.org, linux-s390@vger.kernel.org, sparclinux@vger.kernel.org, nvdimm@lists.linux.dev, linux-cxl@vger.kernel.org, linux-mm@kvack.org, ntfs3@lists.linux.dev, kexec@lists.infradead.org, kasan-dev@googlegroups.com, Jason Gunthorpe Subject: [PATCH v2 04/16] relay: update relay to use mmap_prepare Date: Wed, 10 Sep 2025 21:21:59 +0100 Message-ID: <3e34bb15a386d64e308c897ea1125e5e24fc6fa4.1757534913.git.lorenzo.stoakes@oracle.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: GV3PEPF00007A8A.SWEP280.PROD.OUTLOOK.COM (2603:10a6:158:401::61a) 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_|CO6PR10MB5789:EE_ X-MS-Office365-Filtering-Correlation-Id: f64202fd-bfc3-404d-1ee3-08ddf0a7c96e X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|1800799024|376014|7416014; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?98UnBXIMqNmQoYxI3TuWXMe6V3nZPkXP0hRmJRz+aXEYypEnMLgvyAPPhAqx?= =?us-ascii?Q?vV9kf8WMYM608xQiXk/NJDzpFI+BRHQu3ocyyRkyAGGxQ9rxwDaStTpHImnL?= =?us-ascii?Q?bME8Dl9qtYJFkWy1HOu0Ilj+AFx1VwRW7X1nr87g6TZvl3fvT+yU0+KpWA1Q?= =?us-ascii?Q?GTgvn6BAjzWYJvU9tvFaB/HqQXdmUC8f5NQ64CataiBT+leInJ7+KRJ0q8Yt?= =?us-ascii?Q?rgEMorVwA0wdUygM0PxUx7KQ8Con1YzsoJZ9FAqTEEKDTlYkNHPT36qTdLo0?= =?us-ascii?Q?U5hR454HUc3wECFzvDQiHjjivisJ45lZVfxO1tVN5EWv1au+zSUllPJhC8pl?= =?us-ascii?Q?8iPcK2vO4kECXpPoxry89Uwq+oMSJeIb1WVcLCAylPwk1UHgyEPLY/HapuLN?= =?us-ascii?Q?QzgBCKScykpjyYhoj6Yj0HwgKqyJcECARxs6hKc4C0Z7z/Nlt6G9Ag9c9WDy?= =?us-ascii?Q?rLjLQOpbr9MfssUH6oSPfWBJ7K8z1rJnjYSD5uD5C6WeWmu1mg5UQbgi0vo9?= =?us-ascii?Q?Xc8+d7pm5/xzl6saYqg4ddYzirjvtScu2NyyfQnuNzv4Fv/Vj17pxWLAkzvR?= =?us-ascii?Q?Tsp7qap8sTIk4VomyTCvVJd8IWiuN5mK+C7bceycdogFAOYjdoA3c29T2hRT?= =?us-ascii?Q?E7s/Yf3vwo6ZzDm0dApVoBM1D7vSjMtrb4QVQYTjlOr0a91NN1XUfJ0sdEgS?= =?us-ascii?Q?B09g855UIIuhp8dbqa9ub9QjrQay0lv/iImLr0mzkFILnPx4XcFoaxB3XUCt?= =?us-ascii?Q?kJk3seOIacpRTDXjvENuxdqbA3/GZ0CxoAWwX2dp9DVuNxfn62Tms10hoB6V?= =?us-ascii?Q?a7LljsshoK9jV2T3GnWw5BRUF3C4FjnvpAaa3sNkmYLiPWVwCzfpaCtejPep?= =?us-ascii?Q?bM0pE7NOQTTk5NE1ib+3uTzWG2f3DzOLUuoLrC2BccThsBRboSV7YKnri3ZL?= =?us-ascii?Q?DGw2SmObDZNnUm//oaJqV9D5W2Lsipwn8rMD4SPIwKaqKU0lPPFKRerj12rx?= =?us-ascii?Q?cko/yY1FFMISbLkgNexLi3zw7bhAj/LSk8H8owaQFiUROuZp1WwPdyOqH+U8?= =?us-ascii?Q?YnmDukUAD+e1KmjTppkZtOUCClrQYS7rt7H9a/HS3T1wg1BLNbAPIxNGTzO9?= =?us-ascii?Q?MdD4hala6yy4YXuBhreK7KlPmEHMH2dlQjsHUrxAp3qEqblonGaLYXFY0QPd?= =?us-ascii?Q?J3HmxHL/nNh8VcWTxTdkCyoocvB0EIWH2g3rD9HomExP3KPmRDQsLcW1rS9B?= =?us-ascii?Q?WWBLCTPFdSGW3zBrpZfWrHhhfR1fZJUzjyNFT/iCb/hfPRaeGzDV1ez30d8c?= =?us-ascii?Q?DoSlIVCVqJPddXyWgAMplJSa4vcNYBdvGvqWinmHxF0RhTkxa+6Uwziza1xr?= =?us-ascii?Q?JOnO5GpHHauhV3QpMaaj4npzGLc2Km/p6f5MCygSiZEuhPz3XWFNA0PBVgr0?= =?us-ascii?Q?Si3qC5hCwJE=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DM4PR10MB8218.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(1800799024)(376014)(7416014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?i9twudHJF1wu6JZNbBELsSlsFsutrph4JeiqCToSIKmDf6yYXpcKSYAxrNdC?= =?us-ascii?Q?XW0mX7odiZTUTUG53uXgMgJdhk585ZfkRUSpD5MSwEvaZE5cIfVq54OMN8Po?= =?us-ascii?Q?nbzYMEIsaf7Axv1YQjD8x5WeBkOAldLCjwWuTpxVmTf7D+OKF+nHoFbBgz88?= =?us-ascii?Q?wJPHyBVHpIfVYOwY3eLQAGyYPq+xjINtsM341tPxc5Huc4Rtk63LtHUls86N?= =?us-ascii?Q?Ug4KxLosbUrZvx8d+0e411AG4u1gYEgQUU80kFfKfrtsilTSoJwEsROzVI8a?= =?us-ascii?Q?GEHGu/qNfUaWlasAeuMWiMdxlM83CVgW6UBux83oLV95p/0Gh79oUutov416?= =?us-ascii?Q?TtZ1FyujOEkHGpOddIc8zOLbQe2DW8RZp3dRr3JSHkCeICH32t/04ITsFTRb?= =?us-ascii?Q?cCuALorm+fNM5UtHwhBNvRZnH56sZzqFe3Azn+VlH9YJpwLLLa/u7LfQVCGK?= =?us-ascii?Q?1RaAdOXZPZP/cIlvRz4ftYRBGcjOSBl6DvEECPSqo2MDBQpuntPt0wanoHjE?= =?us-ascii?Q?fz6ZBTrrR9x5LlT0LPnWeVgltpACOH1FNQjyB/o37nPNYoOq4adEVU+gTAPv?= =?us-ascii?Q?ySs/PLp3AABwinYkdC7uPVywfhpgkVIZ/AnySXtRoNb2V1bKRuRVFahxdO8y?= =?us-ascii?Q?9clEqUrsMw+4zZoJlRmmH8XwsAKVA/RcSY0PAlmpPPYokAF33yhUX+eyiPGf?= =?us-ascii?Q?nWmoztH3SM3mzlXzhAhzSQ7nVjP3xDGmbkBLG7z+PYX2jV4s0RRuEbhlvpL6?= =?us-ascii?Q?cUQjyzutFSEb1wt5V9gdzfN0ZKiYQC4GyEb0Gqf33Fk+NkaUZgIRmCcTNIUK?= =?us-ascii?Q?DNvZ1oHV83z93c+vVqAuD0V1oDovFY88vP7yLZhdPKzW1BtSQRGpcC93yXNO?= =?us-ascii?Q?GgPZZP3casKYbLOZBLuCch5XxXuhx7llTP5JsiC5yj8fe3JwYZwl5D+Exi4U?= =?us-ascii?Q?nihTFlUFeDJ3DZZEeTQcr3QlPhwwdjfLfcprcGhTVQ4ZHLQ3EYS4UUPNgDoY?= =?us-ascii?Q?5dKTMILEvV+uCkKgf/O6du22KUzDpYAWThh/SnDbyZ/OPvKaR7VpkRAvp8HH?= =?us-ascii?Q?MOvq4dNSyqq75T2XoO0h6pcMxbH7lfL+Z/bGOJI1IopSF71EIRuD2P5H6UCO?= =?us-ascii?Q?K1O6IMCMsFIKdHUz+X6I1SjQYPdNIqmX8gwRr48Yz6GJ8LoSX1BRcpKjKA0C?= =?us-ascii?Q?fBExyrjH8f/Q0HclrhYcPVZ2Y2uJyjSM8Sihg375BTG4RIDEnISWaeyooeVd?= =?us-ascii?Q?8hZ+305VihoZxZXGLFp8YPxgtpVpyYHp47BaNdGaa7Nsx94wuet7qZK2d3ln?= =?us-ascii?Q?Xp56OlW7vIbVWg/IKuqDHGblmszHBcJkApRmBbJoAikVI+T6bsqeLriuRHXH?= =?us-ascii?Q?AuBNWnVAxIN2EG6IQvR4+dgVPJRr0vIpOruZ032hmH7q1gvAuKBdgRiFaYzu?= =?us-ascii?Q?pUj6SWD/f0bdQFxTL4kLTHf+Q4oPKQoZPBGckCrSypLaA0ugi0+LSEV8rFdw?= =?us-ascii?Q?+9FBny+z1z7uzNs1lGo6Rb+7nxsRGlr/YlL4bzpuUMJV9q5U9ay8ZFKsjaww?= =?us-ascii?Q?hT95/XYHh/bMQBm2K+/9LgbBhjMBxr7gL/S1cnC8jA6LvfIEOEYJI6slx0Sa?= =?us-ascii?Q?zg=3D=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: jVcb4CMjz6PpIDipLEHqrW3Dbopufj65mM7tXrY6M/TFIqbEqheynQd5wk2uDY9T+GOzCRe0DIv5C1HuJWicCcnfHBwPO3VSIhFl2ILiId4jQTdXhr6rUIgL93T6WEjg1vZq62f8QQ1w97552Ykpig6voC/CNLxsne+YiMSwHRavmAdG5KpuEr3MOg5oVjGpAs1RNP9XE44ivhIMKvWusJFQStWXuEDgF13DFwoZyuWKW7lJyL1UqLvjhfQMUDiiiCOzhZ2TVRj35e0dU0XYzbJ+moS45hKjVRIjFAVrPmor7QX/DZNXpoe8wRy03iBM17eIRSOdRzkxbL1AVOwGTFd4plOofMcC+L4B1uObul8ckafbOmp3hdWLotJL0TnIE1Wod0621VV1VJUYHEjtOOt0Iw7E1eX7WptRT4CLl5SRcWertxmkcRndYNQYNBo7lP1iwga4Vc5RZXMmtaNFrjIu/bvvVrTpI2Z3iQp60x4xobyzdaG9G8NDPUEgpNyXvETwEr7IRguDIgwCY2q5dtKvQK2py2dsMNj2vrY2thOdOQmKWSHEQ2g3oKyHr/djNW7oO39LvKhy/SAaA71jI4PRUE7VP3CD5jAzwsUP+FU= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: f64202fd-bfc3-404d-1ee3-08ddf0a7c96e X-MS-Exchange-CrossTenant-AuthSource: DM4PR10MB8218.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Sep 2025 20:22:38.7905 (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: 4ons/cXvo/Xys+KEJKwiWjZA5KeS/YdF1RdDmBpmU3ExUAJu1czFlln9XKyMkvqhqqgaVz95nv/nKIXme3zNX+CFqP/Lsp2NqXkitAWuucA= X-MS-Exchange-Transport-CrossTenantHeadersStamped: CO6PR10MB5789 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1117,Hydra:6.1.9,FMLib:17.12.80.40 definitions=2025-09-10_04,2025-09-10_01,2025-03-28_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 spamscore=0 mlxscore=0 phishscore=0 bulkscore=0 mlxlogscore=999 malwarescore=0 adultscore=0 suspectscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2508110000 definitions=main-2509100189 X-Proofpoint-GUID: tAJTQQMvmeyWHxCzvi3ufsmK6me-MXpf X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwOTA4MDE1MSBTYWx0ZWRfX3wFGBULK5EL7 kf+Dylq7JJtiqmb/UG2p/ikaB+LvjuuL3QeW9SSVA//P0/l76YgHXcZvdUIP852TrBljb0rktl0 Iuf5viOB9wRf/Ip6cg0gpc4UfTRsys3nGXIXj3E3pxvprcdaMu6xtwBxefNERGnd8HMlosTdt14 oAGk2afd1PD31CHbvN52xG8zTwvsEuW6JI+sa4lFbbs+5vYHGg0B5s1mMsbRoNi9hOqvdCgoDwY LFPjOphcC0zOWZerqNMCTauFPHOeFm6Vl0qC/E7MYJznN1J9GRcORUUatXcgVyfsbFZ2KTdHzv1 wacers/AMKjoGYqs8zSZfa6DjYAhdxxnNuMM4J/lOBzxKXn6eQulkMSSSH1/jqDtCMtAKg4abTR Y/L5Qzq9 X-Authority-Analysis: v=2.4 cv=Dp5W+H/+ c=1 sm=1 tr=0 ts=68c1de14 cx=c_pps a=XiAAW1AwiKB2Y8Wsi+sD2Q==:117 a=XiAAW1AwiKB2Y8Wsi+sD2Q==:17 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=z/mQ4Ysz8XfWz/Q5cLBRGdckG28=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=wKuvFiaSGQ0qltdbU6+NXLB8nM8=:19 a=Ol13hO9ccFRV9qXi2t6ftBPywas=:19 a=xqWC_Br6kY4A:10 a=yJojWOMRYYMA:10 a=GoEa3M9JfhUA:10 a=20KFwNOVAAAA:8 a=yPCof4ZbAAAA:8 a=kVp6y68UWkg0hX7IE8kA:9 X-Proofpoint-ORIG-GUID: tAJTQQMvmeyWHxCzvi3ufsmK6me-MXpf Content-Type: text/plain; charset="utf-8" It is relatively trivial to update this code to use the f_op->mmap_prepare hook in favour of the deprecated f_op->mmap hook, so do so. Reviewed-by: David Hildenbrand Signed-off-by: Lorenzo Stoakes Reviewed-by: Jan Kara --- kernel/relay.c | 33 +++++++++++++++++---------------- 1 file changed, 17 insertions(+), 16 deletions(-) diff --git a/kernel/relay.c b/kernel/relay.c index 8d915fe98198..e36f6b926f7f 100644 --- a/kernel/relay.c +++ b/kernel/relay.c @@ -72,17 +72,18 @@ static void relay_free_page_array(struct page **array) } =20 /** - * relay_mmap_buf: - mmap channel buffer to process address space - * @buf: relay channel buffer - * @vma: vm_area_struct describing memory to be mapped + * relay_mmap_prepare_buf: - mmap channel buffer to process address space + * @buf: the relay channel buffer + * @desc: describing what to map * * Returns 0 if ok, negative on error * * Caller should already have grabbed mmap_lock. */ -static int relay_mmap_buf(struct rchan_buf *buf, struct vm_area_struct *vm= a) +static int relay_mmap_prepare_buf(struct rchan_buf *buf, + struct vm_area_desc *desc) { - unsigned long length =3D vma->vm_end - vma->vm_start; + unsigned long length =3D vma_desc_size(desc); =20 if (!buf) return -EBADF; @@ -90,9 +91,9 @@ static int relay_mmap_buf(struct rchan_buf *buf, struct v= m_area_struct *vma) if (length !=3D (unsigned long)buf->chan->alloc_size) return -EINVAL; =20 - vma->vm_ops =3D &relay_file_mmap_ops; - vm_flags_set(vma, VM_DONTEXPAND); - vma->vm_private_data =3D buf; + desc->vm_ops =3D &relay_file_mmap_ops; + desc->vm_flags |=3D VM_DONTEXPAND; + desc->private_data =3D buf; =20 return 0; } @@ -749,16 +750,16 @@ static int relay_file_open(struct inode *inode, struc= t file *filp) } =20 /** - * relay_file_mmap - mmap file op for relay files - * @filp: the file - * @vma: the vma describing what to map + * relay_file_mmap_prepare - mmap file op for relay files + * @desc: describing what to map * - * Calls upon relay_mmap_buf() to map the file into user space. + * Calls upon relay_mmap_prepare_buf() to map the file into user space. */ -static int relay_file_mmap(struct file *filp, struct vm_area_struct *vma) +static int relay_file_mmap_prepare(struct vm_area_desc *desc) { - struct rchan_buf *buf =3D filp->private_data; - return relay_mmap_buf(buf, vma); + struct rchan_buf *buf =3D desc->file->private_data; + + return relay_mmap_prepare_buf(buf, desc); } =20 /** @@ -1006,7 +1007,7 @@ static ssize_t relay_file_read(struct file *filp, const struct file_operations relay_file_operations =3D { .open =3D relay_file_open, .poll =3D relay_file_poll, - .mmap =3D relay_file_mmap, + .mmap_prepare =3D relay_file_mmap_prepare, .read =3D relay_file_read, .release =3D relay_file_release, }; --=20 2.51.0 From nobody Thu Oct 2 21:39:18 2025 Received: from mx0b-00069f02.pphosted.com (mx0b-00069f02.pphosted.com [205.220.177.32]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id DF1272EF64C; Wed, 10 Sep 2025 20:23:24 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=205.220.177.32 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757535806; cv=fail; b=bgKw0NLHxpbzitpwaw//F4ACh79NEBWtDfFnI6j+T85F9TlJ6mNHtL3A/+YekMcNoauxWPKnZBjto4peDBi74LNpXkrZoMBZTZhqOGgXVnBeH+r/isNpC9uFgtHYj7QhNSAs37nX8VESMdruQlgpVcDo+0xAKo3Jja+wGpUrEOY= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757535806; c=relaxed/simple; bh=i5q4+c+zY/lV4Mh2OKNou8Bg0LyVUwKxrwsb0YIZ20c=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=dBwN+009JGFKFh6k74fp5AvYUb0TDh7wPUcK5IEjpd+CIb+Hwh7Z4Ptwki+U5WNydfeeZpEe326GGE/ofvnhdUW73SXSSe+GzXsjbi3a1XTHpNEHmDH4S5Vlz+yGInCn8XIg6uZxh1CyxmqUOIwdTSe4s+hghWRzNTaQ8QUEaRI= 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=PAxM6SFO; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=dYkIJSmw; arc=fail smtp.client-ip=205.220.177.32 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oracle.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oracle.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=oracle.com header.i=@oracle.com header.b="PAxM6SFO"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="dYkIJSmw" Received: from pps.filterd (m0333520.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 58AGfjHn009713; Wed, 10 Sep 2025 20:22:49 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=cc :content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s= corp-2025-04-25; bh=HmoYH7UtjFIU7mwG50sNABYBbWEke9S7Scd1ARsxMAg=; b= PAxM6SFOB/8RCIMMUM7WRilwUforWbdz7KILgpW1AkyRnRevFzzqbsQPeD6PJN5A fxMQnNhlDSaHjJH3et5bI9gd9fPQt9dJxBazSo7zHPHnUvOaOzWi2ecMsbJP/1zV CXw3fjTXek2kDRAaZmotUlsscCahQY74/IlNtnPEsUbc91yUuDout3od4Ag4C0O6 HjXCt2vwU+UAoCRoArygjGYR1oXohbxMZn3ZWOjRrPno77ZCnwBSal5eiMYhmtGJ jBMwxyRoUR+cPa/MwtbPv+x8Dhon35OgUvciXKi8MTaO1fMmz2YBXLwTT23uMEAF bZD8yKr600yHId4JRrBZXQ== Received: from iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta01.appoci.oracle.com [130.35.100.223]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 4922jgvy33-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 10 Sep 2025 20:22:48 +0000 (GMT) Received: from pps.filterd (iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (8.18.1.2/8.18.1.2) with ESMTP id 58AILQCL038766; Wed, 10 Sep 2025 20:22:47 GMT Received: from byapr05cu005.outbound.protection.outlook.com (mail-westusazon11010027.outbound.protection.outlook.com [52.101.85.27]) by iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 490bdbgtpk-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 10 Sep 2025 20:22:47 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=E1lTFGNXZFrbTflL6ORyVe2q096AjzvOgLWFJJ/Ke3Q8ly5FSD9QJxzlMvDZXmnsRArJqcEj16cgr4/zKBJXLesBonpLcasfOUCp0r/aRr90Rvm9wwAxzUHWbtiZwrxTYicP4XJ/ZP/pITh+K6y5B37zGXoQN1l2km2VaB5GgilRFs+pLXjM5GO8pS/x7pNuh3/M4xjV8FikzWZrnOzPSIVD/6cdHFhj0tqll6xbEiEpIlqrmsHAu3fkokxLFp7ACOcLaTPKcrB6yBv4tBScUu8oaFZ4Tu7AhxfE2H9ccw0/lGCk6m0SXZMBQn8KijkENQUbqzX3oVcuxQb010qRbA== 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=HmoYH7UtjFIU7mwG50sNABYBbWEke9S7Scd1ARsxMAg=; b=X9Th1m/SnAGzwfcyqRBQqHVFADHy/9RST4RntfJ+ZqGlNKrPBx9e+9rOhJ9e1pONOsBd/8KgcutODw1gYQuXPW9Jrenb7odqITMoR1dPL8mRg7BIeP/zTFA/UmyCF1fiIFwQvQ4YPWFRmzTYS62/HcOlMJkyDAVPpfDkAELzJvYg6+yms7dS/pUEX6d2Zyg3wyM47xewDWGZxX15o6+jw2lk+CX0NzOFUv/xGi3ec7/kIWnLQVHcgQ+YaSpM324SvMcfsciY2T9bW/75J0eVvp9e5zfJJbU6QB9Q2eO0jmwFmTfT1cMX1qCB7Jy3K3YEFu2fHzVmRHWhy+Lldt/DFg== 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=HmoYH7UtjFIU7mwG50sNABYBbWEke9S7Scd1ARsxMAg=; b=dYkIJSmwbxozQwKstlWPzFghz8xtbThy+Mb/ucd4dz6hNSp8kDuaysP00Y2BkILJTDnfIgkQs5naIrzGPY+7tWIKlNZYj49JmxxFIcan5B3CxcvT3UyBRH8KLXK/eXpH+jwQem51vcpiXsmwcVwhTubtKpU0MKR5R7puZKeIigQ= Received: from DM4PR10MB8218.namprd10.prod.outlook.com (2603:10b6:8:1cc::16) by DM4PR10MB6278.namprd10.prod.outlook.com (2603:10b6:8:b8::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9094.22; Wed, 10 Sep 2025 20:22: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%5]) with mapi id 15.20.9094.021; Wed, 10 Sep 2025 20:22:41 +0000 From: Lorenzo Stoakes To: Andrew Morton Cc: Jonathan Corbet , Matthew Wilcox , Guo Ren , Thomas Bogendoerfer , Heiko Carstens , Vasily Gorbik , Alexander Gordeev , Christian Borntraeger , Sven Schnelle , "David S . Miller" , Andreas Larsson , Arnd Bergmann , Greg Kroah-Hartman , Dan Williams , Vishal Verma , Dave Jiang , Nicolas Pitre , Muchun Song , Oscar Salvador , David Hildenbrand , Konstantin Komarov , Baoquan He , Vivek Goyal , Dave Young , Tony Luck , Reinette Chatre , Dave Martin , James Morse , Alexander Viro , Christian Brauner , Jan Kara , "Liam R . Howlett" , Vlastimil Babka , Mike Rapoport , Suren Baghdasaryan , Michal Hocko , Hugh Dickins , Baolin Wang , Uladzislau Rezki , Dmitry Vyukov , Andrey Konovalov , Jann Horn , Pedro Falcato , linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org, linux-fsdevel@vger.kernel.org, linux-csky@vger.kernel.org, linux-mips@vger.kernel.org, linux-s390@vger.kernel.org, sparclinux@vger.kernel.org, nvdimm@lists.linux.dev, linux-cxl@vger.kernel.org, linux-mm@kvack.org, ntfs3@lists.linux.dev, kexec@lists.infradead.org, kasan-dev@googlegroups.com, Jason Gunthorpe Subject: [PATCH v2 05/16] mm/vma: rename __mmap_prepare() function to avoid confusion Date: Wed, 10 Sep 2025 21:22:00 +0100 Message-ID: <9c9f9f9eaa7ae48cc585e4789117747d90f15c74.1757534913.git.lorenzo.stoakes@oracle.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: GVZP280CA0008.SWEP280.PROD.OUTLOOK.COM (2603:10a6:150:273::14) To DM4PR10MB8218.namprd10.prod.outlook.com (2603:10b6:8:1cc::16) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DM4PR10MB8218:EE_|DM4PR10MB6278:EE_ X-MS-Office365-Filtering-Correlation-Id: ac61e260-936b-4db7-5259-08ddf0a7cb31 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|7416014|376014|366016; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?g6Icrwe2boaOTxEgAbAmKu22biysduJ7wtbVo8Fu7q04IVlVxWUCnaNG6y7Q?= =?us-ascii?Q?u90RyCqU0UKDaMpzBRiAGR7V7zoGNv/NlNAzp/M7roaV1VL6KFKQzLHD/gSo?= =?us-ascii?Q?/bA/QDr69+QeJSw2by+Pp5P/ge1flY2V3xgmeQjrFTBN3I4fyReXMHX8FwKn?= =?us-ascii?Q?jKEDHCfk9sAq2YMA5AolagBixhB+J2CQ3WyG2bsPYgZlOiGqKe3B5jNRFna3?= =?us-ascii?Q?/vdz5J10WiydItPlkWedUoQRU35a1QbPL/AbTcQvwB1hsVwEFCqN5h1fXJ5s?= =?us-ascii?Q?5cj30AY8SFhtPXfbLdbrGyyLXJdRItUMqeKy22VJe4aZUjiObWMT/GUl31La?= =?us-ascii?Q?WCU++e6Waw74U7XmKr88GR6H/wrfQfO1ePw9/EGUvujDdVEXXJUa9MrPjs40?= =?us-ascii?Q?JMfP3XoYH1OfIIfuBb3aN0jPLpF7IxoqW1UotUmpgH2qXNVcUZZuPNnx4VOQ?= =?us-ascii?Q?M7SpcFhydeIEr+VHsCtbybMQ7InjtGANnG55/5jF56wGxI1qeiLEcKZst5Js?= =?us-ascii?Q?b2K6ly4kwXsMc6kjjwco+R+uoTyah2exGb4EgSTAt90s3Pr1XP2foJYw3G1b?= =?us-ascii?Q?RUmHcP3TmDxbXwPzCM5ynQRaCD6iX3uC/SsAp4UevxWKn4B8AFtDkIRdS7Ve?= =?us-ascii?Q?eXelTrnNGtHeO/BxEUz7+wUNmaIHnfJapnNsUKPFBE24Z98BYSluBliGn4TV?= =?us-ascii?Q?rloq4HLmRT9bigOIfrnzAVJROHrIuo3vBQbH4aIcO8aQAqWE4BqixDqXW7ED?= =?us-ascii?Q?DdhPdDUy01RKOMSKtKPu/NPvgtcvlNXh/0x7Vbg6f5zBne/lc8L0ef689z4c?= =?us-ascii?Q?nl0e7UysA7aldDkByg93Hs49JfWNPPXbxunWvPBsvXHMwTOE6n65KLMgsxVM?= =?us-ascii?Q?OX1WR/OiyLIa+2A5h0tH8AyQVcuPTM98O1I4QNeKbBzR7EtxRTYoWlnVEhkr?= =?us-ascii?Q?OXzgKjwX6icOTr54UnLjZpIRptOHgnzX4ksgcJtQ5JQy1RsJlkt1W1uvqppm?= =?us-ascii?Q?rfk/PqHZiGsLTATzgvT97WkF7huS/kD/FQUayeXqJvfh1IS+ANIA6JHlMZPU?= =?us-ascii?Q?dJl6t2Y6PsGKjiyINGpLEV4MmE5IvMATyrsB8ml8Oz1qDq9YuM+vlBHUPdAa?= =?us-ascii?Q?dZPx9jIPD2lyIWlZVKGrHy0m3wDMD75Wmhft3EhPxxEHEgRL7tbJ+/xgd9Rz?= =?us-ascii?Q?8MuSfc9eAwR//Z0Pkf4QZHTQWiWm8pikOXz+vzNkj4p4OJ7in+akKvhWeZaN?= =?us-ascii?Q?6F8wMbqPXWkL/A9SqnpfeflBdB6RXvLa86TLmNEG2OW7aivBx2eqT/ONeDtA?= =?us-ascii?Q?Wdh1q7+wu9oEpLQyV5LHimAoMO8n2ITTFv1cqWahaSrErECjLtYWv0/0ImVB?= =?us-ascii?Q?zVGbBzy0GbPnyisnxTIfcXNzOJInPEZWW78S2ok9x10GMmS6nFL+x/CexL91?= =?us-ascii?Q?0XSbv5I05WM=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)(1800799024)(7416014)(376014)(366016);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?uMTSWBBJXnxCYHpYtjT0F2a8+kTx7Wf8Kzu64TQgPR922fOAdVWF0G6LI8ph?= =?us-ascii?Q?+yTcVaKbMZkZeJqfu98SwDb2Io/NRE20SIBD+V6TzX3c3MpdtW8wLEoUE+P0?= =?us-ascii?Q?owNZGpg09pMdmQtYCBlirigpWwn/WF7uFnj/9LRYo15sEvSMByFzSOn2C9+2?= =?us-ascii?Q?igVy2+JhK4n8r4UohMlfdmr97xH/hI6yEklyyjViJ4u7yRNH4LGiTKy1/dtc?= =?us-ascii?Q?NFtWs8LPhKpPh5gcXSA+0k5k1lyAerRGysalvSrjeRurqwxlJKgXr4ekayhw?= =?us-ascii?Q?18i5/3ncNqc2jo5Ij1GThvwvs6i8EKsoVn5pY7NHcgdD8WWejafROe1LrOk8?= =?us-ascii?Q?HlPw4ZuNUd8gEannN+BvoTsVO1u0wQX/eb2ZKkNpNaD3XqJ/irlutxjIE8nx?= =?us-ascii?Q?NWqcdfmf7IHgbplh/mPDCKsIRHHg97Jp/NPAqJ/+hpYywTsBLFCs/WoZ+sf2?= =?us-ascii?Q?EuJzY+/tcjRbUxJilKa/TgGNYxxDhKm1kl9t2nGEh8jx93UodPFOS6ZH4E5R?= =?us-ascii?Q?HTmmX2xDNpkvSwjV+Hvc/4ZLsPDB+XKcWiTcMMQXsnoXEpA0IdkCHXlGbIuj?= =?us-ascii?Q?fJh9tPCih43gMNqD1wtkG+Cj6DtPJYx6389EvPKS5F3rQrrg7wTz2HqS6XNa?= =?us-ascii?Q?JL4rBBzTaiIN5CWkGZKFlhkB/HlWLvDGYn30ldvUIL1ZdQx2+QdSJva0SxbS?= =?us-ascii?Q?I1KIHvy1u7lRNo9PQDRL61Ag/qA4rNULNpcCIDuves32AKJhWpqK2bXJmpzA?= =?us-ascii?Q?X4c/0UelFkMGyiOwo6Vd1LFB6SkzpZu69GdBiYM3Tt2IWqbRDMLaXSOcNIGb?= =?us-ascii?Q?emFRfWwMhNYRuAAt3xvs4nIuVcMC98F8BYuWVWaj3rU1VVuwP2D1q+iSbsDG?= =?us-ascii?Q?Nn8bpxjSnGbDHvkw+61/sIY3ieITKC8KWPVz05p7ms+5w4t0zdxO+Djf3MUi?= =?us-ascii?Q?2kRUO4LESWP0VxOXKzvAWa0CaElJBd0AbDjOwJxtQrkqHnS8Clk+Bf61QdW3?= =?us-ascii?Q?/ntLJSeu4ykLthN5YRSUnTSTkDovchjgT2cI8EwJQsmrOodp6HuWr8uqeMsq?= =?us-ascii?Q?Ew+mBTwsu7ViLntWQ80ywGFIUGoP94QbXkt8w+B4i0nhkcB/uBngxiCsYN9Y?= =?us-ascii?Q?ZSVM1UuttHra8gNUGcuzRJ7YCLNnGciW2FJmjv/e3L0XWRnG0pSuNuIFQVuI?= =?us-ascii?Q?c9s+IPt66k7hshIA7V4jg5aY5IzI4QJlc8GN4i+3bLK86PSyWjU5YxUDLZza?= =?us-ascii?Q?J1e4MPSf8duw3+GsyJIrm7CScb/Pjicj5KBrKulr65IVCksllxJOCQXxnb6a?= =?us-ascii?Q?swAx3HoSAVjn3vcLwNEOa6EMTY9w4Jt5/8y7uhWwpNpnCXrGeD/RiA8qvnVv?= =?us-ascii?Q?25hBuzl1d78Tp6yNIkQAjpTnd3K9i+b2Xoe14rW6LZjxz1BNP9R3kf4xn5tN?= =?us-ascii?Q?EAXJym7prGK/IVQ/a78b4LKATGl6O4Eds/ObxzX/zRaUkmByIcJA564m2Xpg?= =?us-ascii?Q?NeIrWNo3RUOxMHlkkHjQwQMECC/b7TLkEc+kUxOEvh00jWcpTnaTvShc6IVj?= =?us-ascii?Q?h1Fp2/zP82TpYpxhVVg+DMd1Az2xAeSPvIedjkOxMgOP/yJrDdzz1Q8ONLJ4?= =?us-ascii?Q?Fg=3D=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: ZeXLEffZPZT8E34kjWumrvE6UiORoXjcnQjkGY7MOuUJJgk9MqTeP2CpDabh+dDKIPtYFpW7VbzqRd6aYv7Jn7qZ30REzW4s9nbZJJQPu9nM0mJ3uEx30LuOh+LrSHHLb+IuuceW76p1N/zO7J4N1wg4C9fpbgl0VdzL/ONHRBxicoqbD1I1dpWxYOKbn1ujjKswFamIUJn1PMSTLK52pyv1Rnp7GDkGexuX0KMocg4kPOGRewlGxUSe/6SBQFJ1CAYhHxiCtX3MTdcEPse4VccuRC98NlTsSsvJvR9sUZU9EfcFmhVo8V/O1M5nADR/gkV251XefZcHZobAJZ//7itk5kogYe9fCKQs1gY4beldxKo8Qzo+WGAc37cWo/jkJ4/xkhPlKReczLaaUqMuUqKKidJdZQZrqZhFaZBNceoGDysIGWbPeKcWuPWPZfAyFAe6WvjsI0wp+UMC6ON2GlzOedcEeWZOsl/E35Jd9JEaUm8hPBOsE/+9qK5+CwqSl0WAi83retA/ukDBKDxyinFienvNwUKHJK+8xL6baz0evZoPcnizhAaZRN5md3nJkl+eEcrzJ8lcmFqaNLdn3poHcyGRRhWFjspT7iT6fvg= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: ac61e260-936b-4db7-5259-08ddf0a7cb31 X-MS-Exchange-CrossTenant-AuthSource: DM4PR10MB8218.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Sep 2025 20:22:41.6342 (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: rRc+Thtjbz3QHdTeWUqb9MCOVdV0bLzzSVCF4jX5ZSC/A/GUxDDRoJzx8vqbR9T7aQtcURr2VGIUZ5h9HqQ9FvudMpiD23EfjYjThL4wMqM= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM4PR10MB6278 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1117,Hydra:6.1.9,FMLib:17.12.80.40 definitions=2025-09-10_04,2025-09-10_01,2025-03-28_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 mlxscore=0 bulkscore=0 suspectscore=0 mlxlogscore=999 adultscore=0 spamscore=0 phishscore=0 malwarescore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2508110000 definitions=main-2509100189 X-Proofpoint-ORIG-GUID: 7FItodJgzAfiVy7vvOjF8qEIDObzNs2D X-Authority-Analysis: v=2.4 cv=PLMP+eqC c=1 sm=1 tr=0 ts=68c1de18 b=1 cx=c_pps a=zPCbziy225d3KhSqZt3L1A==:117 a=zPCbziy225d3KhSqZt3L1A==:17 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=z/mQ4Ysz8XfWz/Q5cLBRGdckG28=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=wKuvFiaSGQ0qltdbU6+NXLB8nM8=:19 a=Ol13hO9ccFRV9qXi2t6ftBPywas=:19 a=xqWC_Br6kY4A:10 a=yJojWOMRYYMA:10 a=GoEa3M9JfhUA:10 a=yPCof4ZbAAAA:8 a=9WrioahaYVwPZVrL5YIA:9 cc=ntf awl=host:12083 X-Proofpoint-GUID: 7FItodJgzAfiVy7vvOjF8qEIDObzNs2D X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwOTA4MDE2MiBTYWx0ZWRfX6jXtVwR+YrKG XS1wmBVZcRHfUONBC9yeVTn+ZYT7iLhRu1rSq1/SNvNtw0HzDtWK+rFDlvwvdhLxb6e/+kgXOza 3kCqOl/5nrK/6+30L/icChkful+lBwdu84ApccWjyWcJLIqJMQwnDBWBI6CEKQE/3T5ukvGZfh5 n0qDVuHu68O+Gtw1z+Gw08S7oQ5nOTdhktgdQDeNkGLKsxMP65ZYilBxUxhIGtCXbGmZD9JsX5y rrpn3BREu6EWLCr3u9K6/Db8gfTsjgz0j6MOvNkP5DmogLQlvL4ntHDLrBiKYXAKAOzJs8p222I avRbvgyD4OCHd1STQYpxIkmeFTC72bsq4c03Gm18ZDyxz3dFCTF2eFECAJHsn8Mkgo4B1jbktIg uECItm/z+A57Z4zRlty9ulC802Seew== Content-Type: text/plain; charset="utf-8" Now we have the f_op->mmap_prepare() hook, having a static function called __mmap_prepare() that has nothing to do with it is confusing, so rename the function to __mmap_setup(). Signed-off-by: Lorenzo Stoakes Reviewed-by: David Hildenbrand --- mm/vma.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/mm/vma.c b/mm/vma.c index abe0da33c844..36a9f4d453be 100644 --- a/mm/vma.c +++ b/mm/vma.c @@ -2329,7 +2329,7 @@ static void update_ksm_flags(struct mmap_state *map) } =20 /* - * __mmap_prepare() - Prepare to gather any overlapping VMAs that need to = be + * __mmap_setup() - Prepare to gather any overlapping VMAs that need to be * unmapped once the map operation is completed, check limits, account map= ping * and clean up any pre-existing VMAs. * @@ -2338,7 +2338,7 @@ static void update_ksm_flags(struct mmap_state *map) * * Returns: 0 on success, error code otherwise. */ -static int __mmap_prepare(struct mmap_state *map, struct list_head *uf) +static int __mmap_setup(struct mmap_state *map, struct list_head *uf) { int error; struct vma_iterator *vmi =3D map->vmi; @@ -2649,7 +2649,7 @@ static unsigned long __mmap_region(struct file *file,= unsigned long addr, =20 map.check_ksm_early =3D can_set_ksm_flags_early(&map); =20 - error =3D __mmap_prepare(&map, uf); + error =3D __mmap_setup(&map, uf); if (!error && have_mmap_prepare) error =3D call_mmap_prepare(&map); if (error) @@ -2679,7 +2679,7 @@ static unsigned long __mmap_region(struct file *file,= unsigned long addr, =20 return addr; =20 - /* Accounting was done by __mmap_prepare(). */ + /* Accounting was done by __mmap_setup(). */ unacct_error: if (map.charged) vm_unacct_memory(map.charged); --=20 2.51.0 From nobody Thu Oct 2 21:39:18 2025 Received: from mx0b-00069f02.pphosted.com (mx0b-00069f02.pphosted.com [205.220.177.32]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 11DFD2EF66E; Wed, 10 Sep 2025 20:23:27 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=205.220.177.32 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757535810; cv=fail; b=Uuv3y9Pzz9nJdalOGy12vA3jfABH+y9jpUHC/Z90mdTS2HsLfdLsbAj6cqfPNPo+OYaiUUuxIx2bYDPNQ0oGxX+whPUgunHIx802xhiDY/OcyZ/uk///ll7HWml9A6HqDSdcDx+73KY2KT2pphONQY3iU8qWkO40f48ciif6e/M= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757535810; c=relaxed/simple; bh=eqmWanlp5PqI/UuaJf8XHJa4uLlr7+r5MrTuolcBxC0=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=D8vMmQHkhBtj93tB8CbrrseVR+JM7QRxCaWF1WRvX45DYTm01QhofsKE5QGHGM8Y+b9pHecJz4MaFEixJWgZtOyHLGrKup5YiFsIdLMVcoL2tyXVCIQ+fIDbK8awnYIJHa4QcyVH7fu9EBW9y/eRZjeeI1pfWh0iHF9BF1OgrnU= 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=FYc6vDVE; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=MW+UZD+7; arc=fail smtp.client-ip=205.220.177.32 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oracle.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oracle.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=oracle.com header.i=@oracle.com header.b="FYc6vDVE"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="MW+UZD+7" Received: from pps.filterd (m0246631.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 58AGfiOw005176; Wed, 10 Sep 2025 20:22:50 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=cc :content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s= corp-2025-04-25; bh=GS3/V5WNiXqrJTK4i3TRXt7cqXTN+Djzsv5e/3LDIRE=; b= FYc6vDVEntpQx+vij6xn2g1NSjDZSUOWWNCrjNimucgGj8v4YEQ4hAwUJLDCbFRe 5oPfDazhFo/beUR5rfrXjJC8cSxr9tFmYbQRb1LuqFeL3qV2cE+wCXiohS5Ea4hd RfoDs/+LLSvK4gD4OZKHNNUJKHTJ0e8UfdLtPdCWyUdB3AO+oEnQEsBEODmMK3qJ Kks9NMPZUc8nnkrmvUfs8dqFRJ5kKyUHe0WgmFPFbynfULWbsKXEGNPbdJqfcRRx OkMeEf78MVJOtmQMf8iun3ATUdbj9t1AZXIy+sAktNIG4EnEBK9407yxTbck9GtA NNrud/HWVV3NV4NKRRMBWw== Received: from iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta01.appoci.oracle.com [130.35.100.223]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 49226svyxw-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 10 Sep 2025 20:22:50 +0000 (GMT) Received: from pps.filterd (iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (8.18.1.2/8.18.1.2) with ESMTP id 58AILQCN038766; Wed, 10 Sep 2025 20:22:49 GMT Received: from byapr05cu005.outbound.protection.outlook.com (mail-westusazon11010027.outbound.protection.outlook.com [52.101.85.27]) by iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 490bdbgtpk-2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 10 Sep 2025 20:22:49 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=J3xoI7N2z6C7oIPxod+jv1zQU8uZWp/41RPLxJnw6KCJI/kYD8pZMaWFxr64y5UrSuiG6nJtZA+M8IIttRs+Ai39XC59an5C8SP4ulC/14Jv/LZrvDmcZXbKHdqQe/Vz5msQwjllAQKy2BQsKoKPsy0j6fIlP6hFcVjo1ZcDyMQaxF3qlyorRwtCcC4Pptr1TsxZ9NEMm1V33x0Hal4WmDaWdaL+0K5ITPV1UTk3hxAGLW7cZinwM/r4tzxxcP7wUegpfDAsdZJAJtmYesG/4MROQBAzYX19n+5unQ0AUi9pmB8qMALd0u0+heUbMvOpIr+EjpF8TuXsPBURtpYEVg== 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=GS3/V5WNiXqrJTK4i3TRXt7cqXTN+Djzsv5e/3LDIRE=; b=KUAdaMpl0hwlg+W/MACJhDIhv+un+EaF8uwiblq4mFDDlm2zU1s6xclFEaD1k229LOjPQzzHtvaF33wvFXbmg0AiWIux5Ypo6NPwNSeW0bLaKBi+FnIe+/vHDWMVooBJTiwR3V+NZcYOdK9Npc41lpypv5E0Kxe6ytBnliAqRTqzGYig0ytjC3B1TfPbi3DkyQxaFcQn0efT86Awv1nZKgbFWww+6RCv84JrMt6OiXydAXTXAh6SiD7BUywKrL6sGtsh3dKf1v3P8XLWqBtKljbg9RPyzK5HnMa/uVw3ih3cnI9FPZap0dakKxtlRT9/1L8zGUuPipHbkXTZeBUweQ== 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=GS3/V5WNiXqrJTK4i3TRXt7cqXTN+Djzsv5e/3LDIRE=; b=MW+UZD+7gNsGWkGFhZVBj7IOHux0ABpV2vD1rLyayCN5neWxv7q4rUXvyjoDlgp715NcU22i4aI0FJZQSp98VqkY068S9eTbrkoDsjfXZwu0LgpRyW1/hcOSeaHBEOWD0W+6YEy+8l/IoGDvWgU2Szgve8AuNNNUTZzcO1L8yDM= Received: from DM4PR10MB8218.namprd10.prod.outlook.com (2603:10b6:8:1cc::16) by DM4PR10MB6278.namprd10.prod.outlook.com (2603:10b6:8:b8::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9094.22; Wed, 10 Sep 2025 20:22: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%5]) with mapi id 15.20.9094.021; Wed, 10 Sep 2025 20:22:44 +0000 From: Lorenzo Stoakes To: Andrew Morton Cc: Jonathan Corbet , Matthew Wilcox , Guo Ren , Thomas Bogendoerfer , Heiko Carstens , Vasily Gorbik , Alexander Gordeev , Christian Borntraeger , Sven Schnelle , "David S . Miller" , Andreas Larsson , Arnd Bergmann , Greg Kroah-Hartman , Dan Williams , Vishal Verma , Dave Jiang , Nicolas Pitre , Muchun Song , Oscar Salvador , David Hildenbrand , Konstantin Komarov , Baoquan He , Vivek Goyal , Dave Young , Tony Luck , Reinette Chatre , Dave Martin , James Morse , Alexander Viro , Christian Brauner , Jan Kara , "Liam R . Howlett" , Vlastimil Babka , Mike Rapoport , Suren Baghdasaryan , Michal Hocko , Hugh Dickins , Baolin Wang , Uladzislau Rezki , Dmitry Vyukov , Andrey Konovalov , Jann Horn , Pedro Falcato , linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org, linux-fsdevel@vger.kernel.org, linux-csky@vger.kernel.org, linux-mips@vger.kernel.org, linux-s390@vger.kernel.org, sparclinux@vger.kernel.org, nvdimm@lists.linux.dev, linux-cxl@vger.kernel.org, linux-mm@kvack.org, ntfs3@lists.linux.dev, kexec@lists.infradead.org, kasan-dev@googlegroups.com, Jason Gunthorpe Subject: [PATCH v2 06/16] mm: add remap_pfn_range_prepare(), remap_pfn_range_complete() Date: Wed, 10 Sep 2025 21:22:01 +0100 Message-ID: X-Mailer: git-send-email 2.51.0 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: GV3PEPF00007A7E.SWEP280.PROD.OUTLOOK.COM (2603:10a6:158:401::609) 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_|DM4PR10MB6278:EE_ X-MS-Office365-Filtering-Correlation-Id: 622f981f-85f5-4d18-11da-08ddf0a7ccdb X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|7416014|376014|366016; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?nU3NsoFUMJxB88lSpSblUhzn6ZIThl3KhgLLLVcZeHXDFZDzIkc5jTGyEz/R?= =?us-ascii?Q?qnfRy5WwJN7S7jDDzn+4lgq88KhxKoIMTJUv89kVN8VyWzWZEtnvPb0UyBaa?= =?us-ascii?Q?oAazaIpZW/jzJADSosLKiMu4YTfIG2D11c69XSZeam2Hlsue+aozgnHUOcZr?= =?us-ascii?Q?uFeGU0ptvf734gCByyJq9wmiHbv+yrfPAqPAJoTGsRHvRrwNZV36BRYpgu8B?= =?us-ascii?Q?MHBxx6u1HkOJXuEAQpcPGWZBYqdIzbYjf3HNedZOg54KEQbxFhhNnYJ+Uh6q?= =?us-ascii?Q?KPOWczq/fBN2XzrgkOUoaPWr+dgtgVBdj5yX8Xmw0Y5XJg68OEyrjdgYb5tq?= =?us-ascii?Q?lI6FTVWEokc4QQBMh+vLlQiYknvLt1PVbPVr1Fr0alD2SFbA87SQCSOVu+Vq?= =?us-ascii?Q?daz9Ma5pqzukoZVMkvYo9rCOru4QZoXLo4wnyW87dRqBRxLPuBtMy1t6Dq5l?= =?us-ascii?Q?lapFYUpH0dv/PuogZH37Leb2rMz4J2+2qL5gEuHS55tL+jtSbiIhOA26PRTU?= =?us-ascii?Q?QP59XnP75ACyo57/AQijuy39qf4UQKCrKnJzbBBXTQ2DfHLmMpU0w6FPyiab?= =?us-ascii?Q?NZFX5BJNBnI4GeRF2kZQ2+hUYiWBA/iTHQGS8W+HyGyI6BcQ7kw39ru70lEW?= =?us-ascii?Q?XfZVhbYjO5aD41qLMHTJtm7jPUi8Bjog8imuAQG6GVHckR7SFaDxkZcyd/jY?= =?us-ascii?Q?siyJlqIuEYtooDicDu8FfAb01li0mtCMb9CicFqWQKzbB4x0z4cbqNYDPN2g?= =?us-ascii?Q?TCyvUtJa0YFPd4Zy+UGxCP6K1hsfGH9Ieif41/YUqQMdog6cErcZF4yK1i7t?= =?us-ascii?Q?dOprdKOvnCaJZE4s8tb3FFF1VLL2S13OOxc7ApIk62BZTfrhTnkFua6AeEtX?= =?us-ascii?Q?61mc9w3WIMOyVfgXT9IraIAKyCj4N5jmZBCdqQH+vXldF9g8ovLABxMHqTFD?= =?us-ascii?Q?u53nB2F+Q+doow9LMylpQtv9CxHgTW7hVx/Rvs7IQGlXIfM+tAe62DRgLlNL?= =?us-ascii?Q?fGEIY3X6GG2e9YEMHpbrwJSmLxBIo7r4juwzH1Ui/FdqDxnpeB83HN2pdN3K?= =?us-ascii?Q?/0uUSaq6oHKHsX9U4wlXxnzXo2S209RJxUmlnhC2PlaoDaUrzmf6I2e+xKTy?= =?us-ascii?Q?DHatOzspOH3KGS6ECs0z5ZootFFvw0No4RBdn0u/gaNw83cgIS95Fu4CgYUB?= =?us-ascii?Q?WUWh/uL8NXZ7Wn/noTpNCYx8Wucevq7PC0d5NjX+6tnIZOzdcdyu0Bya9ZOD?= =?us-ascii?Q?qjrx0L4b2lmUffdNAU0FkgS45PgqO5Q+MbabUBlzvNsUFVWo3akIFouL2+7C?= =?us-ascii?Q?vRy9rKOlJyP8aSaSMxQHCmi1gKnIQUcGWqUfq0ZgwUdlxsN9qVeanbSevuUR?= =?us-ascii?Q?aBg8ssRfw94/XnYXs83cup7kPuzn1RJBAjN5QwVuOYtFi11Pnt9OmiSuQjLE?= =?us-ascii?Q?6B00bBZzF4c=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)(1800799024)(7416014)(376014)(366016);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?JtUL6V5/C+YcJWpHeg9iMvVn74XbHw0+2woJ0cXyEu81fSjDpZbO+KcQye7I?= =?us-ascii?Q?jP4VlBv+GRbtQLYkaTXRPV3qV/62HfpyNbqL9GgSnfGzH9RM+yjGlFBmAoxP?= =?us-ascii?Q?KZLUj+p0byE7No7ROnIz3oMQlRwAFVmiw4Wt+auDpkXTvjVlN95aAQtdcgGP?= =?us-ascii?Q?BEAjj0pc0hs6lOlPqY+PfSmP0zi6W6MkkZNW46IZr3rKnB8OKNoQuqlrmifK?= =?us-ascii?Q?xl9ckbBrNmUJzq2oSjb+3Bdz6szuyLfrZyj4M9IvUunvEcloxgSJqsSXDh7v?= =?us-ascii?Q?xxi90ZbfV84zkzW6pVMsU2TFuP0gDkhrOBRCySy18mn2ljEq4IjArmJ7HN1x?= =?us-ascii?Q?qKfZvIXJCeLuSYkTtFG07YoAUgXqDkAdIfa0kTko9tTpK01Yo6uJUHA7dqAM?= =?us-ascii?Q?Zizm/sv740UbAMaQQ23Cl1g7LByl17IROAARuHnSOYbneJDxyzythUTSTpz2?= =?us-ascii?Q?5+3NBuapGFHia27qteahSEq7c3oSe6mpjNUOuPPE5cPbuNPIUCSJzGvjNWio?= =?us-ascii?Q?u4K2X02dFsYN2C5xWqz+Fcjebbi/qBL4Dd0R8f+fzuwmJoeH+EzFBEEv50qs?= =?us-ascii?Q?X0C8JDOwRAPELptXYQTOWQA4vMK+jysUhdEseuKBRgIS4YkHppLmUgLjjoRa?= =?us-ascii?Q?bjqSOZXqBLqDIybSyYeFJUaABywtKJ+XnFKdjlJD+kSCKTetOdb4OZLxYFVE?= =?us-ascii?Q?NzWJ3ur91Dq8ihmjluziXKq3rkfiIYrHD5O254Uxwzr4EJToKAqFUmrJtwwP?= =?us-ascii?Q?M4V90EB6IDyohnibX9QUg68jrbTHLLr/4mw+t+MNn16pUtSIb2cPmaqaUtSN?= =?us-ascii?Q?Q3a7R56kIrjF+5tXtyZKer2ZKIh5DeA5UZoUULxh+S5u4oE2ijU9wkL8MUkE?= =?us-ascii?Q?HqLt6hokBn1UtOFpte86H6z6XjHhBr9zVunRfdDtOGfl9veSCGqJ2zJD00iU?= =?us-ascii?Q?1Hx8Ax4Ci8rKP8NGevVeaWurX7haRMK5eR7yLeD1qR/U/mMOubiqPvHXILd9?= =?us-ascii?Q?93wb6bzbHog91jrFBsKzdDbiVFgxIokZOKDBIAOzmPKbmlNuQO6X/I9ZVRXi?= =?us-ascii?Q?FQ3rgX4dE3COcofAOHqhKD9Y5NhTqWtlxjttPrlvNXiAfKkyjWicHfSjAW3Z?= =?us-ascii?Q?3YIWVZBWkQxDoiwDLyMt4MFLd5TKPnD09ObcdWOsS1PDI432CYo/sPrAEGaK?= =?us-ascii?Q?LRoMgOfPfGa0oeoK3VT1NuFwAzp2o7+sK3oPzpe2vXI/Uq8IAEvox0hQqNvt?= =?us-ascii?Q?FsWhg3BkaVezbNoJ4SeAitPnmf9FsVJ/KkfRFzwgdO3H3aMkKvehuClS25c7?= =?us-ascii?Q?iSS/e8MOv70+LXCJ2dOPDqf4vehFHiyG6pI/nUbkubTyjphql+aMVg0A7Okw?= =?us-ascii?Q?jTaOLMtzRZtq6K3ZALZMnAwx2k1vyafNXswbyXo6l4nSESRnO9YNWW7AUk8K?= =?us-ascii?Q?IgAzy55bROm47OjNFyZ5UhwrEMkPS2VOHGUX6JVR0qqPfYU/BTppVXTVr6Ip?= =?us-ascii?Q?Bz9XnQqfjSKTQA92HZrWffpK5tNkMNjdWyftENIp5QOI56s4EzYBuMAScd4W?= =?us-ascii?Q?9JEa2JBDyU/9ilVUn5mSVB5sXm//NM6SHoElCyLYlfcgXBjJfgLVQOYSNUbP?= =?us-ascii?Q?XQ=3D=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: ZMRI4MnibRCP3elHc6VlCUbqdyisWjLLNIfkOptZkn3P9RVQAmEpNJiLuEMd1v9QTj1mGmQbkOaPOUqUsyXNy4ejcwierGq/4qeDvKUpwmQ+ggFc2nw3J8RZH34JIADkdq+9IMCtUIK6TrWPzAxov13lr91LqmYUH0l652EMfIkO8+Zp2QVS9V2tQDIBHiKGSxWD5iUSU9ikjVifUBXkMsc4cDDhlyttWxzw64xPJly8o+SxZhLfFRe0b0XnQn4/bYEUkP6Ipklq1R0w19O46KF0aqa7pMLqNUExP4jnIg4vquhG4DSkcSmuiZgfz541GpSsEdhNy3dpRqd2QWuPiTngvu4tCqDP0n35H/UpnKgmPnr+vA3ZgM/fPIuHtqQhIHzuSmYclEqHBpZOmbyk9n3AFVm9giUW86qXwja+9q83Sbb9D8Q3Ov/SdYY3VvG+A7jHUQnuEJT1/IVaf4QezunPiEjJKiE2jY/YbpGn8WbG49Z8qMMvTPAW1GImRtMyDluvqFJFEv33O2478zzR5aPq8vlz6S0YNAbB8vAJfL8tGuzsJQzryVBIE216yfvwnX4cFdjd4EHX9wrYKYPNQltivpbTwDJdQXYo0Yv06Lo= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 622f981f-85f5-4d18-11da-08ddf0a7ccdb X-MS-Exchange-CrossTenant-AuthSource: DM4PR10MB8218.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Sep 2025 20:22:44.5413 (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: XhCTxD4yZn+DdXPBhC14wF5VsqiYKzuUG3l/C+ingG1/zLftVKQA3CFdoyA93G3ouZdZi/9Hau3uAz92jxp1M7Fmuvi/VlbCjgugMa32vyE= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM4PR10MB6278 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1117,Hydra:6.1.9,FMLib:17.12.80.40 definitions=2025-09-10_04,2025-09-10_01,2025-03-28_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 mlxscore=0 bulkscore=0 suspectscore=0 mlxlogscore=999 adultscore=0 spamscore=0 phishscore=0 malwarescore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2508110000 definitions=main-2509100189 X-Authority-Analysis: v=2.4 cv=QeRmvtbv c=1 sm=1 tr=0 ts=68c1de1a b=1 cx=c_pps a=zPCbziy225d3KhSqZt3L1A==:117 a=zPCbziy225d3KhSqZt3L1A==:17 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=z/mQ4Ysz8XfWz/Q5cLBRGdckG28=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=wKuvFiaSGQ0qltdbU6+NXLB8nM8=:19 a=Ol13hO9ccFRV9qXi2t6ftBPywas=:19 a=xqWC_Br6kY4A:10 a=yJojWOMRYYMA:10 a=GoEa3M9JfhUA:10 a=yPCof4ZbAAAA:8 a=_Jg6trKoHIQy0Easoy4A:9 cc=ntf awl=host:12083 X-Proofpoint-ORIG-GUID: -9iLtigKb8WGKVwRRKR8D7eEqEPIknQ0 X-Proofpoint-GUID: -9iLtigKb8WGKVwRRKR8D7eEqEPIknQ0 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwOTA4MDE1OCBTYWx0ZWRfX0KpOVVV7GhhD v6d3WoUQNXeS6EYa0xw8fpr3P4fDkXNUUpCXTpS7h3nKQzIB9qWn3jBcArfb3lei9BM2pcYXyS2 DDF/qcD8jX9FbT681T3M2c91ZmvzOTFpxqgZ9WB5Yo1RjcntY3OZedX6ffRDH3PRPbJJt1RrDt9 rBs7vmxfF2RJuBaVYcM3vyMkGJRtQGkIafsReyXwRHxgkuABZ69YErVbmFqVxirJw0aDrpDu7Ap K08wxyoOR0RpImWIk5Xs+TSk2jTXVC44YlnmituKa/aeX4ZgjZmkLLhNp5rw0Yf2wTNa6ax4HN2 Wnmo+RbxQTzA0YM4ZrfdCNCR/sOwqJCvbpUnRFyLxl2/ujSdscbk7nkdkCxTTUu7m5b7iqvkuiW bE79jWn35oJilED3SlSDvj8TRgLiKg== Content-Type: text/plain; charset="utf-8" We need the ability to split PFN remap between updating the VMA and performing the actual remap, in order to do away with the legacy f_op->mmap hook. To do so, update the PFN remap code to provide shared logic, and also make remap_pfn_range_notrack() static, as its one user, io_mapping_map_user() was removed in commit 9a4f90e24661 ("mm: remove mm/io-mapping.c"). Then, introduce remap_pfn_range_prepare(), which accepts VMA descriptor and PFN parameters, and remap_pfn_range_complete() which accepts the same parameters as remap_pfn_rangte(). remap_pfn_range_prepare() will set the cow vma->vm_pgoff if necessary, so it must be supplied with a correct PFN to do so. If the caller must hold locks to be able to do this, those locks should be held across the operation, and mmap_abort() should be provided to revoke the lock should an error arise. While we're here, also clean up the duplicated #ifdef __HAVE_PFNMAP_TRACKING check and put into a single #ifdef/#else block. We would prefer to define these functions in mm/internal.h, however we will do the same for io_remap*() and these have arch defines that require access to the remap functions. Signed-off-by: Lorenzo Stoakes --- include/linux/mm.h | 25 +++++++-- mm/memory.c | 128 ++++++++++++++++++++++++++++----------------- 2 files changed, 102 insertions(+), 51 deletions(-) diff --git a/include/linux/mm.h b/include/linux/mm.h index 0b97589aec6d..0e256823799d 100644 --- a/include/linux/mm.h +++ b/include/linux/mm.h @@ -489,6 +489,21 @@ extern unsigned int kobjsize(const void *objp); */ #define VM_SPECIAL (VM_IO | VM_DONTEXPAND | VM_PFNMAP | VM_MIXEDMAP) =20 +/* + * Physically remapped pages are special. Tell the + * rest of the world about it: + * VM_IO tells people not to look at these pages + * (accesses can have side effects). + * VM_PFNMAP tells the core MM that the base pages are just + * raw PFN mappings, and do not have a "struct page" associated + * with them. + * VM_DONTEXPAND + * Disable vma merging and expanding with mremap(). + * VM_DONTDUMP + * Omit vma from core dump, even when VM_IO turned off. + */ +#define VM_REMAP_FLAGS (VM_IO | VM_PFNMAP | VM_DONTEXPAND | VM_DONTDUMP) + /* This mask prevents VMA from being scanned with khugepaged */ #define VM_NO_KHUGEPAGED (VM_SPECIAL | VM_HUGETLB) =20 @@ -3623,10 +3638,12 @@ unsigned long change_prot_numa(struct vm_area_struc= t *vma, =20 struct vm_area_struct *find_extend_vma_locked(struct mm_struct *, unsigned long addr); -int remap_pfn_range(struct vm_area_struct *, unsigned long addr, - unsigned long pfn, unsigned long size, pgprot_t); -int remap_pfn_range_notrack(struct vm_area_struct *vma, unsigned long addr, - unsigned long pfn, unsigned long size, pgprot_t prot); +int remap_pfn_range(struct vm_area_struct *vma, unsigned long addr, + unsigned long pfn, unsigned long size, pgprot_t pgprot); +void remap_pfn_range_prepare(struct vm_area_desc *desc, unsigned long pfn); +int remap_pfn_range_complete(struct vm_area_struct *vma, unsigned long add= r, + unsigned long pfn, unsigned long size, pgprot_t pgprot); + int vm_insert_page(struct vm_area_struct *, unsigned long addr, struct pag= e *); int vm_insert_pages(struct vm_area_struct *vma, unsigned long addr, struct page **pages, unsigned long *num); diff --git a/mm/memory.c b/mm/memory.c index 3e0404bd57a0..5c4d5261996d 100644 --- a/mm/memory.c +++ b/mm/memory.c @@ -2903,8 +2903,27 @@ static inline int remap_p4d_range(struct mm_struct *= mm, pgd_t *pgd, return 0; } =20 +static int get_remap_pgoff(vm_flags_t vm_flags, unsigned long addr, + unsigned long end, unsigned long vm_start, unsigned long vm_end, + unsigned long pfn, pgoff_t *vm_pgoff_p) +{ + /* + * There's a horrible special case to handle copy-on-write + * behaviour that some programs depend on. We mark the "original" + * un-COW'ed pages by matching them up with "vma->vm_pgoff". + * See vm_normal_page() for details. + */ + if (is_cow_mapping(vm_flags)) { + if (addr !=3D vm_start || end !=3D vm_end) + return -EINVAL; + *vm_pgoff_p =3D pfn; + } + + return 0; +} + static int remap_pfn_range_internal(struct vm_area_struct *vma, unsigned l= ong addr, - unsigned long pfn, unsigned long size, pgprot_t prot) + unsigned long pfn, unsigned long size, pgprot_t prot, bool set_vma) { pgd_t *pgd; unsigned long next; @@ -2915,32 +2934,17 @@ static int remap_pfn_range_internal(struct vm_area_= struct *vma, unsigned long ad if (WARN_ON_ONCE(!PAGE_ALIGNED(addr))) return -EINVAL; =20 - /* - * Physically remapped pages are special. Tell the - * rest of the world about it: - * VM_IO tells people not to look at these pages - * (accesses can have side effects). - * VM_PFNMAP tells the core MM that the base pages are just - * raw PFN mappings, and do not have a "struct page" associated - * with them. - * VM_DONTEXPAND - * Disable vma merging and expanding with mremap(). - * VM_DONTDUMP - * Omit vma from core dump, even when VM_IO turned off. - * - * There's a horrible special case to handle copy-on-write - * behaviour that some programs depend on. We mark the "original" - * un-COW'ed pages by matching them up with "vma->vm_pgoff". - * See vm_normal_page() for details. - */ - if (is_cow_mapping(vma->vm_flags)) { - if (addr !=3D vma->vm_start || end !=3D vma->vm_end) - return -EINVAL; - vma->vm_pgoff =3D pfn; + if (set_vma) { + err =3D get_remap_pgoff(vma->vm_flags, addr, end, + vma->vm_start, vma->vm_end, + pfn, &vma->vm_pgoff); + if (err) + return err; + vm_flags_set(vma, VM_REMAP_FLAGS); + } else { + VM_WARN_ON_ONCE((vma->vm_flags & VM_REMAP_FLAGS) !=3D VM_REMAP_FLAGS); } =20 - vm_flags_set(vma, VM_IO | VM_PFNMAP | VM_DONTEXPAND | VM_DONTDUMP); - BUG_ON(addr >=3D end); pfn -=3D addr >> PAGE_SHIFT; pgd =3D pgd_offset(mm, addr); @@ -2960,11 +2964,10 @@ static int remap_pfn_range_internal(struct vm_area_= struct *vma, unsigned long ad * Variant of remap_pfn_range that does not call track_pfn_remap. The cal= ler * must have pre-validated the caching bits of the pgprot_t. */ -int remap_pfn_range_notrack(struct vm_area_struct *vma, unsigned long addr, - unsigned long pfn, unsigned long size, pgprot_t prot) +static int remap_pfn_range_notrack(struct vm_area_struct *vma, unsigned lo= ng addr, + unsigned long pfn, unsigned long size, pgprot_t prot, bool set_vma) { - int error =3D remap_pfn_range_internal(vma, addr, pfn, size, prot); - + int error =3D remap_pfn_range_internal(vma, addr, pfn, size, prot, set_vm= a); if (!error) return 0; =20 @@ -2977,6 +2980,18 @@ int remap_pfn_range_notrack(struct vm_area_struct *v= ma, unsigned long addr, return error; } =20 +void remap_pfn_range_prepare(struct vm_area_desc *desc, unsigned long pfn) +{ + /* + * We set addr=3DVMA start, end=3DVMA end here, so this won't fail, but we + * check it again on complete and will fail there if specified addr is + * invalid. + */ + get_remap_pgoff(desc->vm_flags, desc->start, desc->end, + desc->start, desc->end, pfn, &desc->pgoff); + desc->vm_flags |=3D VM_REMAP_FLAGS; +} + #ifdef __HAVE_PFNMAP_TRACKING static inline struct pfnmap_track_ctx *pfnmap_track_ctx_alloc(unsigned lon= g pfn, unsigned long size, pgprot_t *prot) @@ -3005,23 +3020,9 @@ void pfnmap_track_ctx_release(struct kref *ref) pfnmap_untrack(ctx->pfn, ctx->size); kfree(ctx); } -#endif /* __HAVE_PFNMAP_TRACKING */ =20 -/** - * remap_pfn_range - remap kernel memory to userspace - * @vma: user vma to map to - * @addr: target page aligned user address to start at - * @pfn: page frame number of kernel physical memory address - * @size: size of mapping area - * @prot: page protection flags for this mapping - * - * Note: this is only safe if the mm semaphore is held when called. - * - * Return: %0 on success, negative error code otherwise. - */ -#ifdef __HAVE_PFNMAP_TRACKING -int remap_pfn_range(struct vm_area_struct *vma, unsigned long addr, - unsigned long pfn, unsigned long size, pgprot_t prot) +static int remap_pfn_range_track(struct vm_area_struct *vma, unsigned long= addr, + unsigned long pfn, unsigned long size, pgprot_t prot, bool set_vma) { struct pfnmap_track_ctx *ctx =3D NULL; int err; @@ -3047,7 +3048,7 @@ int remap_pfn_range(struct vm_area_struct *vma, unsig= ned long addr, return -EINVAL; } =20 - err =3D remap_pfn_range_notrack(vma, addr, pfn, size, prot); + err =3D remap_pfn_range_notrack(vma, addr, pfn, size, prot, set_vma); if (ctx) { if (err) kref_put(&ctx->kref, pfnmap_track_ctx_release); @@ -3057,11 +3058,44 @@ int remap_pfn_range(struct vm_area_struct *vma, uns= igned long addr, return err; } =20 +/** + * remap_pfn_range - remap kernel memory to userspace + * @vma: user vma to map to + * @addr: target page aligned user address to start at + * @pfn: page frame number of kernel physical memory address + * @size: size of mapping area + * @prot: page protection flags for this mapping + * + * Note: this is only safe if the mm semaphore is held when called. + * + * Return: %0 on success, negative error code otherwise. + */ +int remap_pfn_range(struct vm_area_struct *vma, unsigned long addr, + unsigned long pfn, unsigned long size, pgprot_t prot) +{ + return remap_pfn_range_track(vma, addr, pfn, size, prot, + /* set_vma =3D */true); +} + +int remap_pfn_range_complete(struct vm_area_struct *vma, unsigned long add= r, + unsigned long pfn, unsigned long size, pgprot_t prot) +{ + /* With set_vma =3D false, the VMA will not be modified. */ + return remap_pfn_range_track(vma, addr, pfn, size, prot, + /* set_vma =3D */false); +} #else int remap_pfn_range(struct vm_area_struct *vma, unsigned long addr, unsigned long pfn, unsigned long size, pgprot_t prot) { - return remap_pfn_range_notrack(vma, addr, pfn, size, prot); + return remap_pfn_range_notrack(vma, addr, pfn, size, prot, /* set_vma =3D= */true); +} + +int remap_pfn_range_complete(struct vm_area_struct *vma, unsigned long add= r, + unsigned long pfn, unsigned long size, pgprot_t prot) +{ + return remap_pfn_range_notrack(vma, addr, pfn, size, prot, + /* set_vma =3D */false); } #endif EXPORT_SYMBOL(remap_pfn_range); --=20 2.51.0 From nobody Thu Oct 2 21:39:18 2025 Received: from mx0b-00069f02.pphosted.com (mx0b-00069f02.pphosted.com [205.220.177.32]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id E40ED2459DC; Wed, 10 Sep 2025 20:23:35 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=205.220.177.32 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757535817; cv=fail; b=I+W6dT3FXvV6v53y2+2PmFWVEmRfyhLDzU9Fx1UrrsgNhk/NHGiLbg7bEDD0MF1WnRaEULS95XsWJ0Bl9LaFR4zg8S9sDfReqZ1xqqHu8ClpgzsOJ6rllYUtj9mSKmKU8DyK8IvKxz10tLHnowUnW1s69rqbb/AXf2NBDmENIJc= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757535817; c=relaxed/simple; bh=Oi06h0yzLnUJFgX8Kf3io3LUWZbH+HEuDI+L5upADag=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=fta0rPZuGFZ1ZC0RzwuyTVAbQSEVbPdGKF7mFxdWkf9cKLCs+86nNTj7oHlZJDJDhfKWwGygim3MrQE+fShvRY0R8VErIu8YT6VfY95UIyUZ64GETiBj3wMTC7sBnj8Fy6TWUF8j6o+MZ0a/rw/Y4FLCspWinqub+P4G5b8ADVU= 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=YCi4R1uC; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=Df48JT5U; arc=fail smtp.client-ip=205.220.177.32 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oracle.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oracle.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=oracle.com header.i=@oracle.com header.b="YCi4R1uC"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="Df48JT5U" Received: from pps.filterd (m0246631.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 58AGfrVv005320; Wed, 10 Sep 2025 20:22:53 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=IVbNDlVw+eURPO9iHs0KXWvQ4h/K7M0XR3a0ma1z+sw=; b= YCi4R1uCs23V0JzjqqRXfmNnGdlL7xslD008SZ71bVBTH9t59UVOnhCoK3VO/CHv +XDuCiNnKgr5UzuAp8i1ok5CLU+nL6EkYmNdModmrYFTWrsmjFO0cUezu3aPzas5 TORDgWbgZwSz0RqGwhc4gfpKjufeaKLPmnr4C1SUUV/Yk7a5CdQC2XRRIiD3Z7uI avpsIKeqrX116Rg31hyoImavIItIAqjCxDJhMCIEiIrueUFZspytAuMDQTRwY+Cy 38gxFYSt9bnAYkYypZKcGmeraZ+h0pkuwzrLmjU1PbMTQG7ZAUkDzrSqrAEJAkkw KiC1ArtnBPfMMGdgYNQdkg== Received: from phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta02.appoci.oracle.com [147.154.114.232]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 49226svyy1-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 10 Sep 2025 20:22:52 +0000 (GMT) Received: from pps.filterd (phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com [127.0.0.1]) by phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com (8.18.1.2/8.18.1.2) with ESMTP id 58AILGpi030662; Wed, 10 Sep 2025 20:22:51 GMT Received: from sn4pr2101cu001.outbound.protection.outlook.com (mail-southcentralusazon11012027.outbound.protection.outlook.com [40.93.195.27]) by phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 490bdbfhxc-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 10 Sep 2025 20:22:51 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=fSjGiPaj4KV6P5guq2kSqWLFAciUkBOqGFeIY1r4R+OSV+a3vv6xWdv3CHtefEIF0KouIJSLh10Ec1U/76qpqZp7Xg+N9IDf9/5X+RnKQ++c2dBHaWqmoZbcVl+n6cQky/Byy6AmTgGfUqMfh4z4bkSIzwLixCzSxmsb+q2OUrOxd91HkpBArDEZ4l8Fq/uB4h6ceh5sr5WoYN8WCltu38OnP9HZTNUf6f7+196R2+SDRk4mrfs2kSY/Az0qCZ8bpfZmymLF+qBnqAHYYjoh6BUM0WG1EZ+zclC4DwDE3h2I3bZFPCbL0dzNlM7Tcz4J3/prNMNXBfhg5VGRa8uVew== 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=IVbNDlVw+eURPO9iHs0KXWvQ4h/K7M0XR3a0ma1z+sw=; b=SVLkg8Ulcdl4Moi2VVj4QYauw13yFmxAaGXQ82iGTxTiGVG09DeyfHBeUa29zw7ebdlaIP7+TxUWlBO9L8pj+7ugoFpTRejpkul698mCaA0OoIR4dgdofbGNccFLq6G+bYYcPNwMczWgbthEThBCLMYryR8mFV7M+ArmQCOGXSqycqbtGQeVXLNddDS2OdhyyIf6Dkf73jN8nJwJrLXV6CnL4ZuDyjxcLGuA/2YutBpOH39tr5Ey0InMjDdz56RTUw+r8g2InJl+tEZDoAI/uRaz1ZMJ3i/YS7/nWRtUia7Nix8p7U/M2zxsOcamCSKLThFg2xzCanqgZmvKrqG9VQ== 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=IVbNDlVw+eURPO9iHs0KXWvQ4h/K7M0XR3a0ma1z+sw=; b=Df48JT5UQMhMv7Wbyv5bV58bvr+c3hor/wvuv4JOkyv7aKL00UAsGgwMVz0yyMNGuwpKpOb+uTzL3FSHvY7pIP4AGXJen3LwpgcG4v2LE51e1AK5CAUHbJjSH9rjf86CfkAr+BkCNoCvOFKhpd8RwrdZEdSAWSH+yK3sO9aFYec= Received: from DM4PR10MB8218.namprd10.prod.outlook.com (2603:10b6:8:1cc::16) by DM4PR10MB6278.namprd10.prod.outlook.com (2603:10b6:8:b8::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9094.22; Wed, 10 Sep 2025 20:22:47 +0000 Received: from DM4PR10MB8218.namprd10.prod.outlook.com ([fe80::2650:55cf:2816:5f2]) by DM4PR10MB8218.namprd10.prod.outlook.com ([fe80::2650:55cf:2816:5f2%5]) with mapi id 15.20.9094.021; Wed, 10 Sep 2025 20:22:47 +0000 From: Lorenzo Stoakes To: Andrew Morton Cc: Jonathan Corbet , Matthew Wilcox , Guo Ren , Thomas Bogendoerfer , Heiko Carstens , Vasily Gorbik , Alexander Gordeev , Christian Borntraeger , Sven Schnelle , "David S . Miller" , Andreas Larsson , Arnd Bergmann , Greg Kroah-Hartman , Dan Williams , Vishal Verma , Dave Jiang , Nicolas Pitre , Muchun Song , Oscar Salvador , David Hildenbrand , Konstantin Komarov , Baoquan He , Vivek Goyal , Dave Young , Tony Luck , Reinette Chatre , Dave Martin , James Morse , Alexander Viro , Christian Brauner , Jan Kara , "Liam R . Howlett" , Vlastimil Babka , Mike Rapoport , Suren Baghdasaryan , Michal Hocko , Hugh Dickins , Baolin Wang , Uladzislau Rezki , Dmitry Vyukov , Andrey Konovalov , Jann Horn , Pedro Falcato , linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org, linux-fsdevel@vger.kernel.org, linux-csky@vger.kernel.org, linux-mips@vger.kernel.org, linux-s390@vger.kernel.org, sparclinux@vger.kernel.org, nvdimm@lists.linux.dev, linux-cxl@vger.kernel.org, linux-mm@kvack.org, ntfs3@lists.linux.dev, kexec@lists.infradead.org, kasan-dev@googlegroups.com, Jason Gunthorpe Subject: [PATCH v2 07/16] mm: introduce io_remap_pfn_range_[prepare, complete]() Date: Wed, 10 Sep 2025 21:22:02 +0100 Message-ID: <96a2837f25ad299e99e9aa1a76a85edb9a402bfa.1757534913.git.lorenzo.stoakes@oracle.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: GVYP280CA0042.SWEP280.PROD.OUTLOOK.COM (2603:10a6:150:f9::23) 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_|DM4PR10MB6278:EE_ X-MS-Office365-Filtering-Correlation-Id: a8bd8325-0e26-4c7e-3dfc-08ddf0a7cea3 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|7416014|376014|366016; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?gcN7WcyUQ9SzIi5z+Pyvd29sJV4ifxA3Xxkjl6bKpNuGFMIXjKiWqy0QaUjW?= =?us-ascii?Q?iA6TsVb2mDNh6rqCli1A6oYhJiFd0dXVLhEnNBUEdE9AKnKyqK5y8v7AeQbH?= =?us-ascii?Q?zKMuaFvis36fBS9YkxFElJlSV8/bDHGg4vuYYP1ZPHJLpLl+tf7pfN+xZv13?= =?us-ascii?Q?NE8Wc0kYGwmOCCOqKJhs2eDhMITaZe+yK7TMyJpANN5NlFBlJPFajaabWWjj?= =?us-ascii?Q?UsNAi9fXvT9Yb4z68MTIEo9HGX5aAmxDhgfBqPmoX4Nq7YrFNU4CyoJaKiiW?= =?us-ascii?Q?60Mkter29X3tEpBF4MyJ/rF3JtKwR5FeYX05KjVFC6dtzaxyGnQHI158r3mD?= =?us-ascii?Q?wPog6gS+P4wJ1mauPZZMgFnruUEOrUqeG/96dgUbYxhvm7WUIhbDNEBPakoO?= =?us-ascii?Q?XUCWWkL/F/rwRU8iWiVMK6Kb9yyjBV4vE7kyrI/7Gy+t7wrgtTf2LcsP6z68?= =?us-ascii?Q?g3R0kuCwDpwzCAc/Oi/lgeHG/i9EpxzbPoXoH4zIFcFQLQ5ZqDzUd40rV2KO?= =?us-ascii?Q?CKa1wxEj/c0EIPh4D5DHu9YiLUD0CmyAbq41h/b2WRwXqWasr+4snBVf47LS?= =?us-ascii?Q?/8MLM+/HqsisoEs1L0v3wOPCGL54m7yMCy2LrnhMGe0aK+50ChafeqQJ3ock?= =?us-ascii?Q?YRCm0g8IQZYg1ovntPMCxAvAaamQIPqd1N5ngd5XmyhyZC0lhu8gj/3tIm7g?= =?us-ascii?Q?+tEh1iBsEDMlIcsRz6/NOUauP2+3EHXTH9PBm8y3WAYDErT3wWZcYb7PpJge?= =?us-ascii?Q?rFE9UtI9gTZol0zVCUIGytgfdvJ08Ur5M2es1N+xp7j2/28hZGsX9tWgNeeh?= =?us-ascii?Q?iIsmpwzQGy2T5ePKcaqXYrK2dmISLzD0FAlcFZFhMLwWn1t8EKn9gyTU5276?= =?us-ascii?Q?U6uuWVFIEOUdOhGsYBu8ItnpTGxz/wwtKl4xtV5maFXOVl3edD3Oz5vHpq0F?= =?us-ascii?Q?A3UG6CXdlBWllwk5Zu69O2y7tHvyMEA5NAEPkDRswCMZBi/+4VxJZ8kI83sZ?= =?us-ascii?Q?g+BAVGoU6WrIY7f6thf7pJFqwxAexUIU3725DzxTrK4uMuVYBkH9gpcu9XWo?= =?us-ascii?Q?D517xzyC1Ej3okMnQkZBTaSia2vDCBC1t+0i0UkzysJvEXQq9n6KXHw/vnKM?= =?us-ascii?Q?FtOQxcHputg9GUR2KREgHZJrFkOclo6OxnfhmI/OK03FMNHO+L/cnhO53ZUN?= =?us-ascii?Q?K5ANKhEJoUFKUnaHhTGsslbbEqXyu2WqQTrcnqA2HmakR0ioU7mCuTNRPuu4?= =?us-ascii?Q?wJm2FQPJm5J80PX8W5N+MNs1LubjLqiNRXq6J8uzt9p7H/upjXgunNVqAUi3?= =?us-ascii?Q?z2RlDMup78Rena1Ec6Lr60Zl20x1QIaT4/mbMSUF2yN+pfCmS/tdPu6sEN+b?= =?us-ascii?Q?n/DCtxQqWQtnIpOda0jl0EykJt1ow0v5/ReasxePhI8ug0ORE1cWhNV3IWis?= =?us-ascii?Q?ICDquIajwOc=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)(1800799024)(7416014)(376014)(366016);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?1HDAok4mn/p+sK58vCWxKe6x6nhTrOFOf9SXVwtcLcdeA/OfIqUT5oVnXurZ?= =?us-ascii?Q?YielZ19G7S3mC2U0guAtD/zpIkTEPns6Ud+GrA08U3752Uf9l2AC/By8uWAz?= =?us-ascii?Q?IZDlNlT5CftQPeR7VT0NJ/sVc4h77Y2fonVC8qZKB7LESgiLek04uiyUcV+m?= =?us-ascii?Q?4f3EsAyXHrxTSMPB/h9hdvRjmuUBiGSq5dNqsN0udpzhgDQB12dArkv+ExAg?= =?us-ascii?Q?/qGNmFVAaV2uSpPbdO3fe4z/5eo7LwI7ktzHf28yU3KczCZ55aqjzdvlBfMn?= =?us-ascii?Q?bOZpPTHwj8pUrT5mChonjqf1VMm+6GsefpufGo+CWcvAN4rAtVCMpkUYHp9/?= =?us-ascii?Q?SxF/aHHSSULMzFRiwJiIju4qE7+5/eDclGNo6wfJJxkxWZH4rbVj4lUVAvYB?= =?us-ascii?Q?/0Rl5N/sSO0npm+4ggRGrwfWnlPM0elA1VEIRc6mkGEUrUlyKnb0M/Q0EQEe?= =?us-ascii?Q?NuBxk3DEz15Dpebcc5iq51PPX5dDZB3H7sxXhY3uqeBYj2zKA3x+fjpxHjvL?= =?us-ascii?Q?Q9dYhJyb3trT5tR3ZI5esHuv9X07Ecl/3cijcly66ShvItW3edLJJ3DQ+vCy?= =?us-ascii?Q?ASTRVKqxqloApId3p3ZySWpBQCNDTr9QZa46StSxLakGrqfek11XgAsHDh8m?= =?us-ascii?Q?3rJpzmB5m5JiJUNCJ2zZ24X4x5NEOcZq3UDmVid+zNuahUGuMxpBFh2GLHns?= =?us-ascii?Q?om6ZhhktfbR7uWbCuU7GttOt816wRAJk91BCq/I47qhm0lnPFOEP41lnjwAq?= =?us-ascii?Q?xbUqiNQqaD80Mo9OoIekwjoHgtDkzElFER3hwTqB5+JqDyzvSzYrNzViBqsQ?= =?us-ascii?Q?ErWArywsgqJYY4v9+M4Ls1HZQuPTVZlW2OB0VmCW8wBFdbUE3zvlwra3zTzC?= =?us-ascii?Q?2V3qo0GdhJk5O7HIXFWvy/Sxpye2DguAwskGegs8tx473sANpmqBYPvv9a99?= =?us-ascii?Q?XWGsuEjunAPG2QwYUGK6IdC8wfqqujyAag7HSYpDr4gPMP9/d8LHDGSfdFHI?= =?us-ascii?Q?FmAygHfqIqPybTc63wqEyn0FzwH1VNxFJ/3qB0GoioxFO/OYIrEwDk9pxEiH?= =?us-ascii?Q?whHNHY/94ak3Qq83/LSynB7tW+zrtEbS4iIZMIvCmWA1Xnd+hMY7R4KEXWM5?= =?us-ascii?Q?SuawiucYFwIlpsL7c1eV+S1Auzhwi6nwZB1/iHs7Y3+khjdcaTAePBqc30XO?= =?us-ascii?Q?1yaDFRJzNC+nSAxgKNSuQOrChBJ5zm82V46AqAmhB3Sx0Py4rxUpcSoa2KKC?= =?us-ascii?Q?yItRiFJq7PK3lB2z//LA6IZxEXR8pce80BJv30mH1D+oEFWvXRZ1oS7YHW5V?= =?us-ascii?Q?FNnsoO2lKu6MvvOK9Zyfv0Gbtk8CfNFxWod9WJOMlSjmKo9Batb6Xa1JVrV0?= =?us-ascii?Q?e7AycdsfazeJ8S9fEJrX7q3rSE7xb/CAzgRJ6DY2ynUiJkkPR90feD1dIKn3?= =?us-ascii?Q?cefOu/XKDaA959sp+2+gPqrsBrljULqwWB0RffCLy5JUrHpQf+RND6670Ok3?= =?us-ascii?Q?xup+Mu2vwUwoXCNxzDtrvJt91g288hdsYeBHph7vU96VmUBAnYn+P9XI/5qb?= =?us-ascii?Q?brVUWZJWzdYweMLIsKQ12bp5/pgT26KsfvLuJXUaGvgsX9aLdqZQWNmGee8X?= =?us-ascii?Q?dA=3D=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: 3gzlO6s7UMtWPBb7ffmtGFR976jimqlUWPT+tlWjAGUnkyzMdwC2QTeMsdjW5pFwN4852C+yLvdV5hzuqb3y25FHkw5odGKCBF0K1AtMm2W6sqwcxFjR4K2TVSx3ehis9I5jraclndz2iRKBbmagY3phl7BDH/ZvYkpDFyip/Z+YPOvUIxOazHIZKO+Pfg0n2VGpPf1OIHjRlJGPjhV7CjK5+CUHga15gjc4+iVstWmwdMWWQAC0yZcRTZRyVH76wJz0mkiEl8TYTQiba1uK491tsl+XNscjf+OmPQKEI8A/XmNmCNiVQF4hX8syalGlNy2+AM09ZGERUUzGrs4fITJzjnohuNr0e6gNseEeU+vA/N+OrdNAtw9qwdRVzu17H3/1DExtXvHSnS6DASRcdmNVYs/403cBZefE6uwG1FhOnjeqkOHr0/BecKHxan4yO/TJVKRX9dlDDCILKM499TEJHlKisWDGS759KqZyxzZdOSgxki56tK/ZBFtnbxWC5TQTlv/9w1Se3d4i7Ghl2efm7jvdzHSqX5I+ZmQToXr6M3MmEa+BWG1cuLdEdn1ZhZv769V+dvqtKZjCqquo9vyrEyHZl/FneXsbP1E3Ld0= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: a8bd8325-0e26-4c7e-3dfc-08ddf0a7cea3 X-MS-Exchange-CrossTenant-AuthSource: DM4PR10MB8218.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Sep 2025 20:22:47.5266 (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: q6f1+hedG/lA8c6dwZEHr8DQNVi7rkkkMsbeTe8ykD6pAp0gZ0IaZnSE9y7cLw3sZ+jC2OqUlw3fKgCEP8pD6rIjezHnqG4Q1wKVBn4UGgA= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM4PR10MB6278 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1117,Hydra:6.1.9,FMLib:17.12.80.40 definitions=2025-09-10_04,2025-09-10_01,2025-03-28_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 mlxlogscore=999 adultscore=0 suspectscore=0 spamscore=0 phishscore=0 bulkscore=0 mlxscore=0 malwarescore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2508110000 definitions=main-2509100189 X-Authority-Analysis: v=2.4 cv=QeRmvtbv c=1 sm=1 tr=0 ts=68c1de1c cx=c_pps a=OOZaFjgC48PWsiFpTAqLcw==:117 a=OOZaFjgC48PWsiFpTAqLcw==:17 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=z/mQ4Ysz8XfWz/Q5cLBRGdckG28=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=wKuvFiaSGQ0qltdbU6+NXLB8nM8=:19 a=Ol13hO9ccFRV9qXi2t6ftBPywas=:19 a=xqWC_Br6kY4A:10 a=yJojWOMRYYMA:10 a=GoEa3M9JfhUA:10 a=yPCof4ZbAAAA:8 a=dJYOUp3rnrVNQsztrgsA:9 X-Proofpoint-ORIG-GUID: KZ4tEBcScLiZ40271UO4gVlXo6Q-_dwA X-Proofpoint-GUID: KZ4tEBcScLiZ40271UO4gVlXo6Q-_dwA X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwOTA4MDE1OCBTYWx0ZWRfX8tRVpVAC+Jw+ qBDxfOz26+XJZ+sQWY5/g5o8NaMZCoFtck0XKQpCUB2/lWGzXENWjyOYvY+zIgdcczGdmZNAe9E gDuch3c1f8Z26wwBugchmY9SnWDFDejepAP6Q1mkIAtJdXbZZ8nQK9Oy99lBRgGSaXTM2yTk7GI kKo3tg9Ke0CA4WUz85SO5Sp/3o3tWZBCNFdw17ynJ2axPcRGcO/ffQcRVtyYFPpbwEZsfGDY5l5 b5cKiK6wspxdIo3leNi2otJCTs9r7WWCpGCBkXMUvMISz84csfnpSWfx9dgql0siMlgJpVcXTlo KD0z9wdmlV9xxFOC4YPqxbZRQXAkzdpMTniPzBU/gxYAWIiMTuyHcFoQZjeLNPoUd9TBDdwIGY4 b0Hwa9TN Content-Type: text/plain; charset="utf-8" We introduce the io_remap*() equivalents of remap_pfn_range_prepare() and remap_pfn_range_complete() to allow for I/O remapping via mmap_prepare. We have to make some architecture-specific changes for those architectures which define customised handlers. It doesn't really make sense to make this internal-only as arches specify their version of these functions so we declare these in mm.h. Signed-off-by: Lorenzo Stoakes --- arch/csky/include/asm/pgtable.h | 5 +++++ arch/mips/alchemy/common/setup.c | 28 +++++++++++++++++++++++++--- arch/mips/include/asm/pgtable.h | 10 ++++++++++ arch/sparc/include/asm/pgtable_32.h | 29 +++++++++++++++++++++++++---- arch/sparc/include/asm/pgtable_64.h | 29 +++++++++++++++++++++++++---- include/linux/mm.h | 18 ++++++++++++++++++ 6 files changed, 108 insertions(+), 11 deletions(-) diff --git a/arch/csky/include/asm/pgtable.h b/arch/csky/include/asm/pgtabl= e.h index 5a394be09c35..c83505839a06 100644 --- a/arch/csky/include/asm/pgtable.h +++ b/arch/csky/include/asm/pgtable.h @@ -266,4 +266,9 @@ void update_mmu_cache_range(struct vm_fault *vmf, struc= t vm_area_struct *vma, #define io_remap_pfn_range(vma, vaddr, pfn, size, prot) \ remap_pfn_range(vma, vaddr, pfn, size, prot) =20 +/* default io_remap_pfn_range_prepare can be used. */ + +#define io_remap_pfn_range_complete(vma, addr, pfn, size, prot) \ + remap_pfn_range_complete(vma, addr, pfn, size, prot) + #endif /* __ASM_CSKY_PGTABLE_H */ diff --git a/arch/mips/alchemy/common/setup.c b/arch/mips/alchemy/common/se= tup.c index a7a6d31a7a41..a4ab02776994 100644 --- a/arch/mips/alchemy/common/setup.c +++ b/arch/mips/alchemy/common/setup.c @@ -94,12 +94,34 @@ phys_addr_t fixup_bigphys_addr(phys_addr_t phys_addr, p= hys_addr_t size) return phys_addr; } =20 -int io_remap_pfn_range(struct vm_area_struct *vma, unsigned long vaddr, - unsigned long pfn, unsigned long size, pgprot_t prot) +static unsigned long calc_pfn(unsigned long pfn, unsigned long size) { phys_addr_t phys_addr =3D fixup_bigphys_addr(pfn << PAGE_SHIFT, size); =20 - return remap_pfn_range(vma, vaddr, phys_addr >> PAGE_SHIFT, size, prot); + return phys_addr >> PAGE_SHIFT; +} + +int io_remap_pfn_range(struct vm_area_struct *vma, unsigned long vaddr, + unsigned long pfn, unsigned long size, pgprot_t prot) +{ + return remap_pfn_range(vma, vaddr, calc_pfn(pfn, size), size, prot); } EXPORT_SYMBOL(io_remap_pfn_range); + +void io_remap_pfn_range_prepare(struct vm_area_desc *desc, unsigned long p= fn, + unsigned long size) +{ + remap_pfn_range_prepare(desc, calc_pfn(pfn, size)); +} +EXPORT_SYMBOL(io_remap_pfn_range_prepare); + +int io_remap_pfn_range_complete(struct vm_area_struct *vma, + unsigned long addr, unsigned long pfn, unsigned long size, + pgprot_t prot) +{ + return remap_pfn_range_complete(vma, addr, calc_pfn(pfn, size), + size, prot); +} +EXPORT_SYMBOL(io_remap_pfn_range_complete); + #endif /* CONFIG_MIPS_FIXUP_BIGPHYS_ADDR */ diff --git a/arch/mips/include/asm/pgtable.h b/arch/mips/include/asm/pgtabl= e.h index ae73ecf4c41a..6a8964f55a31 100644 --- a/arch/mips/include/asm/pgtable.h +++ b/arch/mips/include/asm/pgtable.h @@ -607,6 +607,16 @@ phys_addr_t fixup_bigphys_addr(phys_addr_t addr, phys_= addr_t size); int io_remap_pfn_range(struct vm_area_struct *vma, unsigned long vaddr, unsigned long pfn, unsigned long size, pgprot_t prot); #define io_remap_pfn_range io_remap_pfn_range + +void io_remap_pfn_range_prepare(struct vm_area_desc *desc, unsigned long p= fn, + unsigned long size); +#define io_remap_pfn_range_prepare io_remap_pfn_range_prepare + +int io_remap_pfn_range_complete(struct vm_area_struct *vma, + unsigned long addr, unsigned long pfn, unsigned long size, + pgprot_t prot); +#define io_remap_pfn_range_complete io_remap_pfn_range_complete + #else #define fixup_bigphys_addr(addr, size) (addr) #endif /* CONFIG_MIPS_FIXUP_BIGPHYS_ADDR */ diff --git a/arch/sparc/include/asm/pgtable_32.h b/arch/sparc/include/asm/p= gtable_32.h index 7c199c003ffe..cfd764afc107 100644 --- a/arch/sparc/include/asm/pgtable_32.h +++ b/arch/sparc/include/asm/pgtable_32.h @@ -398,9 +398,7 @@ __get_iospace (unsigned long addr) int remap_pfn_range(struct vm_area_struct *, unsigned long, unsigned long, unsigned long, pgprot_t); =20 -static inline int io_remap_pfn_range(struct vm_area_struct *vma, - unsigned long from, unsigned long pfn, - unsigned long size, pgprot_t prot) +static inline unsigned long calc_io_remap_pfn(unsigned long pfn) { unsigned long long offset, space, phys_base; =20 @@ -408,10 +406,33 @@ static inline int io_remap_pfn_range(struct vm_area_s= truct *vma, space =3D GET_IOSPACE(pfn); phys_base =3D offset | (space << 32ULL); =20 - return remap_pfn_range(vma, from, phys_base >> PAGE_SHIFT, size, prot); + return phys_base >> PAGE_SHIFT; +} + +static inline int io_remap_pfn_range(struct vm_area_struct *vma, + unsigned long from, unsigned long pfn, + unsigned long size, pgprot_t prot) +{ + return remap_pfn_range(vma, from, calc_io_remap_pfn(pfn), size, prot); } #define io_remap_pfn_range io_remap_pfn_range =20 +static inline void io_remap_pfn_range_prepare(struct vm_area_desc *desc, u= nsigned long pfn, + unsigned long size) +{ + remap_pfn_range_prepare(desc, calc_io_remap_pfn(pfn)); +} +#define io_remap_pfn_range_prepare io_remap_pfn_range_prepare + +static inline int io_remap_pfn_range_complete(struct vm_area_struct *vma, + unsigned long addr, unsigned long pfn, unsigned long size, + pgprot_t prot) +{ + return remap_pfn_range_complete(vma, addr, calc_io_remap_pfn(pfn), + size, prot); +} +#define io_remap_pfn_range_complete io_remap_pfn_range_complete + #define __HAVE_ARCH_PTEP_SET_ACCESS_FLAGS #define ptep_set_access_flags(__vma, __address, __ptep, __entry, __dirty) \ ({ \ diff --git a/arch/sparc/include/asm/pgtable_64.h b/arch/sparc/include/asm/p= gtable_64.h index 669cd02469a1..b8000ce4b59f 100644 --- a/arch/sparc/include/asm/pgtable_64.h +++ b/arch/sparc/include/asm/pgtable_64.h @@ -1084,9 +1084,7 @@ static inline int arch_unmap_one(struct mm_struct *mm, return 0; } =20 -static inline int io_remap_pfn_range(struct vm_area_struct *vma, - unsigned long from, unsigned long pfn, - unsigned long size, pgprot_t prot) +static inline unsigned long calc_io_remap_pfn(unsigned long pfn) { unsigned long offset =3D GET_PFN(pfn) << PAGE_SHIFT; int space =3D GET_IOSPACE(pfn); @@ -1094,10 +1092,33 @@ static inline int io_remap_pfn_range(struct vm_area= _struct *vma, =20 phys_base =3D offset | (((unsigned long) space) << 32UL); =20 - return remap_pfn_range(vma, from, phys_base >> PAGE_SHIFT, size, prot); + return phys_base >> PAGE_SHIFT; +} + +static inline int io_remap_pfn_range(struct vm_area_struct *vma, + unsigned long from, unsigned long pfn, + unsigned long size, pgprot_t prot) +{ + return remap_pfn_range(vma, from, calc_io_remap_pfn(pfn), size, prot); } #define io_remap_pfn_range io_remap_pfn_range =20 +static inline void io_remap_pfn_range_prepare(struct vm_area_desc *desc, u= nsigned long pfn, + unsigned long size) +{ + return remap_pfn_range_prepare(desc, calc_io_remap_pfn(pfn)); +} +#define io_remap_pfn_range_prepare io_remap_pfn_range_prepare + +static inline int io_remap_pfn_range_complete(struct vm_area_struct *vma, + unsigned long addr, unsigned long pfn, unsigned long size, + pgprot_t prot) +{ + return remap_pfn_range_complete(vma, addr, calc_io_remap_pfn(pfn), + size, prot); +} +#define io_remap_pfn_range_complete io_remap_pfn_range_complete + static inline unsigned long __untagged_addr(unsigned long start) { if (adi_capable()) { diff --git a/include/linux/mm.h b/include/linux/mm.h index 0e256823799d..cca149bb8ef1 100644 --- a/include/linux/mm.h +++ b/include/linux/mm.h @@ -3685,6 +3685,24 @@ static inline int io_remap_pfn_range(struct vm_area_= struct *vma, } #endif =20 +#ifndef io_remap_pfn_range_prepare +static inline void io_remap_pfn_range_prepare(struct vm_area_desc *desc, u= nsigned long pfn, + unsigned long size) +{ + return remap_pfn_range_prepare(desc, pfn); +} +#endif + +#ifndef io_remap_pfn_range_complete +static inline int io_remap_pfn_range_complete(struct vm_area_struct *vma, + unsigned long addr, unsigned long pfn, unsigned long size, + pgprot_t prot) +{ + return remap_pfn_range_complete(vma, addr, pfn, size, + pgprot_decrypted(prot)); +} +#endif + static inline vm_fault_t vmf_error(int err) { if (err =3D=3D -ENOMEM) --=20 2.51.0 From nobody Thu Oct 2 21:39:18 2025 Received: from mx0b-00069f02.pphosted.com (mx0b-00069f02.pphosted.com [205.220.177.32]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id EADDE2F1FFE; Wed, 10 Sep 2025 20:24:04 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=205.220.177.32 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757535847; cv=fail; b=cvy2f00crt9vWTQR0rtsL82s69Ka9eLTn4z+pgRbZkBol/oYUNLd19C9Y/i5kNiRBtEC2zDq4RXbFF8Ufg/5nSeldvMkcj1FdE9JVsqSHpkJbrlkOzgnqt76WrKcW/IZiT1zQ0IiXo8p6PT1bz4Rgjh/YP6+S1589XqhW7MMyFs= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757535847; c=relaxed/simple; bh=YZZl3g7etaAzi9WKn83ayfW12iAdDJa7mab67U7r6Hc=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=Yk8+Lggjb/Gm5oCXdchqC40+d3m60W4I2Xpf753C6+o4T14u4VUlgGKdy3fIfNSZ5HXYMLzPgtRDsRa5aIdTqranpABli9rW+FOPIEe0NBgbZw0vQNSnHhy7wI0QDr6tDhmaSYjzqBbxQ0M/0jeLMg0d5w7borKT3ZaJ1oHj8u8= 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=fi10llUb; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=Pjdmcktv; arc=fail smtp.client-ip=205.220.177.32 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oracle.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oracle.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=oracle.com header.i=@oracle.com header.b="fi10llUb"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="Pjdmcktv" Received: from pps.filterd (m0246632.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 58AGfiDk009732; Wed, 10 Sep 2025 20:23:26 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=lZ5N+zGsZpeQkWttl0zoEAfMvGM/6/OQ/1j8dAT6dD0=; b= fi10llUbLH1lzL2+KEb/exhmtOBxox+CIHB8lctiF69sSoWYTofwluHkQxyRM2n6 vCwn1PaxAsh+DG/AV1u5E42aA3bzJqi/3mBtF64Tx5xw9x9lbr1DJW6ErhcTZ0nB D1CmNaSPSKSsMckEVNLHkVtxX6WU5ZVphnFuuJkxQbWp7zecLQRufPNJ2O/Ootal NpOckpWqPl0IWqPhrV43UscyL0QFY1heYOIWT8pPJayuQyr867oQX1cQi8myLPI4 aqdZ5mJsTKatDWdaJ9pe43G271gMz4cRMCHxkdtmn6sqxkmyiLgDqLPtAfcxQNr5 /eJw7ptaW4DPVfFgDJhqHw== Received: from iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta03.appoci.oracle.com [130.35.103.27]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 4922shvv34-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 10 Sep 2025 20:23:26 +0000 (GMT) Received: from pps.filterd (iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (8.18.1.2/8.18.1.2) with ESMTP id 58AIW1Ji002913; Wed, 10 Sep 2025 20:23:25 GMT Received: from ph7pr06cu001.outbound.protection.outlook.com (mail-westus3azon11010007.outbound.protection.outlook.com [52.101.201.7]) by iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 490bdj1ca0-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 10 Sep 2025 20:23:25 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=P/bz39UF+a6XtamgVw4oSlQ4o7oD9jKa1OAyo4EIPZCr1n99ukOdeASIZaoKFWfzqXTBzg8DeKjH4DhVMTRVLF0Q1pNmmFnyem1ZGdd5GhA2YaXxnDos1V6Te6dKIT+uW5nC4xHfOPsTI6gO3dFRgHV6G2xTcxWYxP3MC7L2u2vp4GXAihZAxFSu9+5fUQkFZ4PfrHQxw5D5tw+1Rv93E4JQlQ1V64Ab94SDhBITDPxy/IsyWj27lHxqQRw06an1ZX4LmFvGpQ2Nd48MsTxnuzhFu1iv/rHKjONT6wG+EKtmbCqbk1aVgfgW4p1dSzCQpxtB4jR/W0LXLELbpDoBwA== 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=lZ5N+zGsZpeQkWttl0zoEAfMvGM/6/OQ/1j8dAT6dD0=; b=XUjDgISq/uSCoj+ZGAXSSRo/PQjo6RFkUwt/NhbL0hnrDXpQlV48QB2uz/bPajXQ3le982iHBDDqYlk/oYJ4PbMOsit573vLIAdAycOmEMkZAfN07WRFVzCAI2vJfGirZzX/S+LUeK/s+7hQYzSuj4ES/OjYTUbhfVD2GkFVAQBGcow2hUSKJJiS4M668KI3Aa1J/+OjvsFZQfWLqVy+Zs4bWkhSlA9bUfm9YZY6O6ujTsUEHxPOiJe//HYqISvzBg8WDLN6VplI0iQ2wQunlrbDpWvv/1XfqocezxoT/wkcz8No9NkeCFznR52RtsJbVsm+dxPQV+gPJr8Nq9jhBw== 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=lZ5N+zGsZpeQkWttl0zoEAfMvGM/6/OQ/1j8dAT6dD0=; b=Pjdmcktvzo5x4dps/CjGn5lMAt8a08plA1i7AZCpm3S7Mt+/WyO/zbLp+Thqr3BzDu6E8U+zUsMFS+Gkm6iIF8Z81sKwneyCSe/lpItUrJO83EYuqZ5kZ0Hm5a991018s6zoQ3AgUPMAe6BJkPW91nOsyVcQnkrkjJYXvB3GkDY= Received: from DM4PR10MB8218.namprd10.prod.outlook.com (2603:10b6:8:1cc::16) by DM4PR10MB6278.namprd10.prod.outlook.com (2603:10b6:8:b8::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9094.22; Wed, 10 Sep 2025 20:22:50 +0000 Received: from DM4PR10MB8218.namprd10.prod.outlook.com ([fe80::2650:55cf:2816:5f2]) by DM4PR10MB8218.namprd10.prod.outlook.com ([fe80::2650:55cf:2816:5f2%5]) with mapi id 15.20.9094.021; Wed, 10 Sep 2025 20:22:50 +0000 From: Lorenzo Stoakes To: Andrew Morton Cc: Jonathan Corbet , Matthew Wilcox , Guo Ren , Thomas Bogendoerfer , Heiko Carstens , Vasily Gorbik , Alexander Gordeev , Christian Borntraeger , Sven Schnelle , "David S . Miller" , Andreas Larsson , Arnd Bergmann , Greg Kroah-Hartman , Dan Williams , Vishal Verma , Dave Jiang , Nicolas Pitre , Muchun Song , Oscar Salvador , David Hildenbrand , Konstantin Komarov , Baoquan He , Vivek Goyal , Dave Young , Tony Luck , Reinette Chatre , Dave Martin , James Morse , Alexander Viro , Christian Brauner , Jan Kara , "Liam R . Howlett" , Vlastimil Babka , Mike Rapoport , Suren Baghdasaryan , Michal Hocko , Hugh Dickins , Baolin Wang , Uladzislau Rezki , Dmitry Vyukov , Andrey Konovalov , Jann Horn , Pedro Falcato , linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org, linux-fsdevel@vger.kernel.org, linux-csky@vger.kernel.org, linux-mips@vger.kernel.org, linux-s390@vger.kernel.org, sparclinux@vger.kernel.org, nvdimm@lists.linux.dev, linux-cxl@vger.kernel.org, linux-mm@kvack.org, ntfs3@lists.linux.dev, kexec@lists.infradead.org, kasan-dev@googlegroups.com, Jason Gunthorpe Subject: [PATCH v2 08/16] mm: add ability to take further action in vm_area_desc Date: Wed, 10 Sep 2025 21:22:03 +0100 Message-ID: X-Mailer: git-send-email 2.51.0 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: GVYP280CA0026.SWEP280.PROD.OUTLOOK.COM (2603:10a6:150:f9::29) 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_|DM4PR10MB6278:EE_ X-MS-Office365-Filtering-Correlation-Id: 097ecb4f-9e64-4a22-b322-08ddf0a7d06b X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|7416014|376014|366016; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?lgrqZrDmzt+3Zmt5Ab5gMXoGJM1fVp7uWqnSuL8wKMPQoAPgICzTKhKE9sJy?= =?us-ascii?Q?n1ciYoUJ/tIUOm5andFZc5xM15r87K8271QiaexCa8JDJp+4hGGd4ULsjpLf?= =?us-ascii?Q?cTn15uEc+4ZCOCLpOjmQTdWBTw1bsB5RQuWqbKmRE01UcEmFQ9Rgva95SYkN?= =?us-ascii?Q?HQU+BixzqtGFRvX/a3cj89iUM6XMxgg/vhSreevHDFcF+gGL5rYKYwnP3kG3?= =?us-ascii?Q?/+oXXrFvU49nP3S2QRuCZel1cj7ydOrfcx68+Mmvb2Fnwyqc68r/TvXsnNVF?= =?us-ascii?Q?EBMT2vbTMmrrAshimmt42JoxL4Jmf/7aXBsYfvEb4n56KoNV26gaP4JCNtD8?= =?us-ascii?Q?gYq4KeCmjQFbsd7O/XbEPIcbfIriV95M6T8Rn9k5QxsKk/409HQbRS0tkXB8?= =?us-ascii?Q?sSLbd8ApV/AvvwcsoEtftJBNcv+BqTVUuIPs8hXq/a73fSZyxg3Pnt9rrPnW?= =?us-ascii?Q?CcTNOy9AYulQ9tgi5ivHpw5tQvIC7dr+vXTjYhI1n9KgtCmelJ+eeYstoPec?= =?us-ascii?Q?IZNVhJVolewL5WjxOW8mRZ5lKfICy/HMJbtEKammeqcq8H1rH0bs99iw85RC?= =?us-ascii?Q?3RRUiwmqH7jNSjMoD8JKUar8koL8BtTyjg9S9toy5PEsXRoz5j8P7RIaWbPD?= =?us-ascii?Q?FeGo+gupI2J3Y4OXeJP3iSZbNo/eILmcyuwQ3c/2194oJr7zPOxJeHLaV+BE?= =?us-ascii?Q?mnnmSmiTCdzDXesGXPSQcQGlkBhOFMCQ4xkRow04W+KKwALbm5o2yFnUYTM4?= =?us-ascii?Q?ZHhYQHmWib6yUoHHNtVY6bU5/TAR8/4OoXaXR/Nbp1dNals+5PGEXxy62RK2?= =?us-ascii?Q?ox22vj2UzIWwJgNh/oLhU5xeg3RJ938yxTeSx8dUVIXR15REC6nTbPqq5SZN?= =?us-ascii?Q?dsm89yVH23Sf1hCOoMTasAoil3ZrnHwD432k5d17i4h6vqD/WF5Ct/+v0Q2m?= =?us-ascii?Q?FAWn1qkRT/7fO8O1jayOfdnKHFwC8iwATVvo3m+ABpAgO6IwWvA6h7u4U332?= =?us-ascii?Q?MGgqxk0rp16WrQYwaQFkEsqpOp5gvof0tw8rWjCzEkvewcUwqM4ae96IqaQQ?= =?us-ascii?Q?ydN6F05W+gLrJhUiIFXfKYUxRM8rew2zH9sE731PCdq33vhw4mJ+Bptia+KG?= =?us-ascii?Q?hCxGu0+qU5nPKxv0A7QfVQYqHfgqzXjVHP+qPeXB6eo0HqLeedbtS804bBAO?= =?us-ascii?Q?D2v8fruFVoXl+AD7Hl9Uxl+0qIKQGgOKfn3P4GOuOCBmu5U53jSNbVNLu4M8?= =?us-ascii?Q?nZKdFs0XA1W8P91c5v6l/6JaqfceR0re385Dg8CiJKWKEYdptQi7aVTuFV56?= =?us-ascii?Q?ZT28e71tD+YT/aSE6dQnrJi8idXGDNUMee8tnXsjS/2aUMU48jvVwcZ30dvA?= =?us-ascii?Q?prpJMpD3FGfQAdRnylASm7Jd5cUp5DGdPRAwoRXitJQBVqgJm1/xSAL8Oq61?= =?us-ascii?Q?yFh2MRohUog=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)(1800799024)(7416014)(376014)(366016);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?uEyqkqX66kZhgLUtauiCByDYnEEfzDRHG3xtkA388VOry6VhIkmHgkUGfep2?= =?us-ascii?Q?uFSgdyfYtfOqk2sgWdlPvIQrkzVHzhSsznkRjgmDg3+UuU4bDlAmsBgw+HrK?= =?us-ascii?Q?oSEyZDeIsZ+6H/bHRMdDfLfRJkQeVGwoorQQMCBg0lTgbspVzoWyqbHYlKCK?= =?us-ascii?Q?qBhnc+oMntFZxkUy+tzWit82ijOuCMMfewwEBveN4ur7f2JpAaj313jg8FA0?= =?us-ascii?Q?OMz4xelFti6/WrIIUGuz8uprOY8pi0cmu5MeULMFcyDViid9y9oy0MPAksIB?= =?us-ascii?Q?hmjm+Fqdeb8d2v8Nyx/36FFxM3NEUs7vnArEFE6TBt4KeTf/gYHiLpNkgu10?= =?us-ascii?Q?7QAJv5uh4an7vSdFypCUYqg7iHuClTW/xG7veSLxbzAQNE6AaY93CVo92S09?= =?us-ascii?Q?+iw5dpM5QfHBYJkr0NgF/X1Oj8ykQUpZp0xgaCTa2ozNIi/rOi2Vfluyvfrb?= =?us-ascii?Q?QYLlw7Nwjvf7ayAtpD3ieqJ73qSVNe6d4M5PbZfffZScG5fpWfQ+yBmE/AQ/?= =?us-ascii?Q?fGNA5LTmX02tp2E1EHGfDY8ZNxDKngLkq+GRtNb0dHwXwRmehisAw6XxuaFG?= =?us-ascii?Q?3MazxNyemTUNdfAbYe70Vs5OpDf+Ga/aPLvTM6v5jDzXDTLtlkvnwa944RG2?= =?us-ascii?Q?YFKXrPpk2Qp8XCVQJiW+YZd9+9vv+6/BZsRIptnoHmyUU1f2qsEC2FfvKoMa?= =?us-ascii?Q?BnySe6T1iTaqwnXJc9vZ98FbvBA59cDRYOSLoemFSeFIOvyhBuJmS64YByCx?= =?us-ascii?Q?vP3NeHppWXRt5U1We8yd8BhjWMOK+KaNuSRD9eRlWRJ0Nb5ML4Vov1vOmBk5?= =?us-ascii?Q?LvtAZmslBNAgZSTWKVsoZF7+OOoX32w2sD/a2fLtDw+OzyWwWbVpLg9IxS2a?= =?us-ascii?Q?iXGlmMWlnJcjI7qjgN6gNOIMBliZBrS74uzMn4OBwopXzDSUxU/LvkZV0dc2?= =?us-ascii?Q?gmNsZ0r7XkNaJWsJm3MSfM20LWcS1vA1F5i2vzjNGb7mpXsZIz2kai9Xnqcy?= =?us-ascii?Q?+YwkuPTsM4vnJAPPCP65VjoBwTLpGeEtYYFNiQsn4I8sgDpdOQR7MxxRPMFl?= =?us-ascii?Q?gxn0uITK9xQ2RZ7ngWijYAve//0WsmDv/c8mmf70RxiGhb9G4cyWs9xQwRcN?= =?us-ascii?Q?/EXG7LjsJ2DEXO4NDmbB7oSoaIzEjhzTD6e1G+7Tl2oeCEbTONOTZWvs5ZG4?= =?us-ascii?Q?8ohQpTdTJOnqn+sHjXsyMxkoQfmH4vZay8vBY4RS1U9QsfcfoxDMA5ORhrfj?= =?us-ascii?Q?s1eBl/jGzd4dPNtPAxoTTjHMVIL6uecvauP4NGHc9H0MvX1q0709bmuUT0kt?= =?us-ascii?Q?OeR7dzh15fZgto+XGPSDx2S3qsEIEE97mH8j+RxLIRKJU4PQP73osj/iwSf/?= =?us-ascii?Q?8125JX2dLjvHJ7YkdBFHPdWQQ6Ilua0i+FxrGjbNAzL1WV+Qhma+3ZI22bev?= =?us-ascii?Q?wRcLaVpWZPecD5R2S02pCJkclOklLo+Ib08R2bNkyOYe3Fi/kJKjmou1XGxb?= =?us-ascii?Q?DHxVkjJzp6StP3Z/KqpCAcpMNbg4SiH7TrkA7fkT8p354TRppgyqGnCsbljY?= =?us-ascii?Q?Bmz0cvbGDhHor0j8od9LpJ9OxMSwVxLKeMOS7Ppt1u6fY1B7ezztYgwSYuPr?= =?us-ascii?Q?Pg=3D=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: 4PNKWHO/zi+Jz8E8uuS+VUbHw2a7brCl9NT/ZZP89v9ecV6VQoeZkEVvuZmNyre39GCOgYfoiJk46vMclstaVWtasYhD4F7bYuVdtwpD28FGi9IC3aiCadCDvSE4FqxyaOWsJhEKTMdzM0pPZLTl0JIlaKGj3MsIwiJkkiuisGciIw/ah4KBSC67K30vhoA3JCObbJcbsG3pdQmcDd5b90YRB7SHYRc+IwGpEutH+tu8HPsSuKqSJeZCB2xL4NreCnpU9SZKoGHpXh5b1E9N04NfSlV/6O9GGOj/RZ57/ywPxO9F6TcUA9k/Ry+LAJ7ipW/MQzzVGpw/zqzPU48i0wUhcCLD4OTp1lYxpW6gw4cxHpCtvoPQkNcuQ8triFa3l+Up/thFEdENvfh+oCO8CUEah22czPYjzZWMzr2kZID/nBuuWF6/iVs05z/xG9/lExPbECV9tczDVuIxQXjmg3a2WSmvXPwXdh1l4Sky+II6ch6SIVg+WtqmTjI/4AgdMUXEy1Jml5wTqVSpXvxev6/IRe96Lzug77SRF23/4OHRYfnf1Yq/4uJdP+8m3eM/CkUxweUuMWR4z0vyzof43NeZKmns92rsswTD5uiHBXM= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 097ecb4f-9e64-4a22-b322-08ddf0a7d06b X-MS-Exchange-CrossTenant-AuthSource: DM4PR10MB8218.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Sep 2025 20:22:50.5264 (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: PGabOcRwPcsLT90zdlRNyrTFwPXTeaMeDygZJxDBDaoSWUpajec0HF4yS0zVPYC1DaJD5UPce99LpoBBkvEzSmCqYEXvRyVvQQsS8L7nuV4= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM4PR10MB6278 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1117,Hydra:6.1.9,FMLib:17.12.80.40 definitions=2025-09-10_04,2025-09-10_01,2025-03-28_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 spamscore=0 adultscore=0 suspectscore=0 bulkscore=0 mlxscore=0 mlxlogscore=999 phishscore=0 malwarescore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2508110000 definitions=main-2509100190 X-Authority-Analysis: v=2.4 cv=esTfzppX c=1 sm=1 tr=0 ts=68c1de3e b=1 cx=c_pps a=qoll8+KPOyaMroiJ2sR5sw==:117 a=qoll8+KPOyaMroiJ2sR5sw==:17 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=z/mQ4Ysz8XfWz/Q5cLBRGdckG28=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=wKuvFiaSGQ0qltdbU6+NXLB8nM8=:19 a=Ol13hO9ccFRV9qXi2t6ftBPywas=:19 a=xqWC_Br6kY4A:10 a=yJojWOMRYYMA:10 a=GoEa3M9JfhUA:10 a=yPCof4ZbAAAA:8 a=DGlkvfY0CEs1pWa0Jz0A:9 cc=ntf awl=host:12084 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwOTA4MDE2NSBTYWx0ZWRfX6ir1Bv85KV7M qHHLT7O7bkElmdmtBl8NOWizhYOUoP4aopOglfE5V61PorgJ9HNeOu8HRwynmSNVQedOTfB0GCp iR+U4m/p8ynBw6eVFP9ydTAXxZVG55bRqubU8nR1TXEjNDsSQsCF/7epYm3IaaaS5T+Gs27AE8y z9kWKM89atU/lGZcm9rkJXTy8EQlrNKMuwEoMoJ35QtFEvv5A8VaIJOCXAys2LdmhXEnzyfdJNa Sc9wz2kDU/YOo/MF0tNI3F/HpsYjFc23fwy4Jhm7ClmKl2tWXVpRM+30rSsWBNAnUBvsRZp6Ajd rhtKRBK6OBfbQX5L0h/UtPy554aB+NtKWaphJTEzc+Dvnuqq8Y+Qqoug1VGm5lmst0xG/FXALrh BkwftwyhL3cqJTXLXLuecv9jPBidLA== X-Proofpoint-GUID: lCT8vtzfaDVl9wcQfUgz1Th1ZnCKRJRQ X-Proofpoint-ORIG-GUID: lCT8vtzfaDVl9wcQfUgz1Th1ZnCKRJRQ Content-Type: text/plain; charset="utf-8" Some drivers/filesystems need to perform additional tasks after the VMA is set up. This is typically in the form of pre-population. The forms of pre-population most likely to be performed are a PFN remap or insertion of a mixed map, so we provide this functionality, ensuring that we perform the appropriate actions at the appropriate time - that is setting flags at the point of .mmap_prepare, and performing the actual remap at the point at which the VMA is fully established. This prevents the driver from doing anything too crazy with a VMA at any stage, and we retain complete control over how the mm functionality is applied. Unfortunately callers still do often require some kind of custom action, so we add an optional success/error _hook to allow the caller to do something after the action has succeeded or failed. This is done at the point when the VMA has already been established, so the harm that can be done is limited. The error hook can be used to filter errors if necessary. We implement actions as abstracted from the vm_area_desc, so we provide the ability for custom hooks to invoke actions distinct from the vma descriptor. If any error arises on these final actions, we simply unmap the VMA altogether. Also update the stacked filesystem compatibility layer to utilise the action behaviour, and update the VMA tests accordingly. For drivers which perform truly custom logic, we provide a custom action hook which is invoked at the point of action execution. This can then, in turn, update the desc object and perform other actions, such as partially remapping ranges for instance. We export vma_desc_action_prepare() and vma_desc_action_complete() for drivers to do this. This is performed at a stage where the VMA is already established, immediately prior to mapping completion, so it is considerably less problematic than a general mmap hook. Note that at the point of the action being taken, the VMA is visible via the rmap, only the VMA write lock is held, so if anything needs to access the VMA, it is able to. Essentially the action is taken as if it were performed after the mapping, but is kept atomic with VMA state. Signed-off-by: Lorenzo Stoakes --- include/linux/mm.h | 30 ++++++ include/linux/mm_types.h | 61 ++++++++++++ mm/util.c | 150 +++++++++++++++++++++++++++- mm/vma.c | 70 ++++++++----- tools/testing/vma/vma_internal.h | 164 ++++++++++++++++++++++++++++++- 5 files changed, 447 insertions(+), 28 deletions(-) diff --git a/include/linux/mm.h b/include/linux/mm.h index cca149bb8ef1..2ceead3ffcf0 100644 --- a/include/linux/mm.h +++ b/include/linux/mm.h @@ -3597,6 +3597,36 @@ static inline unsigned long vma_desc_pages(struct vm= _area_desc *desc) return vma_desc_size(desc) >> PAGE_SHIFT; } =20 +static inline void mmap_action_remap(struct mmap_action *action, + unsigned long addr, unsigned long pfn, unsigned long size, + pgprot_t pgprot) +{ + action->type =3D MMAP_REMAP_PFN; + + action->remap.addr =3D addr; + action->remap.pfn =3D pfn; + action->remap.size =3D size; + action->remap.pgprot =3D pgprot; +} + +static inline void mmap_action_mixedmap(struct mmap_action *action, + unsigned long addr, unsigned long pfn, unsigned long num_pages) +{ + action->type =3D MMAP_INSERT_MIXED; + + action->mixedmap.addr =3D addr; + action->mixedmap.pfn =3D pfn; + action->mixedmap.num_pages =3D num_pages; +} + +struct page **mmap_action_mixedmap_pages(struct mmap_action *action, + unsigned long addr, unsigned long num_pages); + +void mmap_action_prepare(struct mmap_action *action, + struct vm_area_desc *desc); +int mmap_action_complete(struct mmap_action *action, + struct vm_area_struct *vma); + /* Look up the first VMA which exactly match the interval vm_start ... vm_= end */ static inline struct vm_area_struct *find_exact_vma(struct mm_struct *mm, unsigned long vm_start, unsigned long vm_end) diff --git a/include/linux/mm_types.h b/include/linux/mm_types.h index 4a441f78340d..ae6c7a0a18a7 100644 --- a/include/linux/mm_types.h +++ b/include/linux/mm_types.h @@ -770,6 +770,64 @@ struct pfnmap_track_ctx { }; #endif =20 +/* What action should be taken after an .mmap_prepare call is complete? */ +enum mmap_action_type { + MMAP_NOTHING, /* Mapping is complete, no further action. */ + MMAP_REMAP_PFN, /* Remap PFN range based on desc->remap. */ + MMAP_INSERT_MIXED, /* Mixed map based on desc->mixedmap. */ + MMAP_INSERT_MIXED_PAGES, /* Mixed map based on desc->mixedmap_pages. */ + MMAP_CUSTOM_ACTION, /* User-provided hook. */ +}; + +struct mmap_action { + union { + /* Remap range. */ + struct { + unsigned long addr; + unsigned long pfn; + unsigned long size; + pgprot_t pgprot; + } remap; + /* Insert mixed map. */ + struct { + unsigned long addr; + unsigned long pfn; + unsigned long num_pages; + } mixedmap; + /* Insert specific mixed map pages. */ + struct { + unsigned long addr; + struct page **pages; + unsigned long num_pages; + /* kfree pages on completion? */ + bool kfree_pages :1; + } mixedmap_pages; + struct { + int (*action_hook)(struct vm_area_struct *vma); + } custom; + }; + enum mmap_action_type type; + + /* + * If specified, this hook is invoked after the selected action has been + * successfully completed. Not that the VMA write lock still held. + * + * The absolute minimum ought to be done here. + * + * Returns 0 on success, or an error code. + */ + int (*success_hook)(struct vm_area_struct *vma); + + /* + * If specified, this hook is invoked when an error occurred when + * attempting the selection action. + * + * The hook can return an error code in order to filter the error, but + * it is not valid to clear the error here. + */ + int (*error_hook)(int err); +}; + /* * Describes a VMA that is about to be mmap()'ed. Drivers may choose to * manipulate mutable fields which will cause those fields to be updated i= n the @@ -793,6 +851,9 @@ struct vm_area_desc { /* Write-only fields. */ const struct vm_operations_struct *vm_ops; void *private_data; + + /* Take further action? */ + struct mmap_action action; }; =20 /* diff --git a/mm/util.c b/mm/util.c index 248f877f629b..11752d67b89c 100644 --- a/mm/util.c +++ b/mm/util.c @@ -1155,15 +1155,18 @@ int __compat_vma_mmap_prepare(const struct file_ope= rations *f_op, .vm_file =3D vma->vm_file, .vm_flags =3D vma->vm_flags, .page_prot =3D vma->vm_page_prot, + + .action.type =3D MMAP_NOTHING, /* Default */ }; int err; =20 err =3D f_op->mmap_prepare(&desc); if (err) return err; - set_vma_from_desc(vma, &desc); =20 - return 0; + mmap_action_prepare(&desc.action, &desc); + set_vma_from_desc(vma, &desc); + return mmap_action_complete(&desc.action, vma); } EXPORT_SYMBOL(__compat_vma_mmap_prepare); =20 @@ -1279,6 +1282,149 @@ void snapshot_page(struct page_snapshot *ps, const = struct page *page) } } =20 +struct page **mmap_action_mixedmap_pages(struct mmap_action *action, + unsigned long addr, unsigned long num_pages) +{ + struct page **pages; + + pages =3D kmalloc_array(num_pages, sizeof(struct page *), GFP_KERNEL); + if (!pages) + return NULL; + + action->type =3D MMAP_INSERT_MIXED_PAGES; + + action->mixedmap_pages.addr =3D addr; + action->mixedmap_pages.num_pages =3D num_pages; + action->mixedmap_pages.kfree_pages =3D true; + action->mixedmap_pages.pages =3D pages; + + return pages; +} +EXPORT_SYMBOL(mmap_action_mixedmap_pages); + +/** + * mmap_action_prepare - Perform preparatory setup for an VMA descriptor + * action which need to be performed. + * @desc: The VMA descriptor to prepare for @action. + * @action: The action to perform. + * + * Other than internal mm use, this is intended to be used by mmap_prepare= code + * which specifies a custom action hook and needs to prepare for another a= ction + * it wishes to perform. + */ +void mmap_action_prepare(struct mmap_action *action, + struct vm_area_desc *desc) +{ + switch (action->type) { + case MMAP_NOTHING: + case MMAP_CUSTOM_ACTION: + break; + case MMAP_REMAP_PFN: + remap_pfn_range_prepare(desc, action->remap.pfn); + break; + case MMAP_INSERT_MIXED: + case MMAP_INSERT_MIXED_PAGES: + desc->vm_flags |=3D VM_MIXEDMAP; + break; + } +} +EXPORT_SYMBOL(mmap_action_prepare); + +/** + * mmap_action_complete - Execute VMA descriptor action. + * @action: The action to perform. + * @vma: The VMA to perform the action upon. + * + * Similar to mmap_action_prepare(), other than internal mm usage this is + * intended for mmap_prepare users who implement a custom hook - with this + * function being called from the custom hook itself. + * + * Return: 0 on success, or error, at which point the VMA will be unmapped. + */ +int mmap_action_complete(struct mmap_action *action, + struct vm_area_struct *vma) +{ + int err =3D 0; + + switch (action->type) { + case MMAP_NOTHING: + break; + case MMAP_REMAP_PFN: + VM_WARN_ON_ONCE((vma->vm_flags & VM_REMAP_FLAGS) !=3D + VM_REMAP_FLAGS); + + err =3D remap_pfn_range_complete(vma, action->remap.addr, + action->remap.pfn, action->remap.size, + action->remap.pgprot); + + break; + case MMAP_INSERT_MIXED: + { + unsigned long pgnum =3D 0; + unsigned long pfn =3D action->mixedmap.pfn; + unsigned long addr =3D action->mixedmap.addr; + unsigned long vaddr =3D vma->vm_start; + + VM_WARN_ON_ONCE(!(vma->vm_flags & VM_MIXEDMAP)); + + for (; pgnum < action->mixedmap.num_pages; + pgnum++, pfn++, addr +=3D PAGE_SIZE, vaddr +=3D PAGE_SIZE) { + vm_fault_t vmf; + + vmf =3D vmf_insert_mixed(vma, vaddr, addr); + if (vmf & VM_FAULT_ERROR) { + err =3D vm_fault_to_errno(vmf, 0); + break; + } + } + + break; + } + case MMAP_INSERT_MIXED_PAGES: + { + struct page **pages =3D action->mixedmap_pages.pages; + unsigned long nr_pages =3D action->mixedmap_pages.num_pages; + + VM_WARN_ON_ONCE(!(vma->vm_flags & VM_MIXEDMAP)); + + err =3D vm_insert_pages(vma, action->mixedmap_pages.addr, + pages, &nr_pages); + if (action->mixedmap_pages.kfree_pages) + kfree(pages); + break; + } + case MMAP_CUSTOM_ACTION: + err =3D action->custom.action_hook(vma); + break; + } + + /* + * If an error occurs, unmap the VMA altogether and return an error. We + * only clear the newly allocated VMA, since this function is only + * invoked if we do NOT merge, so we only clean up the VMA we created. + */ + if (err) { + const size_t len =3D vma_pages(vma) << PAGE_SHIFT; + + do_munmap(current->mm, vma->vm_start, len, NULL); + + if (action->error_hook) { + /* We may want to filter the error. */ + err =3D action->error_hook(err); + + /* The caller should not clear the error. */ + VM_WARN_ON_ONCE(!err); + } + return err; + } + + if (action->success_hook) + err =3D action->success_hook(vma); + + return 0; +} +EXPORT_SYMBOL(mmap_action_complete); + #ifdef CONFIG_MMU /** * folio_pte_batch - detect a PTE batch for a large folio diff --git a/mm/vma.c b/mm/vma.c index 36a9f4d453be..a1ec405bda25 100644 --- a/mm/vma.c +++ b/mm/vma.c @@ -2328,17 +2328,33 @@ static void update_ksm_flags(struct mmap_state *map) map->vm_flags =3D ksm_vma_flags(map->mm, map->file, map->vm_flags); } =20 +static void set_desc_from_map(struct vm_area_desc *desc, + const struct mmap_state *map) +{ + desc->start =3D map->addr; + desc->end =3D map->end; + + desc->pgoff =3D map->pgoff; + desc->vm_file =3D map->file; + desc->vm_flags =3D map->vm_flags; + desc->page_prot =3D map->page_prot; +} + /* * __mmap_setup() - Prepare to gather any overlapping VMAs that need to be * unmapped once the map operation is completed, check limits, account map= ping * and clean up any pre-existing VMAs. * + * As a result it sets up the @map and @desc objects. + * * @map: Mapping state. + * @desc: VMA descriptor * @uf: Userfaultfd context list. * * Returns: 0 on success, error code otherwise. */ -static int __mmap_setup(struct mmap_state *map, struct list_head *uf) +static int __mmap_setup(struct mmap_state *map, struct vm_area_desc *desc, + struct list_head *uf) { int error; struct vma_iterator *vmi =3D map->vmi; @@ -2395,6 +2411,7 @@ static int __mmap_setup(struct mmap_state *map, struc= t list_head *uf) */ vms_clean_up_area(vms, &map->mas_detach); =20 + set_desc_from_map(desc, map); return 0; } =20 @@ -2567,34 +2584,26 @@ static void __mmap_complete(struct mmap_state *map,= struct vm_area_struct *vma) * * Returns 0 on success, or an error code otherwise. */ -static int call_mmap_prepare(struct mmap_state *map) +static int call_mmap_prepare(struct mmap_state *map, + struct vm_area_desc *desc) { int err; - struct vm_area_desc desc =3D { - .mm =3D map->mm, - .file =3D map->file, - .start =3D map->addr, - .end =3D map->end, - - .pgoff =3D map->pgoff, - .vm_file =3D map->file, - .vm_flags =3D map->vm_flags, - .page_prot =3D map->page_prot, - }; =20 /* Invoke the hook. */ - err =3D vfs_mmap_prepare(map->file, &desc); + err =3D vfs_mmap_prepare(map->file, desc); if (err) return err; =20 + mmap_action_prepare(&desc->action, desc); + /* Update fields permitted to be changed. */ - map->pgoff =3D desc.pgoff; - map->file =3D desc.vm_file; - map->vm_flags =3D desc.vm_flags; - map->page_prot =3D desc.page_prot; + map->pgoff =3D desc->pgoff; + map->file =3D desc->vm_file; + map->vm_flags =3D desc->vm_flags; + map->page_prot =3D desc->page_prot; /* User-defined fields. */ - map->vm_ops =3D desc.vm_ops; - map->vm_private_data =3D desc.private_data; + map->vm_ops =3D desc->vm_ops; + map->vm_private_data =3D desc->private_data; =20 return 0; } @@ -2642,16 +2651,24 @@ static unsigned long __mmap_region(struct file *fil= e, unsigned long addr, { struct mm_struct *mm =3D current->mm; struct vm_area_struct *vma =3D NULL; - int error; bool have_mmap_prepare =3D file && file->f_op->mmap_prepare; VMA_ITERATOR(vmi, mm, addr); MMAP_STATE(map, mm, &vmi, addr, len, pgoff, vm_flags, file); + struct vm_area_desc desc =3D { + .mm =3D mm, + .file =3D file, + .action =3D { + .type =3D MMAP_NOTHING, /* Default to no further action. */ + }, + }; + bool allocated_new =3D false; + int error; =20 map.check_ksm_early =3D can_set_ksm_flags_early(&map); =20 - error =3D __mmap_setup(&map, uf); + error =3D __mmap_setup(&map, &desc, uf); if (!error && have_mmap_prepare) - error =3D call_mmap_prepare(&map); + error =3D call_mmap_prepare(&map, &desc); if (error) goto abort_munmap; =20 @@ -2670,6 +2687,7 @@ static unsigned long __mmap_region(struct file *file,= unsigned long addr, error =3D __mmap_new_vma(&map, &vma); if (error) goto unacct_error; + allocated_new =3D true; } =20 if (have_mmap_prepare) @@ -2677,6 +2695,12 @@ static unsigned long __mmap_region(struct file *file= , unsigned long addr, =20 __mmap_complete(&map, vma); =20 + if (have_mmap_prepare && allocated_new) { + error =3D mmap_action_complete(&desc.action, vma); + if (error) + return error; + } + return addr; =20 /* Accounting was done by __mmap_setup(). */ diff --git a/tools/testing/vma/vma_internal.h b/tools/testing/vma/vma_inter= nal.h index 07167446dcf4..c21642974798 100644 --- a/tools/testing/vma/vma_internal.h +++ b/tools/testing/vma/vma_internal.h @@ -170,6 +170,28 @@ typedef __bitwise unsigned int vm_fault_t; #define swap(a, b) \ do { typeof(a) __tmp =3D (a); (a) =3D (b); (b) =3D __tmp; } while (0) =20 +enum vm_fault_reason { + VM_FAULT_OOM =3D (__force vm_fault_t)0x000001, + VM_FAULT_SIGBUS =3D (__force vm_fault_t)0x000002, + VM_FAULT_MAJOR =3D (__force vm_fault_t)0x000004, + VM_FAULT_HWPOISON =3D (__force vm_fault_t)0x000010, + VM_FAULT_HWPOISON_LARGE =3D (__force vm_fault_t)0x000020, + VM_FAULT_SIGSEGV =3D (__force vm_fault_t)0x000040, + VM_FAULT_NOPAGE =3D (__force vm_fault_t)0x000100, + VM_FAULT_LOCKED =3D (__force vm_fault_t)0x000200, + VM_FAULT_RETRY =3D (__force vm_fault_t)0x000400, + VM_FAULT_FALLBACK =3D (__force vm_fault_t)0x000800, + VM_FAULT_DONE_COW =3D (__force vm_fault_t)0x001000, + VM_FAULT_NEEDDSYNC =3D (__force vm_fault_t)0x002000, + VM_FAULT_COMPLETED =3D (__force vm_fault_t)0x004000, + VM_FAULT_HINDEX_MASK =3D (__force vm_fault_t)0x0f0000, +}; +#define VM_FAULT_ERROR (VM_FAULT_OOM | VM_FAULT_SIGBUS | \ + VM_FAULT_SIGSEGV | VM_FAULT_HWPOISON | \ + VM_FAULT_HWPOISON_LARGE | VM_FAULT_FALLBACK) + +#define FOLL_HWPOISON (1 << 6) + struct kref { refcount_t refcount; }; @@ -274,6 +296,92 @@ struct mm_struct { =20 struct vm_area_struct; =20 +/* What action should be taken after an .mmap_prepare call is complete? */ +enum mmap_action_type { + MMAP_NOTHING, /* Mapping is complete, no further action. */ + MMAP_REMAP_PFN, /* Remap PFN range based on desc->remap. */ + MMAP_INSERT_MIXED, /* Mixed map based on desc->mixedmap. */ + MMAP_INSERT_MIXED_PAGES, /* Mixed map based on desc->mixedmap_pages. */ + MMAP_CUSTOM_ACTION, /* User-provided hook. */ +}; + +struct mmap_action { + union { + /* Remap range. */ + struct { + unsigned long addr; + unsigned long pfn; + unsigned long size; + pgprot_t pgprot; + } remap; + /* Insert mixed map. */ + struct { + unsigned long addr; + unsigned long pfn; + unsigned long num_pages; + } mixedmap; + /* Insert specific mixed map pages. */ + struct { + unsigned long addr; + struct page **pages; + unsigned long num_pages; + /* kfree pages on completion? */ + bool kfree_pages :1; + } mixedmap_pages; + struct { + int (*action_hook)(struct vm_area_struct *vma); + } custom; + }; + enum mmap_action_type type; + + /* + * If specified, this hook is invoked after the selected action has been + * successfully completed. Not that the VMA write lock still held. + * + * The absolute minimum ought to be done here. + * + * Returns 0 on success, or an error code. + */ + int (*success_hook)(struct vm_area_struct *vma); + + /* + * If specified, this hook is invoked when an error occurred when + * attempting the selection action. + * + * The hook can return an error code in order to filter the error, but + * it is not valid to clear the error here. + */ + int (*error_hook)(int err); +}; + +/* + * Describes a VMA that is about to be mmap()'ed. Drivers may choose to + * manipulate mutable fields which will cause those fields to be updated i= n the + * resultant VMA. + * + * Helper functions are not required for manipulating any field. + */ +struct vm_area_desc { + /* Immutable state. */ + const struct mm_struct *const mm; + struct file *const file; /* May vary from vm_file in stacked callers. */ + unsigned long start; + unsigned long end; + + /* Mutable fields. Populated with initial state. */ + pgoff_t pgoff; + struct file *vm_file; + vm_flags_t vm_flags; + pgprot_t page_prot; + + /* Write-only fields. */ + const struct vm_operations_struct *vm_ops; + void *private_data; + + /* Take further action? */ + struct mmap_action action; +}; + /* * Describes a VMA that is about to be mmap()'ed. Drivers may choose to * manipulate mutable fields which will cause those fields to be updated i= n the @@ -297,6 +405,9 @@ struct vm_area_desc { /* Write-only fields. */ const struct vm_operations_struct *vm_ops; void *private_data; + + /* Take further action? */ + struct mmap_action action; }; =20 struct file_operations { @@ -1466,12 +1577,23 @@ static inline void free_anon_vma_name(struct vm_are= a_struct *vma) static inline void set_vma_from_desc(struct vm_area_struct *vma, struct vm_area_desc *desc); =20 +static inline void mmap_action_prepare(struct mmap_action *action, + struct vm_area_desc *desc) +{ +} + +static inline int mmap_action_complete(struct mmap_action *action, + struct vm_area_struct *vma) +{ + return 0; +} + static inline int __compat_vma_mmap_prepare(const struct file_operations *= f_op, struct file *file, struct vm_area_struct *vma) { struct vm_area_desc desc =3D { .mm =3D vma->vm_mm, - .file =3D vma->vm_file, + .file =3D file, .start =3D vma->vm_start, .end =3D vma->vm_end, =20 @@ -1479,15 +1601,18 @@ static inline int __compat_vma_mmap_prepare(const s= truct file_operations *f_op, .vm_file =3D vma->vm_file, .vm_flags =3D vma->vm_flags, .page_prot =3D vma->vm_page_prot, + + .action.type =3D MMAP_NOTHING, /* Default */ }; int err; =20 err =3D f_op->mmap_prepare(&desc); if (err) return err; - set_vma_from_desc(vma, &desc); =20 - return 0; + mmap_action_prepare(&desc.action, &desc); + set_vma_from_desc(vma, &desc); + return mmap_action_complete(&desc.action, vma); } =20 static inline int compat_vma_mmap_prepare(struct file *file, @@ -1548,4 +1673,37 @@ static inline vm_flags_t ksm_vma_flags(const struct = mm_struct *, const struct fi return vm_flags; } =20 +static inline void remap_pfn_range_prepare(struct vm_area_desc *desc, unsi= gned long pfn) +{ +} + +static inline int remap_pfn_range_complete(struct vm_area_struct *vma, uns= igned long addr, + unsigned long pfn, unsigned long size, pgprot_t pgprot) +{ + return 0; +} + +static inline vm_fault_t vmf_insert_mixed(struct vm_area_struct *vma, unsi= gned long addr, + unsigned long pfn) +{ + return 0; +} + +static inline int vm_fault_to_errno(vm_fault_t vm_fault, int foll_flags) +{ + if (vm_fault & VM_FAULT_OOM) + return -ENOMEM; + if (vm_fault & (VM_FAULT_HWPOISON | VM_FAULT_HWPOISON_LARGE)) + return (foll_flags & FOLL_HWPOISON) ? -EHWPOISON : -EFAULT; + if (vm_fault & (VM_FAULT_SIGBUS | VM_FAULT_SIGSEGV)) + return -EFAULT; + return 0; +} + +static inline int do_munmap(struct mm_struct *, unsigned long, size_t, + struct list_head *uf) +{ + return 0; +} + #endif /* __MM_VMA_INTERNAL_H */ --=20 2.51.0 From nobody Thu Oct 2 21:39:18 2025 Received: from mx0b-00069f02.pphosted.com (mx0b-00069f02.pphosted.com [205.220.177.32]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 7026C2F6196; Wed, 10 Sep 2025 20:24:22 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=205.220.177.32 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757535864; cv=fail; b=Dng1QKS3a+xbDMqb4cRB16dvb1mUB/KERTlwNPpXomT4XzQTpuMITCx9RIBqM5455yTLEXu3C4paGkpmkKvBgtHodNyoovYfRyDZ2b9fYiywoC89Nc2rvgZlyuopADwTSX9a2l49vtnyN/K8Rf6KZNba/Mykn+gi+/9WK5PSc0Y= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757535864; c=relaxed/simple; bh=9tnuSNbWqL4u3OhLXhyney3VthVRXizDzb9hdcWC+6I=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=UT5kneiOjqGodUUjZNmHlxB5ntf/a2Z7e9WPKxGJyBsf0+XA0fMIb3RjsE4527cK5B+4f/yQLQ7/ef6oWw2owO66iwDdicSwnw47hn1RGjQTy3m01Gom21W2dXhz/jlCAf7R0mnxPCpkNiGZonyUzjOqoqepNJr1kCcrfm+Z4eo= 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=ObIV4SC4; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=YK1wF6ke; arc=fail smtp.client-ip=205.220.177.32 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oracle.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oracle.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=oracle.com header.i=@oracle.com header.b="ObIV4SC4"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="YK1wF6ke" Received: from pps.filterd (m0246631.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 58AGfigc005172; Wed, 10 Sep 2025 20:23:26 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=RSLOn2j28R9kM5FsmlPMWXz46guFdqwiFtj1MWQEEAI=; b= ObIV4SC4+g/ItWShZSjOq3YF9LPmlxugAbIzQNN+mmM/tY1coUristVRY5Ryv9YB MoKNpluYMCENTmbU0laVpcNhf22X5n8Vd8U8LqC0DiQUd++7Jep53leZ67sYrDvq rb8QHvfTqYg39h60qgr6tbVF6IzerNXifN1oqTlnaedpKyHAp8xZyvZBr4PZ3dS6 WrT3HlW48E7SyVznc/Za60tOOvSxsd7VpJYQ0x+73jh20t3CpfWtECnnkcdEBFNl jFcQ6pBDQbgnRsT13ts61+P5J4fgbvOxVdD1Yq0d6WmIs0+y+HbSSp1B6nRQ758S WWkuaDkezsdgYLzg6Twjyw== Received: from iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta03.appoci.oracle.com [130.35.103.27]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 49226sw002-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 10 Sep 2025 20:23:26 +0000 (GMT) Received: from pps.filterd (iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (8.18.1.2/8.18.1.2) with ESMTP id 58AJfi4L002816; Wed, 10 Sep 2025 20:23:25 GMT Received: from bn1pr04cu002.outbound.protection.outlook.com (mail-eastus2azon11010005.outbound.protection.outlook.com [52.101.56.5]) by iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 490bdj1cg6-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 10 Sep 2025 20:23:25 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=lKJ3wjJIVkFVp9hxj4ZimMp0eiXlM+KNAtb7xMQxOMV9uqWgQBWitXMGcEobcPM/x3GE1nyTI5rWHifFNrWrnotU24Zny6qr/x9x1M9WWkbcUUfLHD44uRQP2ptM/sDUu54pZDgVIBoe1rVJ9GAHyINWs5b15gRAsyOktw+E1qpdw5V1tUARDbfzm3mKNR/dUHXYgTXysQzGfj2k3NZNKXvngpvZKw4mpKnYxbdUEzx7pEVNJPomrQ6+BNb2ZUMaAqLlsAmcRyRRZpUUtHpyVFRfT0Wl1fEbKe5SzbRaztTzhEILYKW6odjuK9pn7NxXgQrYnzXcv4BJeyxNGYyP+A== 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=RSLOn2j28R9kM5FsmlPMWXz46guFdqwiFtj1MWQEEAI=; b=XWeQOGeIvq2KkZ6rbt7EiDtOamGXyo39ennV95ZS8p7roFByQDXEuW3kxm1l7i0p4sv9fTqEK7KJbJM7cXA97lCAdW5a2w+nPsqrLny7OxXX3nfSMlmbx05XkN3yr71ERjOlnlDaHw/L3IVJIitfZzpB+pH2e1S0DbVt4SRmNMgfN6sVWSjb0NZ6hs3vuS3biOuHcVZrlvPq5gGfXXOs//3jNUl/J+VXZixTyW3BFnXJmzdCbxpDdgfBGQjoluyoyRDgSs+KaWZFG/O26tjIzhsIWqeUZ1eCrHXpZDAqpT0rNf1rJEJBOlXTa+ip4vTyq2axsGr2ro9JdVdT7pcLIw== 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=RSLOn2j28R9kM5FsmlPMWXz46guFdqwiFtj1MWQEEAI=; b=YK1wF6kef5qDbXKClxlX1LtdMsoOfF2zfchMEZcf3Gx2YRsMC5R38WIhDZ8zoPWEwTOQeTg21o5vA8G9dn1CqcN+BYHqtAgNrhGi98kXasyWLN66m5uwzEDLvbj2lpyILXYjsDa7fr2phHL5L4Q4/eVV/K8lqeOBZlM01i+bGEQ= Received: from DM4PR10MB8218.namprd10.prod.outlook.com (2603:10b6:8:1cc::16) by DM4PR10MB6278.namprd10.prod.outlook.com (2603:10b6:8:b8::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9094.22; Wed, 10 Sep 2025 20:22: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%5]) with mapi id 15.20.9094.021; Wed, 10 Sep 2025 20:22:53 +0000 From: Lorenzo Stoakes To: Andrew Morton Cc: Jonathan Corbet , Matthew Wilcox , Guo Ren , Thomas Bogendoerfer , Heiko Carstens , Vasily Gorbik , Alexander Gordeev , Christian Borntraeger , Sven Schnelle , "David S . Miller" , Andreas Larsson , Arnd Bergmann , Greg Kroah-Hartman , Dan Williams , Vishal Verma , Dave Jiang , Nicolas Pitre , Muchun Song , Oscar Salvador , David Hildenbrand , Konstantin Komarov , Baoquan He , Vivek Goyal , Dave Young , Tony Luck , Reinette Chatre , Dave Martin , James Morse , Alexander Viro , Christian Brauner , Jan Kara , "Liam R . Howlett" , Vlastimil Babka , Mike Rapoport , Suren Baghdasaryan , Michal Hocko , Hugh Dickins , Baolin Wang , Uladzislau Rezki , Dmitry Vyukov , Andrey Konovalov , Jann Horn , Pedro Falcato , linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org, linux-fsdevel@vger.kernel.org, linux-csky@vger.kernel.org, linux-mips@vger.kernel.org, linux-s390@vger.kernel.org, sparclinux@vger.kernel.org, nvdimm@lists.linux.dev, linux-cxl@vger.kernel.org, linux-mm@kvack.org, ntfs3@lists.linux.dev, kexec@lists.infradead.org, kasan-dev@googlegroups.com, Jason Gunthorpe Subject: [PATCH v2 09/16] doc: update porting, vfs documentation for mmap_prepare actions Date: Wed, 10 Sep 2025 21:22:04 +0100 Message-ID: X-Mailer: git-send-email 2.51.0 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: GVYP280CA0046.SWEP280.PROD.OUTLOOK.COM (2603:10a6:150:f9::16) 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_|DM4PR10MB6278:EE_ X-MS-Office365-Filtering-Correlation-Id: 729f4b94-2b2a-4878-72e0-08ddf0a7d24a X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|7416014|376014|366016; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?JUrPMECNB6p1lUEk12FxjwDWp/mdx1gtVjU1qKq2AgHKwge/6FkrGxi1ZWoH?= =?us-ascii?Q?5y8kzQFp+di3hO6t4hi+1TaD+pGg9T2sr+TEK8CtfE/tq/ipJQU/JkyVppdg?= =?us-ascii?Q?U2xnX5IlutTOkJvUoEhy2m1fCMfb36sUKmmgVCn/Mb2exNrV2yRgx1ZiLd4o?= =?us-ascii?Q?4kU4KrMPmLj93Xnw+BniHKK8vqAvvsvR1WtCOaq466HaX9/Bo2TtdHJb6IKq?= =?us-ascii?Q?WjdH+6fVX+zQTc8TULo2jELyjXPcRCND4RRr7XnAQAph2IRfZKD0Z6j7xsMp?= =?us-ascii?Q?b/Syd5i5Z/gXU59YVsI/mKE9Xxx/QKVsozYvYkiOdmOGkZD8icoJXrcDbeUo?= =?us-ascii?Q?ZN0uAHpmk4GTjB8vwNTyMZ9ekNtXHbVM55CD72NKZBboMn6Gqxe2PZqGkCtk?= =?us-ascii?Q?RTHp6tBGyDqK/RAGptwzm2TPpzoLAjrCht21mMlYjFe66GQ798V5meX5tcV7?= =?us-ascii?Q?Y2zWF9RFXnEei76HgGRrUkslnIhlBxzoJW9axCDWn2ufvmCRa0yGPLWbbeZl?= =?us-ascii?Q?Cg39CkljUPefb7bPPbkSjOJuAKqdZ94Mn9JSkJY52LkmE0C3z0A6Q2ZEoF0G?= =?us-ascii?Q?lV48PiKJO8WDM6UMJ7k7oahIlsKp7quI30oTxxoh4Ie1Qv6h9zyWDPkwvKz6?= =?us-ascii?Q?gspBhU4zhFM2OeM6aZN22PHbsTGcNupSyIhaxfNK/feAi3Zc/RCOW8cTontz?= =?us-ascii?Q?h3sV7P7UUpNPKVQ3CEPVCmOlj0opClHXQCDM2h0LdEZnL5GUlJgAZbfTB6kv?= =?us-ascii?Q?E2pyFO8TVO+DX0fPBhSIUgwnymvJ4bbhAmhUwzM81QL/R55CiMchoJRCnOM2?= =?us-ascii?Q?jKk4t2QCUj8YM6xNb4dCHqb9HKQFxskN4GQvZDEnEWBKxyC7A51cLoxVxKNo?= =?us-ascii?Q?DwhjZDUr0VvRMdQ1VBzwnesT1tKmd7ZjrGvLlQz2Cg3vvwDflgalnGCjIY7A?= =?us-ascii?Q?NGbO0Ex1vHaZ8EB+/NCQ7qGIESOwfdvBfctv4t1oWeNaHCbdO1X8W0GnhepY?= =?us-ascii?Q?meq0HxtY8QcgK+bN8CUDL7CDIvvfrQc7gVOZQoGMVtL+G6ReWe3cc7lpk/sT?= =?us-ascii?Q?tLmSU8TnKtA3B/2GDqZvK24/MVDKhlRKwgNIpSDv+QnDhms+rvDD0P5CC3SC?= =?us-ascii?Q?8LEJsaRnIWKrIz4CNHC29ePUJe4V9Jy9iJdHrrgMHR0f7OcCczm4F744E2yR?= =?us-ascii?Q?pitgBgGJl7P2D6fIBUgzkOJqHG8t2JXUcf0s42mi0o5cGHAWUx09rURmdOQ7?= =?us-ascii?Q?renEixs09LV4AaovY3Y0sJemQlc8Gw4pTf1dp7eSm2MxGxnV78lOkjuwfNn1?= =?us-ascii?Q?JKWLxWThDFMLbOoDdW3xD2N3Oq/V1vhhhWLM+UH1t/HmmMP23N6253Rd5Uj8?= =?us-ascii?Q?61IjEZbrHSn+k8mEIrMfcR+53e5X8Ht/4OkRGRK31DbcICTxO/GJM/RFzPqL?= =?us-ascii?Q?4BzH1i/sBds=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)(1800799024)(7416014)(376014)(366016);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?euU+P+auMFHXUlcOFmQiansK+q6gF6XpgEpxVlU+NScTJ4niF9ygK11oANTR?= =?us-ascii?Q?mAocld++W8Porc22OPvhl0mD8meU2y8QWiNYrTnn4eSx0DTHETDkf1uvMwy9?= =?us-ascii?Q?IjY6lnuEns14Oj1IsprEE1fYXTTDasxfWG8/M4mfP8UOSepI+9EkO6lY1j/P?= =?us-ascii?Q?goDnnQAcuf6ooAuXE9W1u8R0vbko1Vrugaw2gGZBYDOvHGhpJ5Wke2cGjQwX?= =?us-ascii?Q?K2guExt29XCZnJqEE/z5rzsJW0Ap3GISHTUSMA5yZlX3+A5UxZQ2B/pYtHE2?= =?us-ascii?Q?R/nOdcbp6C45sybCLGBeeQlx6iguVNvCUoOQOk/HtVu9i6IpE2B1PqeoZ8vA?= =?us-ascii?Q?u/Xqf2jffO2ece2dN4Q82IClQ5zSPSfh+LBSEljZarQXk+6buPgrd8DhIiWE?= =?us-ascii?Q?loHDA0wLEhaj3JEqZbBjIrprkmC0lwAW8/73S0PekPdVSH05m2BDKfKwefjw?= =?us-ascii?Q?P0Sc9gieZ75xr3G9PGsktfzEn6xvlyhuEFueb91RnlQfFhchbCtSS+RFInYY?= =?us-ascii?Q?Dt/1/RZQUWFt2/x2sHlxSKoLh6S0hSvLGT31S6B9e1I4dAzjPSEaT4MWmGex?= =?us-ascii?Q?MSudFlfHfmmxgZtZ85unhKxJ2L7zW8RYaXsZlAITIVBcd8RkS3rHLhM6usDV?= =?us-ascii?Q?kSQHUzNlFKJPjrZ6BTU0HOuMXrse1e95afuPqlFTm0Hhw74T1Xkhl/xhyL9h?= =?us-ascii?Q?mE/z+vcbAIJQxzmhKzmiYPg0Bp7pti7vA5VaRPQpB1Hdzt4jHh4vhLSiMeAL?= =?us-ascii?Q?ZaMlPj/F18DolaYhLdWOtzLZmVoO80uEXORXOvzzti+OE5UWHMn3U96PPax7?= =?us-ascii?Q?BKS9wNtAlDkGMZ8mee+mBqKIO8kM+oB96NchS2PT5iAwbUsK1Ztmhyo4KSs/?= =?us-ascii?Q?PFAyklBkcSL4s/Uo0PrdJSnBPrq8voP0MvXmvYwP4HfNY0YyDvZzLJdKuisd?= =?us-ascii?Q?RvKdTeSczSL1I4XfuQ0bnvNZLEBuCXXggrDoL6YlINEGoeQXVuBc2VzWMx7D?= =?us-ascii?Q?UPUT7dxh98j0+9t4vrYdwsFMwiIAgyhP2X298HGnqG7NqbA6pxeXzZpus7/9?= =?us-ascii?Q?U6WLAWMA1cRWUnhEfSrfWUBl17mTtGHjxYXn9dxaZ1OQJg0aH3m7QgECfpIS?= =?us-ascii?Q?jFQcOY18yxJRX+eKCZOLD2voaZg8YBZUo6UyyFvEZ3AE1eImNvHZoLOuUbXP?= =?us-ascii?Q?SmZ6UEJrhidS7k+V1pfENARDSSw+UVHlXPdst05OfKSk75F+B+Bj33A4IBER?= =?us-ascii?Q?7NHyMSiTfNzln4ZCZLAyPDhUbrpM9NzJctFcxNowU9ItaGirnqhNzZUSevm8?= =?us-ascii?Q?BaTG/X/85dQThcs5PnH/fBPMLcwlPiiOmzC/QS34WtSKtZY2YwVWVlpdBET1?= =?us-ascii?Q?BVfjDo4pE4CZBFo1Pq6olp7+h4eMcVMJ6GiBuNYqFPKjJ1CbpY1I0eKw/3Xl?= =?us-ascii?Q?h4pXmXwSPC5qmNhI052fDXlahB2ewMWDlsnl7xxChf3+vGOgYGDs40DxQF2t?= =?us-ascii?Q?vYxFsIi9HMiqPiEer8LRFBBjeXN7cmilLH6IvWJoHMR10gYrFX7hiO2okbzo?= =?us-ascii?Q?50OccLj6/cur0JYoBXDnixaS0PRey8w2UDx+BSAc/lAvAYymZnY6zo+LL9Ud?= =?us-ascii?Q?bw=3D=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: 2bE5kSjPaD/YhbmEeFdnk8oneH8cm+aOnFfY4BwTamL4PMw5ijVuNe3eMUBCS0UMG0aZvIFzxB7GmMKQP2Zbs9qi7h7QTMwoBNVDtaJcYPJBOEFXkeMdbFWDuWn2cXf13iW4BRk2GbIucwQ+D2HaewY0h6T7UUBKXS2pBVl1/mKhcm+ebuVEp7IuMdHC2InE3OKHYq9IqXeRb/fLeMSvI5cqcHLYqmuae92WzaFC8ucm0AgEFJ3NftJ+mqTCztQQdryuMbNU3x6Ru1cNC/11SxPRpt0IbR0K2y7Hv0lcTeL2q1wz9Jb8E41sM0kz7j6oWhkIo8SOFYAqSbbqmoubroFSI8Ejj2ojDwWTQD02uvFwr4i+q74Il/vBL5XG3A6CPcrgqMkKj05O4pmjjqEpUhoWWtbqyQTmIo86su/tmex+aTh41RKhucb3G+F9bY7LJlKE1npC1SdwRsCuEWiMFmYsZXD171+rkRHvhxahSbXiC8+dqu6lrtxUC8WbqptZloEZVQc91KwkasMaiebk9eEsrfo5xz5NHw3cCmWk8qcO1SfRuKr1hF4LQZ/esbYoL6RaCuh/WyZqpIo9emvINTaYv9YRGbwUWnsJb0KeD/U= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 729f4b94-2b2a-4878-72e0-08ddf0a7d24a X-MS-Exchange-CrossTenant-AuthSource: DM4PR10MB8218.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Sep 2025 20:22:53.6568 (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: O/mOo0Z5HSPrGzRcleQn6gyJHCD6TjKL6YSXfDLwykoYSvdjXcIHZjYPeIVJM2BpQwYIjEZElGup4dZMDIkuZ0DlCqh+tKpnK6faAekCB8U= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM4PR10MB6278 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1117,Hydra:6.1.9,FMLib:17.12.80.40 definitions=2025-09-10_04,2025-09-10_01,2025-03-28_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 spamscore=0 adultscore=0 suspectscore=0 bulkscore=0 mlxscore=0 mlxlogscore=999 phishscore=0 malwarescore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2508110000 definitions=main-2509100190 X-Authority-Analysis: v=2.4 cv=QeRmvtbv c=1 sm=1 tr=0 ts=68c1de3e b=1 cx=c_pps a=qoll8+KPOyaMroiJ2sR5sw==:117 a=qoll8+KPOyaMroiJ2sR5sw==:17 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=z/mQ4Ysz8XfWz/Q5cLBRGdckG28=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=wKuvFiaSGQ0qltdbU6+NXLB8nM8=:19 a=Ol13hO9ccFRV9qXi2t6ftBPywas=:19 a=xqWC_Br6kY4A:10 a=yJojWOMRYYMA:10 a=GoEa3M9JfhUA:10 a=yPCof4ZbAAAA:8 a=CxsoVSIMbwK9moDqu60A:9 cc=ntf awl=host:12084 X-Proofpoint-ORIG-GUID: 2jZcJypCMw4ZaAzbXOlG6eVmfZv5itma X-Proofpoint-GUID: 2jZcJypCMw4ZaAzbXOlG6eVmfZv5itma X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwOTA4MDE1OCBTYWx0ZWRfX7fVhP82iXqPJ 0IoctgL4CGLy7Izt/b1q925tORBuZe0G4m0JAamtpW8tfDr8vyGej7F/+VgIqZL5Xa1mR9U6mII GtTMV8fWmsDWXCBAdf5KKCnRWQcwSPWSALoAcy1w6CxtQczcb68bIzrP5mFOuOoJ6Mc8bzIfdWo Y0dQGezOyZ0Vc/82aB7pxaSlPp+wHS5ZQ0cYDxl+mJzYjG2grGhsK0V7IBD+iYt8M0Tk+iUIRtG XU+kxBodLWYLFEolplYjUs7DO3sUSAZBXh3Z4ht/KHiY1z0+DbqTV7RpjcfedPHoeFEeQmk09Em BlGq4tocJxoq/3Cb/43NyiWy1pdU+LhasC/m/J08Uxglajtd5cCH2/mv3Gz79yUxpHtRZvrD3tX RBAkjB2+NLV/0l3W3Pim/wzPDNn72Q== Content-Type: text/plain; charset="utf-8" Now we have introduced the ability to specify that actions should be taken after a VMA is established via the vm_area_desc->action field as specified in mmap_prepare, update both the VFS documentation and the porting guide to describe this. Signed-off-by: Lorenzo Stoakes Reviewed-by: Jan Kara --- Documentation/filesystems/porting.rst | 5 +++++ Documentation/filesystems/vfs.rst | 4 ++++ 2 files changed, 9 insertions(+) diff --git a/Documentation/filesystems/porting.rst b/Documentation/filesyst= ems/porting.rst index 85f590254f07..6743ed0b9112 100644 --- a/Documentation/filesystems/porting.rst +++ b/Documentation/filesystems/porting.rst @@ -1285,3 +1285,8 @@ rather than a VMA, as the VMA at this stage is not ye= t valid. The vm_area_desc provides the minimum required information for a filesystem to initialise state upon memory mapping of a file-backed region, and output parameters for the file system to set this state. + +In nearly all cases, this is all that is required for a filesystem. Howeve= r, if +a filesystem needs to perform an operation such a pre-population of page t= ables, +then that action can be specified in the vm_area_desc->action field, which= can +be configured using the mmap_action_*() helpers. diff --git a/Documentation/filesystems/vfs.rst b/Documentation/filesystems/= vfs.rst index 486a91633474..9e96c46ee10e 100644 --- a/Documentation/filesystems/vfs.rst +++ b/Documentation/filesystems/vfs.rst @@ -1236,6 +1236,10 @@ otherwise noted. file-backed memory mapping, most notably establishing relevant private state and VMA callbacks. =20 + If further action such as pre-population of page tables is required, + this can be specified by the vm_area_desc->action field and related + parameters. + Note that the file operations are implemented by the specific filesystem in which the inode resides. When opening a device node (character or block special) most filesystems will call special --=20 2.51.0 From nobody Thu Oct 2 21:39:18 2025 Received: from mx0b-00069f02.pphosted.com (mx0b-00069f02.pphosted.com [205.220.177.32]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 7DDCD2F7ACB; Wed, 10 Sep 2025 20:24:05 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=205.220.177.32 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757535847; cv=fail; b=Aj3jlajgrQN2aXTfi8tcLxa4X2UOxmrJpaa6n9ylqzfqzS+8NfrzWsfCNMOUjAZo9Zz2IS9hZHViHQ4kmjJFCKC51XO40qz+CTAUY1GDJijH1MKRGRJHM/LtqYvDaWxTLoMecqDPsTejVmqb1EqHQJfR6zwTFhYzwtCrcB9BHeM= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757535847; c=relaxed/simple; bh=YQsO5t1GkzaWcF/V4MmMfQLdoa50z1QEntYy2TGevUo=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=lkk4GA0nDie53Zxf22tHMKh1lFcq6Ifhmqq8ygkXwNyNixpOzM/ARA+2hRGpzwzGrNx+2xBXaNLNJ4ycf4GqZeO1sAXkU0fDpOJRU71HLQ0tw27BjBu5Lxviwjk3tQ9jHtODyqBIcM62QHOxUjunw3Wq7MW3yiyKTMw2nFk7L8U= 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=fECf/Vps; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=JcaYp9vb; arc=fail smtp.client-ip=205.220.177.32 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oracle.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oracle.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=oracle.com header.i=@oracle.com header.b="fECf/Vps"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="JcaYp9vb" Received: from pps.filterd (m0246631.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 58AGfinx005160; Wed, 10 Sep 2025 20:23:28 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=cc :content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s= corp-2025-04-25; bh=IdO+5riToqMw0UNPLrgmJbck6oD8g2wCEdmFRuXk5ts=; b= fECf/VpsAAaXuHqoWlzy15uO/4GUH+YRq48Me81rFRxwgplXHzDOkEw1hJr8H3vD AIoCQXcqVguFvGBzCsbJjLRNqyaI2z3/f9tFWdfa48sfGGY0r9+jNCKcMBl/Q026 fa5xuTMzAmudBvexkPTmeee/NcGcKUYhbUhf1sjWERi/Io2zqumwibTm8rOwguEz 0BeKdkphTeUqo7mFNVxw0dkU0Jpq1gKPbs4dvLTRD9TTnUfgOTH72ofMesfG0JDI 5iX3fR/+yuF971P+MLPlSyjSAQYzOYk2fDUB+rwR8Rxuz7PYPVdlNzAK/4Mrvv0v RT07NhJiT8WbR3xUijleVA== Received: from iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta03.appoci.oracle.com [130.35.103.27]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 49226sw00f-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 10 Sep 2025 20:23:27 +0000 (GMT) Received: from pps.filterd (iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (8.18.1.2/8.18.1.2) with ESMTP id 58AJfi4O002816; Wed, 10 Sep 2025 20:23:27 GMT Received: from bn1pr04cu002.outbound.protection.outlook.com (mail-eastus2azon11010005.outbound.protection.outlook.com [52.101.56.5]) by iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 490bdj1cg6-2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 10 Sep 2025 20:23:26 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=sI/qBe4GXqh2AJHSZizc+B40K6jLseQ8fyoINRlKhI7QqvvqVAdpj+nAY2aab8Pk0f0UEgCDIpJfldaaWjafWq+44+286pi0d51EVz4sS/O35K3hZQmrTAWz79mSUfCuOrY1qhlVZxwwPH/mLhjhvjL5fZAKhpU++i/6LF51wV4XvYdfklITmltiSeinSrZytwK4PowNJRq3he0kys35/pcrT0rtDnuFcqyvDFiqHHNv6bdNI3k5yOl52Db8sIgFvj7Usy+BVV2kJ0VYIFJf0ng0qFl3boTqvxY/0mOr9tTyI8Wq26IzzIHbWZsymW39w82UKh/zHtQYRnGaT5VJkQ== 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=IdO+5riToqMw0UNPLrgmJbck6oD8g2wCEdmFRuXk5ts=; b=h+kC9YUwITWOnGxwEc1f+cbIhGmkUzJvkIZDQEMJYIcQUX5LmqdTPnnAjehz3s5GATSfQc5tWG6xBJqVG+rRjNJ8K1p5YAA/rsYN6AGRBcs9bP31NX3902gAOmMAeEdKv4RK4TwZETnst9t8amlfvrG+6elEwx+59Ud/wi6QMEdxMk8Ge0GWHfdqXf9MrBE1GWiVLEdSwanyB9D9Ok+IvqjvYtavQleqxQiTBnhOaVNvwoNnEBTLaWf2Gl2XVfPkiAkT+AxZLqEzdCtIsACvOs3HGVI8xpQPvsIzOa8/l79OX4yxiqOdfKKz+AxGI4sEU2UPHBvoVBs8+jtAJ2fteg== 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=IdO+5riToqMw0UNPLrgmJbck6oD8g2wCEdmFRuXk5ts=; b=JcaYp9vbFkTUaAQL05wP9Ki2MPdJZmoQY60WqrpAQpjossJEEioxeUwNVzz5WI9RB2tlwSuken3EAsa2xE+Tk7PtzWpKPqg1QxeLnVvkFKXKGouCd6yFObiM7sliB4QH2n8NkVwKT+la2yV2XhUXgnYdMhCBYbOuhHgV/C0Ho8w= Received: from DM4PR10MB8218.namprd10.prod.outlook.com (2603:10b6:8:1cc::16) by DM4PR10MB6278.namprd10.prod.outlook.com (2603:10b6:8:b8::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9094.22; Wed, 10 Sep 2025 20:22:56 +0000 Received: from DM4PR10MB8218.namprd10.prod.outlook.com ([fe80::2650:55cf:2816:5f2]) by DM4PR10MB8218.namprd10.prod.outlook.com ([fe80::2650:55cf:2816:5f2%5]) with mapi id 15.20.9094.021; Wed, 10 Sep 2025 20:22:56 +0000 From: Lorenzo Stoakes To: Andrew Morton Cc: Jonathan Corbet , Matthew Wilcox , Guo Ren , Thomas Bogendoerfer , Heiko Carstens , Vasily Gorbik , Alexander Gordeev , Christian Borntraeger , Sven Schnelle , "David S . Miller" , Andreas Larsson , Arnd Bergmann , Greg Kroah-Hartman , Dan Williams , Vishal Verma , Dave Jiang , Nicolas Pitre , Muchun Song , Oscar Salvador , David Hildenbrand , Konstantin Komarov , Baoquan He , Vivek Goyal , Dave Young , Tony Luck , Reinette Chatre , Dave Martin , James Morse , Alexander Viro , Christian Brauner , Jan Kara , "Liam R . Howlett" , Vlastimil Babka , Mike Rapoport , Suren Baghdasaryan , Michal Hocko , Hugh Dickins , Baolin Wang , Uladzislau Rezki , Dmitry Vyukov , Andrey Konovalov , Jann Horn , Pedro Falcato , linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org, linux-fsdevel@vger.kernel.org, linux-csky@vger.kernel.org, linux-mips@vger.kernel.org, linux-s390@vger.kernel.org, sparclinux@vger.kernel.org, nvdimm@lists.linux.dev, linux-cxl@vger.kernel.org, linux-mm@kvack.org, ntfs3@lists.linux.dev, kexec@lists.infradead.org, kasan-dev@googlegroups.com, Jason Gunthorpe Subject: [PATCH v2 10/16] mm/hugetlbfs: update hugetlbfs to use mmap_prepare Date: Wed, 10 Sep 2025 21:22:05 +0100 Message-ID: X-Mailer: git-send-email 2.51.0 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: GV2PEPF0000756E.SWEP280.PROD.OUTLOOK.COM (2603:10a6:158:401::3f0) 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_|DM4PR10MB6278:EE_ X-MS-Office365-Filtering-Correlation-Id: a2ce813b-16ec-498e-30f3-08ddf0a7d400 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|7416014|376014|366016; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?IOmig95u4+n02wy7liK5g7skucqhUvmnzezd+yOeKPD7zXwk25Jxtwp/SHEj?= =?us-ascii?Q?IHTqEJC8ag4dPpdMhojMQcnLmtqMobWj05JJIxck1lLf5qa946U9jTFzhopa?= =?us-ascii?Q?bRcQLoOnZXDalQ8jS2OraGXEJJJIlLbR/os/GwiAaLgWbkYjQiOIL+tnTvmO?= =?us-ascii?Q?wrqwODv04rlkwnQDemrQUkjtoH9opb6bWbM8JjLcAXkl5RkfICJgqMmSjU7B?= =?us-ascii?Q?wKFLEVGzj2Yk7w6SOA+U2EQmnWhHcZ1NZtPtcBxQcDONToT5Exky37Cdn7Jr?= =?us-ascii?Q?ZoSYnxOQfrSjzcCGQElATSQnhasaZF5IPuWFOA77bs+TeqbkMrOy1TonMb7x?= =?us-ascii?Q?hJr60N2fbmYISj4BtbghfLKmaBfK+CQd5pjJiAEFhgYuoM9UV01AoeN5/E4e?= =?us-ascii?Q?YRfFmpgoLQVs2KGOvFJpuBG/5E5ytlnJrN4aeP1PV6cBTU5naxJiXhMBGmdo?= =?us-ascii?Q?nyWF1CNR37wrNwU+6lSjKS7Nb5wPuXONs+T527vI7VfZ7ocL3JbJ9gLaK29T?= =?us-ascii?Q?t0Cya0IWgwXUbFOpuJuXGSCcAAMZ4oHkC3z571Lwun+Webffl2HzbE5qKAuY?= =?us-ascii?Q?jbLa5TL5Yj+wZ2cEsJlC7RzegqhRChn5fKgD0mWvgQCqvYd1V9ScEjqY1CyV?= =?us-ascii?Q?cfsV9eTWotCiK0ULgqvoyvtd/YlJC2NA/Un4D/QNiVVA1zR3LTa3bxiLLpiS?= =?us-ascii?Q?nolKmDsNNF3rOIR+bHfvxRBx1At8hxD0akFEJyTtR9g01Xp/4CutakUmijEL?= =?us-ascii?Q?5wrPxpZopZdHlAP5T8Cwc6ovCl/2yvPzFY5TAaVCLK7ulpkufzMM3sXLmdZx?= =?us-ascii?Q?pGW7uVC/wp4n2MK8KWxfxpzB8EFW5OwqizY5nddgCp680/Jdg30XoY023Il7?= =?us-ascii?Q?B4n0VubDllBn89SIctnsCFvWrgsDxfZHwi1vLOhJgy4Xx82PhNTswLa7mDrn?= =?us-ascii?Q?fcND2Rtz8OiKDBeALCuG+GiienpQKCvB222zTXQvShMxvJBYooE16m/bwSPT?= =?us-ascii?Q?J0Rw5tLxqupXkH7d4Chj+JRUP1Gnm0+NIOtTaQNU8hpWFxyaTJDgGAOI58S1?= =?us-ascii?Q?eAH3ehlbIBB1YHhCjL1OT/fvHyRABFUpvdnLoHy7WYm01ML6RxPRZZRYDPmv?= =?us-ascii?Q?lwr4th7CGxK+r2Y2j5orNOptV03iiJ8n7TW3SF91ftpt4uiS6eczZQHC2yTR?= =?us-ascii?Q?LxXh0qnLS9H0djACf9RcT/OtQnzYLnxCquH6nmZPITjIx1tCC75V8ZQILg+c?= =?us-ascii?Q?XVagVj4LCgWhJkcoe2fHKL9KjzXETlKGxhIQZe4mcR679eRBXex5UMHOhoOx?= =?us-ascii?Q?78qcl7lvdpofaHmvV6zRMRSuAckCv23u1xa9/MzfnhuuDd3EjsG8KBhDb0tX?= =?us-ascii?Q?tvqzhLC7SdcNTBFUvUv/fjSX1KKsUlRSYc6QJgdVD3ppiBIhICh6fg06IMS2?= =?us-ascii?Q?KWCKm7mj45U=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)(1800799024)(7416014)(376014)(366016);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?xXXrJVxGUANES5RVoKIVKWIKhrto0ZQcafs6lwAC63Ae3W6/xG1SGuYLGg1v?= =?us-ascii?Q?Exe4er4B/bl3VBn4VyrIsLtMlZSmiSZ5Pu/O3I4QUtzSm4fIaJugpONsdm+e?= =?us-ascii?Q?NjY5wUaQUQ/GF9cDWDB8XRVn8fKHErYQAwRn9A+Oi1ZEkQ7M6GIjvTbyxkrX?= =?us-ascii?Q?b4MB4+spO/vv+hmKX4N/KixadhKuBRkW1RTofZ72ftvIqG+toJ3tC6o1WiFG?= =?us-ascii?Q?hxASQDARgb8VWZ9cLRbkwUVbe/16wMjJAAhErQOPCm1i3WdXVc5I4TMYT7Vv?= =?us-ascii?Q?O1dGD0jutyEtCFVi/qHFTFGbJbSXX5y+5BH5PpBaa0oFvvHzBj4R7dhiqUuI?= =?us-ascii?Q?LIA0LYiqxAedRqxwd6k6gbuiMsab0dB04zMNQXKBj4WiKpVSZ/d+doXf5HFd?= =?us-ascii?Q?WR1QTZ2w+ZwnQtYgEi6Hj5oh2tb/HgiyY/6rgXbvxb64hE8QOWYjscqIPnNk?= =?us-ascii?Q?9Wk9KKLn0lM0zWdZMsQw8jZ73Qwnyxxp0AdeCSVVK5QVC5pwB5xeaX9WB6Wl?= =?us-ascii?Q?gAYpxe8rnp/MEyPk6qAc6PwaRHUI9gjjoL35Ebgs/LYQJSMRYHC9nfdjcT4o?= =?us-ascii?Q?9NHWk31SlPUPEjq4Qc/lQpho1tjhTv+f7/A/8wsOwdzIU96oOoUqdwHInjiK?= =?us-ascii?Q?iLs59Pnv2jJvSzLzwKCyO/hS4bb/XR3d26S2rLU7P3rX1B/l6wuOOHKNQeYz?= =?us-ascii?Q?bEm8tjyz21CyItbHK+6dNkvAg1AYKKUEmF68oVxRAccKrYgQOoHisf8sOa/+?= =?us-ascii?Q?C0QPavY2xL0HqsFPyteJmkmLbsVXWVSLbglZ1MVE3nta04KKQM24jH9b7Y7i?= =?us-ascii?Q?uEqaAd1wAOf3Z0gcEnyaGAYO4cpbWCQtAjB4VGu1sAF4g4z6seop+9Y3/AKs?= =?us-ascii?Q?lcArOb4sfwPS/YcELSBAg/tJEOeZGMcg3Fge54f4Rqq/V/6GP48UPYv9/hTh?= =?us-ascii?Q?u2Nl8r51VuT8lHD4x3GRQ9x6sEGpQQhi9qKgTa5DvxhKC824YMn61Xku0Jj6?= =?us-ascii?Q?K84Hg56G0P1h0Ej3HC2RWzbtK8RoT5RE2I4i6/ktXSoJFbYqBmrWb8i/350n?= =?us-ascii?Q?q0GPrgPp+/4vJ4CrK21IiFWj1Yw2Vyfe/Zx2bGHkQdzJSXew5iqgDoQI5+qX?= =?us-ascii?Q?ipTFXDZt5VSDJb50xHonlpJjCVBDu5UEgigq+sHm4YYV2rWR6gQeBZh6STe7?= =?us-ascii?Q?O/Yi4n9S8W2If1hi2P+bMcUGBDIQj7gXbA94y6uykf5VjmA201ll3oKK3LqX?= =?us-ascii?Q?DWxfaOws+TVgK8jyw5+Qv7VgegqnB2sfoBlPJIsT4rWS2UkAD/ea/KtWVVkr?= =?us-ascii?Q?vePhDb0AoTJJxdLm0QeqR9GM4+4PzZhUr6bvfBRO0iEhLyheE3i0nCnp4blq?= =?us-ascii?Q?KDURNh6K4ivFuzGBYy8vPsHgZ+8gjSG4Wli6k+Qo3vuydNiq72sdTiezcL7R?= =?us-ascii?Q?oKl0QH4LrEyQ4DTP4uWtVFk7T667v2as7CxnK7+jr0jsC+VObfyQxZ7+Or5B?= =?us-ascii?Q?KaPtFpbhvF5JvtuKfNfqvCdUUhs3cXUv0nsE49IqTmyKV4kj7oIuNxwrErzy?= =?us-ascii?Q?X8xf57eCaDQjamXt5gU74z3bvORyYBK56Ypl0AcR1bssCdGd4gvfsagxy6y6?= =?us-ascii?Q?bw=3D=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: EPdApATLMAxe2Dsvp0o1QKGIZ/na4DHKGGcVw8syG7UR3Jmnz1GTkGHb9iAeAENmlCo0oihDJyJzyaBrEj5ev/Zr35lrmJMOgWWGxao73TfL96tvvkXXmlRx94GloRoZQJ9rqp5sg3VHxsbflawAq33mrAzCxeAgz8l5Bz51fzpi59E6kJl8StLN/YmkBW0WI8fzItkBKtR8A2cbRokXiNVdNQss58jW/abZu3RPb06X/oyOhVa4OXDBi/9ITHlSP5XlAOs8rtpelCTCMZk3r/FaKIPmi67kcsKwZZfCO3cPYs14F0numhIBmPaqcdLpezj1iPKdTgzcy25e0vpgRKJVRX+f1PkXS75BZTmTHeu9zmxOav5iM28oF1/bRNFJ+y+7wJ/RTqM3/PpLqSuY1Nk7C8N2tEOxliCGAfQwIEnM4xucAHSI2KKLMo+Mju6jksPNa+YKDxAlfKGpYS3qnOXR2XOx0GppQhdi7UsFvT9GTpPeVriUCJynVsPmIycVg85kEm6klxwO5U3AXYd/mtJq3NwL+EJn1zPjs8mToFby+Vs+EpsnT0I/yROMPyxzRKpPmhBPRCYL/G/yr0+mcxW7xDhvNCaymQNgQVgtQF0= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: a2ce813b-16ec-498e-30f3-08ddf0a7d400 X-MS-Exchange-CrossTenant-AuthSource: DM4PR10MB8218.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Sep 2025 20:22:56.4577 (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: m4Tq2x6wt8FkM4yekMPT09hwU9aIuPFI7S0oSwdKFrjXZzdZZUx0ppEWvzNPdmAOXepJfOPqmGDVgSTbYdqtbskzy/J2btxbyA3Tbn/vY60= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM4PR10MB6278 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1117,Hydra:6.1.9,FMLib:17.12.80.40 definitions=2025-09-10_04,2025-09-10_01,2025-03-28_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 spamscore=0 adultscore=0 suspectscore=0 bulkscore=0 mlxscore=0 mlxlogscore=999 phishscore=0 malwarescore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2508110000 definitions=main-2509100190 X-Authority-Analysis: v=2.4 cv=QeRmvtbv c=1 sm=1 tr=0 ts=68c1de3f b=1 cx=c_pps a=qoll8+KPOyaMroiJ2sR5sw==:117 a=qoll8+KPOyaMroiJ2sR5sw==:17 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=z/mQ4Ysz8XfWz/Q5cLBRGdckG28=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=wKuvFiaSGQ0qltdbU6+NXLB8nM8=:19 a=Ol13hO9ccFRV9qXi2t6ftBPywas=:19 a=xqWC_Br6kY4A:10 a=yJojWOMRYYMA:10 a=GoEa3M9JfhUA:10 a=yPCof4ZbAAAA:8 a=i1sCd5a19pX9XIFVDjUA:9 cc=ntf awl=host:12084 X-Proofpoint-ORIG-GUID: xjJQNEBG9pwZzsY30YZBHlpE-mV6C5jX X-Proofpoint-GUID: xjJQNEBG9pwZzsY30YZBHlpE-mV6C5jX X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwOTA4MDE1OCBTYWx0ZWRfX8SxfCygmhOQx ngpBnDLVwCDOr6OlXZETWD7f9A+CWWCrmYSU2l0BJrO/J7ftSVCatqZ1awr9L5zAitsePM2p+83 dv5JME/q2n14RGHyu1ZKEwkd9voKpSUC5xiaQOv40tPRxixuTMaek94i2TKLE7NrEoLl54nm7df QJaJYqpbFBW//PLk4lpHn3tBhDMwPr2L131xKHbZH59DCmEKwFAJfv4NfWHuDwVQpdd0mA/4koR Vxgwj0TvB4Z3asyTrZBItuW7ygLf1bEr7pvJbrE8lR0//YOUFSk4tBG9w2EwKRc7TNVcW7I4hZo JIcm0w5SRn2BMr0AvCks6hZJJAt9hA72wgAGFMmcHjjf92ugSljeLi6S9u7sTjlukiwBjbiQEbJ Xmiv9zT6M0BUA6pymrz2QOGrOV9z0Q== Content-Type: text/plain; charset="utf-8" Since we can now perform actions after the VMA is established via mmap_prepare, use desc->action_success_hook to set up the hugetlb lock once the VMA is setup. We also make changes throughout hugetlbfs to make this possible. Signed-off-by: Lorenzo Stoakes --- fs/hugetlbfs/inode.c | 30 +++++++------ include/linux/hugetlb.h | 9 +++- include/linux/hugetlb_inline.h | 15 ++++--- mm/hugetlb.c | 77 ++++++++++++++++++++-------------- 4 files changed, 79 insertions(+), 52 deletions(-) diff --git a/fs/hugetlbfs/inode.c b/fs/hugetlbfs/inode.c index 3cfdf4091001..026bcc65bb79 100644 --- a/fs/hugetlbfs/inode.c +++ b/fs/hugetlbfs/inode.c @@ -96,8 +96,9 @@ static const struct fs_parameter_spec hugetlb_fs_paramete= rs[] =3D { #define PGOFF_LOFFT_MAX \ (((1UL << (PAGE_SHIFT + 1)) - 1) << (BITS_PER_LONG - (PAGE_SHIFT + 1))) =20 -static int hugetlbfs_file_mmap(struct file *file, struct vm_area_struct *v= ma) +static int hugetlbfs_file_mmap_prepare(struct vm_area_desc *desc) { + struct file *file =3D desc->file; struct inode *inode =3D file_inode(file); loff_t len, vma_len; int ret; @@ -112,8 +113,8 @@ static int hugetlbfs_file_mmap(struct file *file, struc= t vm_area_struct *vma) * way when do_mmap unwinds (may be important on powerpc * and ia64). */ - vm_flags_set(vma, VM_HUGETLB | VM_DONTEXPAND); - vma->vm_ops =3D &hugetlb_vm_ops; + desc->vm_flags |=3D VM_HUGETLB | VM_DONTEXPAND; + desc->vm_ops =3D &hugetlb_vm_ops; =20 /* * page based offset in vm_pgoff could be sufficiently large to @@ -122,16 +123,16 @@ static int hugetlbfs_file_mmap(struct file *file, str= uct vm_area_struct *vma) * sizeof(unsigned long). So, only check in those instances. */ if (sizeof(unsigned long) =3D=3D sizeof(loff_t)) { - if (vma->vm_pgoff & PGOFF_LOFFT_MAX) + if (desc->pgoff & PGOFF_LOFFT_MAX) return -EINVAL; } =20 /* must be huge page aligned */ - if (vma->vm_pgoff & (~huge_page_mask(h) >> PAGE_SHIFT)) + if (desc->pgoff & (~huge_page_mask(h) >> PAGE_SHIFT)) return -EINVAL; =20 - vma_len =3D (loff_t)(vma->vm_end - vma->vm_start); - len =3D vma_len + ((loff_t)vma->vm_pgoff << PAGE_SHIFT); + vma_len =3D (loff_t)vma_desc_size(desc); + len =3D vma_len + ((loff_t)desc->pgoff << PAGE_SHIFT); /* check for overflow */ if (len < vma_len) return -EINVAL; @@ -141,7 +142,7 @@ static int hugetlbfs_file_mmap(struct file *file, struc= t vm_area_struct *vma) =20 ret =3D -ENOMEM; =20 - vm_flags =3D vma->vm_flags; + vm_flags =3D desc->vm_flags; /* * for SHM_HUGETLB, the pages are reserved in the shmget() call so skip * reserving here. Note: only for SHM hugetlbfs file, the inode @@ -151,17 +152,20 @@ static int hugetlbfs_file_mmap(struct file *file, str= uct vm_area_struct *vma) vm_flags |=3D VM_NORESERVE; =20 if (hugetlb_reserve_pages(inode, - vma->vm_pgoff >> huge_page_order(h), - len >> huge_page_shift(h), vma, - vm_flags) < 0) + desc->pgoff >> huge_page_order(h), + len >> huge_page_shift(h), desc, + vm_flags) < 0) goto out; =20 ret =3D 0; - if (vma->vm_flags & VM_WRITE && inode->i_size < len) + if ((desc->vm_flags & VM_WRITE) && inode->i_size < len) i_size_write(inode, len); out: inode_unlock(inode); =20 + /* Allocate the VMA lock after we set it up. */ + if (!ret) + desc->action.success_hook =3D hugetlb_vma_lock_alloc; return ret; } =20 @@ -1219,7 +1223,7 @@ static void init_once(void *foo) =20 static const struct file_operations hugetlbfs_file_operations =3D { .read_iter =3D hugetlbfs_read_iter, - .mmap =3D hugetlbfs_file_mmap, + .mmap_prepare =3D hugetlbfs_file_mmap_prepare, .fsync =3D noop_fsync, .get_unmapped_area =3D hugetlb_get_unmapped_area, .llseek =3D default_llseek, diff --git a/include/linux/hugetlb.h b/include/linux/hugetlb.h index 526d27e88b3b..b39f2b70ccab 100644 --- a/include/linux/hugetlb.h +++ b/include/linux/hugetlb.h @@ -150,8 +150,7 @@ int hugetlb_mfill_atomic_pte(pte_t *dst_pte, struct folio **foliop); #endif /* CONFIG_USERFAULTFD */ long hugetlb_reserve_pages(struct inode *inode, long from, long to, - struct vm_area_struct *vma, - vm_flags_t vm_flags); + struct vm_area_desc *desc, vm_flags_t vm_flags); long hugetlb_unreserve_pages(struct inode *inode, long start, long end, long freed); bool folio_isolate_hugetlb(struct folio *folio, struct list_head *list); @@ -280,6 +279,7 @@ bool is_hugetlb_entry_hwpoisoned(pte_t pte); void hugetlb_unshare_all_pmds(struct vm_area_struct *vma); void fixup_hugetlb_reservations(struct vm_area_struct *vma); void hugetlb_split(struct vm_area_struct *vma, unsigned long addr); +int hugetlb_vma_lock_alloc(struct vm_area_struct *vma); =20 #else /* !CONFIG_HUGETLB_PAGE */ =20 @@ -466,6 +466,11 @@ static inline void fixup_hugetlb_reservations(struct v= m_area_struct *vma) =20 static inline void hugetlb_split(struct vm_area_struct *vma, unsigned long= addr) {} =20 +static inline int hugetlb_vma_lock_alloc(struct vm_area_struct *vma) +{ + return 0; +} + #endif /* !CONFIG_HUGETLB_PAGE */ =20 #ifndef pgd_write diff --git a/include/linux/hugetlb_inline.h b/include/linux/hugetlb_inline.h index 0660a03d37d9..a27aa0162918 100644 --- a/include/linux/hugetlb_inline.h +++ b/include/linux/hugetlb_inline.h @@ -2,22 +2,27 @@ #ifndef _LINUX_HUGETLB_INLINE_H #define _LINUX_HUGETLB_INLINE_H =20 -#ifdef CONFIG_HUGETLB_PAGE - #include =20 -static inline bool is_vm_hugetlb_page(struct vm_area_struct *vma) +#ifdef CONFIG_HUGETLB_PAGE + +static inline bool is_vm_hugetlb_flags(vm_flags_t vm_flags) { - return !!(vma->vm_flags & VM_HUGETLB); + return !!(vm_flags & VM_HUGETLB); } =20 #else =20 -static inline bool is_vm_hugetlb_page(struct vm_area_struct *vma) +static inline bool is_vm_hugetlb_flags(vm_flags_t vm_flags) { return false; } =20 #endif =20 +static inline bool is_vm_hugetlb_page(struct vm_area_struct *vma) +{ + return is_vm_hugetlb_flags(vma->vm_flags); +} + #endif diff --git a/mm/hugetlb.c b/mm/hugetlb.c index d812ad8f0b9f..cb6eda43cb7f 100644 --- a/mm/hugetlb.c +++ b/mm/hugetlb.c @@ -119,7 +119,6 @@ struct mutex *hugetlb_fault_mutex_table __ro_after_init; /* Forward declaration */ static int hugetlb_acct_memory(struct hstate *h, long delta); static void hugetlb_vma_lock_free(struct vm_area_struct *vma); -static void hugetlb_vma_lock_alloc(struct vm_area_struct *vma); static void __hugetlb_vma_unlock_write_free(struct vm_area_struct *vma); static void hugetlb_unshare_pmds(struct vm_area_struct *vma, unsigned long start, unsigned long end, bool take_locks); @@ -417,17 +416,21 @@ static void hugetlb_vma_lock_free(struct vm_area_stru= ct *vma) } } =20 -static void hugetlb_vma_lock_alloc(struct vm_area_struct *vma) +/* + * vma specific semaphore used for pmd sharing and fault/truncation + * synchronization + */ +int hugetlb_vma_lock_alloc(struct vm_area_struct *vma) { struct hugetlb_vma_lock *vma_lock; =20 /* Only establish in (flags) sharable vmas */ if (!vma || !(vma->vm_flags & VM_MAYSHARE)) - return; + return 0; =20 /* Should never get here with non-NULL vm_private_data */ if (vma->vm_private_data) - return; + return -EINVAL; =20 vma_lock =3D kmalloc(sizeof(*vma_lock), GFP_KERNEL); if (!vma_lock) { @@ -442,13 +445,15 @@ static void hugetlb_vma_lock_alloc(struct vm_area_str= uct *vma) * allocation failure. */ pr_warn_once("HugeTLB: unable to allocate vma specific lock\n"); - return; + return -EINVAL; } =20 kref_init(&vma_lock->refs); init_rwsem(&vma_lock->rw_sema); vma_lock->vma =3D vma; vma->vm_private_data =3D vma_lock; + + return 0; } =20 /* Helper that removes a struct file_region from the resv_map cache and re= turns @@ -1180,20 +1185,28 @@ static struct resv_map *vma_resv_map(struct vm_area= _struct *vma) } } =20 -static void set_vma_resv_map(struct vm_area_struct *vma, struct resv_map *= map) +static void set_vma_resv_flags(struct vm_area_struct *vma, unsigned long f= lags) { - VM_BUG_ON_VMA(!is_vm_hugetlb_page(vma), vma); - VM_BUG_ON_VMA(vma->vm_flags & VM_MAYSHARE, vma); + VM_WARN_ON_ONCE_VMA(!is_vm_hugetlb_page(vma), vma); + VM_WARN_ON_ONCE_VMA(vma->vm_flags & VM_MAYSHARE, vma); =20 - set_vma_private_data(vma, (unsigned long)map); + set_vma_private_data(vma, get_vma_private_data(vma) | flags); } =20 -static void set_vma_resv_flags(struct vm_area_struct *vma, unsigned long f= lags) +static void set_vma_desc_resv_map(struct vm_area_desc *desc, struct resv_m= ap *map) { - VM_BUG_ON_VMA(!is_vm_hugetlb_page(vma), vma); - VM_BUG_ON_VMA(vma->vm_flags & VM_MAYSHARE, vma); + VM_WARN_ON_ONCE(!is_vm_hugetlb_flags(desc->vm_flags)); + VM_WARN_ON_ONCE(desc->vm_flags & VM_MAYSHARE); =20 - set_vma_private_data(vma, get_vma_private_data(vma) | flags); + desc->private_data =3D map; +} + +static void set_vma_desc_resv_flags(struct vm_area_desc *desc, unsigned lo= ng flags) +{ + VM_WARN_ON_ONCE(!is_vm_hugetlb_flags(desc->vm_flags)); + VM_WARN_ON_ONCE(desc->vm_flags & VM_MAYSHARE); + + desc->private_data =3D (void *)((unsigned long)desc->private_data | flags= ); } =20 static int is_vma_resv_set(struct vm_area_struct *vma, unsigned long flag) @@ -1203,6 +1216,13 @@ static int is_vma_resv_set(struct vm_area_struct *vm= a, unsigned long flag) return (get_vma_private_data(vma) & flag) !=3D 0; } =20 +static bool is_vma_desc_resv_set(struct vm_area_desc *desc, unsigned long = flag) +{ + VM_WARN_ON_ONCE(!is_vm_hugetlb_flags(desc->vm_flags)); + + return ((unsigned long)desc->private_data) & flag; +} + bool __vma_private_lock(struct vm_area_struct *vma) { return !(vma->vm_flags & VM_MAYSHARE) && @@ -7225,9 +7245,9 @@ long hugetlb_change_protection(struct vm_area_struct = *vma, */ =20 long hugetlb_reserve_pages(struct inode *inode, - long from, long to, - struct vm_area_struct *vma, - vm_flags_t vm_flags) + long from, long to, + struct vm_area_desc *desc, + vm_flags_t vm_flags) { long chg =3D -1, add =3D -1, spool_resv, gbl_resv; struct hstate *h =3D hstate_inode(inode); @@ -7242,12 +7262,6 @@ long hugetlb_reserve_pages(struct inode *inode, return -EINVAL; } =20 - /* - * vma specific semaphore used for pmd sharing and fault/truncation - * synchronization - */ - hugetlb_vma_lock_alloc(vma); - /* * Only apply hugepage reservation if asked. At fault time, an * attempt will be made for VM_NORESERVE to allocate a page @@ -7260,9 +7274,9 @@ long hugetlb_reserve_pages(struct inode *inode, * Shared mappings base their reservation on the number of pages that * are already allocated on behalf of the file. Private mappings need * to reserve the full area even if read-only as mprotect() may be - * called to make the mapping read-write. Assume !vma is a shm mapping + * called to make the mapping read-write. Assume !desc is a shm mapping */ - if (!vma || vma->vm_flags & VM_MAYSHARE) { + if (!desc || desc->vm_flags & VM_MAYSHARE) { /* * resv_map can not be NULL as hugetlb_reserve_pages is only * called for inodes for which resv_maps were created (see @@ -7279,8 +7293,8 @@ long hugetlb_reserve_pages(struct inode *inode, =20 chg =3D to - from; =20 - set_vma_resv_map(vma, resv_map); - set_vma_resv_flags(vma, HPAGE_RESV_OWNER); + set_vma_desc_resv_map(desc, resv_map); + set_vma_desc_resv_flags(desc, HPAGE_RESV_OWNER); } =20 if (chg < 0) @@ -7290,7 +7304,7 @@ long hugetlb_reserve_pages(struct inode *inode, chg * pages_per_huge_page(h), &h_cg) < 0) goto out_err; =20 - if (vma && !(vma->vm_flags & VM_MAYSHARE) && h_cg) { + if (desc && !(desc->vm_flags & VM_MAYSHARE) && h_cg) { /* For private mappings, the hugetlb_cgroup uncharge info hangs * of the resv_map. */ @@ -7324,7 +7338,7 @@ long hugetlb_reserve_pages(struct inode *inode, * consumed reservations are stored in the map. Hence, nothing * else has to be done for private mappings here */ - if (!vma || vma->vm_flags & VM_MAYSHARE) { + if (!desc || desc->vm_flags & VM_MAYSHARE) { add =3D region_add(resv_map, from, to, regions_needed, h, h_cg); =20 if (unlikely(add < 0)) { @@ -7378,16 +7392,15 @@ long hugetlb_reserve_pages(struct inode *inode, hugetlb_cgroup_uncharge_cgroup_rsvd(hstate_index(h), chg * pages_per_huge_page(h), h_cg); out_err: - hugetlb_vma_lock_free(vma); - if (!vma || vma->vm_flags & VM_MAYSHARE) + if (!desc || desc->vm_flags & VM_MAYSHARE) /* Only call region_abort if the region_chg succeeded but the * region_add failed or didn't run. */ if (chg >=3D 0 && add < 0) region_abort(resv_map, from, to, regions_needed); - if (vma && is_vma_resv_set(vma, HPAGE_RESV_OWNER)) { + if (desc && is_vma_desc_resv_set(desc, HPAGE_RESV_OWNER)) { kref_put(&resv_map->refs, resv_map_release); - set_vma_resv_map(vma, NULL); + set_vma_desc_resv_map(desc, NULL); } return chg < 0 ? chg : add < 0 ? add : -EINVAL; } --=20 2.51.0 From nobody Thu Oct 2 21:39:18 2025 Received: from mx0b-00069f02.pphosted.com (mx0b-00069f02.pphosted.com [205.220.177.32]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 0100C2FA0C4; Wed, 10 Sep 2025 20:24:05 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=205.220.177.32 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757535847; cv=fail; b=JOsIUBqW0M++CGTI9e1oB4jE7wZCOLDYKWgD+jAYgSUL5AvCMNEc0qylNQPcM/boVrIhvtGBHsKXGYJz0gqRO+i5JFTQ2YIdbsxNSKgFBkfDK71/t50rP8ba5y2u3Ly9mHwz0zHGrB4e0elAvTWr8R+ig0DbBJ2dfd6mgbz8CcU= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757535847; c=relaxed/simple; bh=GRHEYwakitjJgzJu+H/ALci+LZifoQ/RCY0ZhWlEM7k=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=uG5LEY6FnhlyazhfEnm8qC7Bs+xozZOaS8MzkNc2PqnY6PE64GqSrtDPz+rX3zz1h79AaZQrz+j+Oy7UGSrfUqWN2X1IE3P2I7J+xipnnEJ1ucFc/sIzJYDO9pXSHW5NYFbJdPW+x1PR50BNQHQ3wsSSRtAJ/zBLXC4os6a9QI0= 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=Ck/DZ8rf; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=G2civP9x; arc=fail smtp.client-ip=205.220.177.32 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oracle.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oracle.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=oracle.com header.i=@oracle.com header.b="Ck/DZ8rf"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="G2civP9x" Received: from pps.filterd (m0246632.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 58AGfnXt009945; Wed, 10 Sep 2025 20:23:28 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=cc :content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s= corp-2025-04-25; bh=kUN6SM1+aVR2lrCuz2N5zRg3kub0zNJvVFxoF7l1Cqs=; b= Ck/DZ8rfLkupKCj/ykSMv6aINpA0puZeTyeERAhNB/YE/SujTqvqTU1RIyAylEtV BbwhIMkSOAcVaA5LUCBs3eKB/beasW5LzZEXb66k7GI4J8PgpPuq+00K7EkRp6Dv zoTFC83fYzHTrN409EAwPLrcZjhkhs0EGrCEKTZR8a9q07agntiaqzCOgkqO8R0y f4GHtYDVPn/kIOuIMjReh6uxZwPs38z9MJsfquxKcmkrBbA1W37T0zq5t43li0XV A+Pk4y4usDd7kFVBvSzt4RGmInEkSop46W2LBX0HDO+aNr1lFSq3UeSH3vd3koPr 71JzgcKmb0r5c0CWRo3NzQ== Received: from iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta03.appoci.oracle.com [130.35.103.27]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 4922shvv3d-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 10 Sep 2025 20:23:27 +0000 (GMT) Received: from pps.filterd (iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (8.18.1.2/8.18.1.2) with ESMTP id 58AIW1Jk002913; Wed, 10 Sep 2025 20:23:27 GMT Received: from ph7pr06cu001.outbound.protection.outlook.com (mail-westus3azon11010007.outbound.protection.outlook.com [52.101.201.7]) by iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 490bdj1ca0-2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 10 Sep 2025 20:23:26 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=Ssi+Xhf1Kn9EAyTFfnQaZjjiN46oQmZuD3kru1lYHtz8MP2Mv0zWhk19VeIdAUWxLdSq6l8KNPcSNAfWipW03PKHSLEbOQJA0UE8+D5sy8oERGm3w2MIuOFAOq2mBTiuPTifjeb7TvvLXKtwoP1N0fT/UM2BEtKiq7YwN/b10mmCyk6PncdzouaW0acNR0ucTu6GBkw8Zvo4YHmnbtF4HZiogOP+8fq8dvLJLbcMTkaK1nepiiY2fj3DL3wYw9kVcHfFdyP8RyQhxWw2P68q4oasdGg8R0pqGTLB/WKciy92J1tcHui+n5Ll54nDpoOFeHTyR085CjTLeCmXyxFMYQ== 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=kUN6SM1+aVR2lrCuz2N5zRg3kub0zNJvVFxoF7l1Cqs=; b=n/ktFzy05Ng6Ijn09+RXKL6CY97/RQxqfLNi+BuBVdk3Uqx5IhCArX0scTy/ohkaITrqClc7qdCGfDkgAv+ZDakDdSKAPUR1qDrZDrfqx05Z8zV+WgaJiMvqfdF1gZwtRuWQiy92CldLH0IRsV0d6kncASXyOr8o4mhVk/iPpW3H8pdE0BO8Pfl3uGD4U/bnsVTo6lK9xrDL6Og4wCt6XLt9NFbKMiFA0jkGawiLfR47ubM7SqMIynMJ/T0YBa79+rq9K1zy1da4uKvQTHQ8AZWPhHkyRd3kjKJZ+TUYWnA0J9sJET/yvCh/9HvEf7R0UqX9m8xq2lHMSKWaRla+sA== 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=kUN6SM1+aVR2lrCuz2N5zRg3kub0zNJvVFxoF7l1Cqs=; b=G2civP9xJX0s9O24fPYitngv3hXqx7Cn1KKPEns+CceebuGjMYQrtlr2ft8ZWs4Avbz65iaL15gDV1J04k0fURzBTVIm/d3RttlKF3QHhMdNBElqR9QSSgvMesr4Vdzn8qekzYQbgqd5PoJ6NN2Qf+v2LbGQzGlx3qSdLr5XCNI= Received: from DM4PR10MB8218.namprd10.prod.outlook.com (2603:10b6:8:1cc::16) by DM4PR10MB6278.namprd10.prod.outlook.com (2603:10b6:8:b8::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9094.22; Wed, 10 Sep 2025 20:22:59 +0000 Received: from DM4PR10MB8218.namprd10.prod.outlook.com ([fe80::2650:55cf:2816:5f2]) by DM4PR10MB8218.namprd10.prod.outlook.com ([fe80::2650:55cf:2816:5f2%5]) with mapi id 15.20.9094.021; Wed, 10 Sep 2025 20:22:59 +0000 From: Lorenzo Stoakes To: Andrew Morton Cc: Jonathan Corbet , Matthew Wilcox , Guo Ren , Thomas Bogendoerfer , Heiko Carstens , Vasily Gorbik , Alexander Gordeev , Christian Borntraeger , Sven Schnelle , "David S . Miller" , Andreas Larsson , Arnd Bergmann , Greg Kroah-Hartman , Dan Williams , Vishal Verma , Dave Jiang , Nicolas Pitre , Muchun Song , Oscar Salvador , David Hildenbrand , Konstantin Komarov , Baoquan He , Vivek Goyal , Dave Young , Tony Luck , Reinette Chatre , Dave Martin , James Morse , Alexander Viro , Christian Brauner , Jan Kara , "Liam R . Howlett" , Vlastimil Babka , Mike Rapoport , Suren Baghdasaryan , Michal Hocko , Hugh Dickins , Baolin Wang , Uladzislau Rezki , Dmitry Vyukov , Andrey Konovalov , Jann Horn , Pedro Falcato , linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org, linux-fsdevel@vger.kernel.org, linux-csky@vger.kernel.org, linux-mips@vger.kernel.org, linux-s390@vger.kernel.org, sparclinux@vger.kernel.org, nvdimm@lists.linux.dev, linux-cxl@vger.kernel.org, linux-mm@kvack.org, ntfs3@lists.linux.dev, kexec@lists.infradead.org, kasan-dev@googlegroups.com, Jason Gunthorpe Subject: [PATCH v2 11/16] mm: update mem char driver to use mmap_prepare Date: Wed, 10 Sep 2025 21:22:06 +0100 Message-ID: X-Mailer: git-send-email 2.51.0 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: GVX0EPF0001A057.SWEP280.PROD.OUTLOOK.COM (2603:10a6:158:401::48d) 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_|DM4PR10MB6278:EE_ X-MS-Office365-Filtering-Correlation-Id: 01d58a13-8b4f-4a51-b319-08ddf0a7d5d9 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|7416014|376014|366016; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?zW+DEGvAn6Fmem4nzFSRteeoT9X2IJ9MDCTqU1trL1GA8ipqAgCKx9WhjdR2?= =?us-ascii?Q?QYDWs5Ne9IJjJCgmSuKi01Wp8hCbi0HcCjaKyaLT0jDxjyl5ArFmhjBz0zgA?= =?us-ascii?Q?hHt2450lXg18WL46bfdSxJnRorZ2W0e6G3QP0uzH0+qtUrFDGs7SU9epufx4?= =?us-ascii?Q?wLyWpO9DtrM6M8eqJhsruCqYODfE65jUkThrzheT+sP/prW4yw8Czt5djwns?= =?us-ascii?Q?hEMTiIy7vgVgCsaUoQeb61+MzARbVCFNiSvw+TCMg653mGAI5kYIOU2Zqsqo?= =?us-ascii?Q?NB9+topJDO0CjH7rIUw8P+5FX/8o1MLV4FbrDmyYuEy42Iy5qA4Ucyk3geN7?= =?us-ascii?Q?p4qY3J3j1O0jqach3QPG+nm7F3SR/6sk7OwM4JmgRc6Te/xPgYM/Y+TwkY4n?= =?us-ascii?Q?0PwCcAwlLWcfZVSD1kJr2/DG+ZtPqAVTXBUPfjulQ4X6Yb3Pzh1oZMJ/eShx?= =?us-ascii?Q?sLg/SpFKmZi5k5G0P4LPjQLaSQG78W9vl6F+2xN53/GI1fCdl8z+AyO7uJIF?= =?us-ascii?Q?bONG7Q04CNOa/FVuGEb/HT8vitdyoQSQS8uTvU2cH4iYzgAK5gINHBAssGvE?= =?us-ascii?Q?SL6LG0mSPHeFM+2LnQOGBHK4o4tZu4dQlwEli1m65TxvUDcIVkDrYH01EzKy?= =?us-ascii?Q?KMkfg/AHJHGT/xhp+ZA0eHJuHnCIA3DCfigMhZukeL6y/oRyEz37hZoLJJH1?= =?us-ascii?Q?RB6M7iLm4RjnBKun5KZWaQOUc4nSIfXzYRTiqxRdcrVvRTYb+oQIh0Wwcnx3?= =?us-ascii?Q?GIM1rBa6a/F9mm2ta8HFBWfclWHunPGUcmb3UxDOYirh4dhYu+Rix5xo+vED?= =?us-ascii?Q?oC5qSQDyS1sDEze50b0q5732HRpIH4u3497cH0A2OF8nGhSEzUhEStdobq4P?= =?us-ascii?Q?gxfig+8Y99ztRyIGtZ/pnzJaB3iaJhDPsrhvKO1Y1FE7gDMwSDZ5BLoz1GVX?= =?us-ascii?Q?Ih5YciAAosz4IEzVxwmiWmlfu1XYkvsBWdi6kIoG11+C3uevFUgWGgf5Frjd?= =?us-ascii?Q?pE3WxfZ6/0fs7WKLmd5mXjhmOFondOtmr5e3sHAP446UJuhGdSGNWMM+h7sg?= =?us-ascii?Q?HQcBwXeRkERHU+lHtbjO2W/sMNH2WVSvfy49d8rCfMW5ZT8Ed3K4X4XIRy8y?= =?us-ascii?Q?h6Fh3wUh7MNmwnnse/RiZdFFryWGATom1TJRjoqZfVX3BRVc+q+RmULNghB/?= =?us-ascii?Q?S6+8xM6FAqNoBo18ujvhsuI0GDrWJoR2Uz5pqYNvNK26k9ePnYQidyVp4W9o?= =?us-ascii?Q?LX/hH4Z22BFvbzoF349ESdqxZ7egUA6zqhjQIf/ZIoJeGXmTJT+7zibWG4BD?= =?us-ascii?Q?BVKam5ZOvpMKDwNJg/FbZ6TAy4eEEJJ5moDXZUJWXl4GGwGPtcpUS8hUMhBs?= =?us-ascii?Q?nlIqfAbYcGIPTlukzFVsaZHZudF4u0Z5fNGwnlk80emEZ7BuhnT3IbNW95Cd?= =?us-ascii?Q?wXMCByvkNR8=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)(1800799024)(7416014)(376014)(366016);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?VRgrxbAmbDa7rzqCY4gtEGCJ8wb8FWL0zyUaz1Tv/sgG2cG5APjbR61Ur65g?= =?us-ascii?Q?inM0iyWt2duM3vJC58ivpdgPvhtzenPlM1nECFInmqD6wr/pGPU/gjl/WrK5?= =?us-ascii?Q?qGlsPv9SRSTbk+/DUDl2TCcvkispaLcdq3PIZOnQOL1YuEY4sgVU2yEgXTsU?= =?us-ascii?Q?jnL4yeHXP3lkIQZp3Bd1fZaRgQ+7nLsdUFcEytstZFY9na7HNAImfRTdKlXi?= =?us-ascii?Q?6wz/8RApUiZQOXRX3UCMkwPmkqdNPK6FKrSa9mZ6/DoopQ60xQSeA8muslDe?= =?us-ascii?Q?JuRoRrXROCWl2mYmo7QCApKxPLzyIICSxey97jvwshTSjRm6x7v8YSl/qhwg?= =?us-ascii?Q?MbtjEkgYRYcY1esTx6b0Rsnfupb65arVsurregePItL6UcxZINBPtYaoQE+R?= =?us-ascii?Q?R3aUwa7sHrxNbfMeO7Ta0PJFp58Z8Mqd4bgcVe7uJDS9Mluf73Q+OT671vPi?= =?us-ascii?Q?qiX89QB8F0a81WUKkpIezkJRjHMYFoM2KeOd2kHeLBWkC45m0CgdhkTmGKN4?= =?us-ascii?Q?PQ1MAPhxX1VAiQvomJfXd53tayefznc9zD2N1Oq2Ahpt7LtpvNNRjFVUpOfz?= =?us-ascii?Q?0/HOd4g0vTlQs1ZfUu79lYXuxe0N7fT5e5IoHKKj/Q0W7cf1OGZQdEuKe+R2?= =?us-ascii?Q?Dqjsshz0Bpu0ihbunPlVVBH+dDNJAtC44iW9uvhaIPjVsGjddwYNsJrRyhqT?= =?us-ascii?Q?BFuZviiUARbVpN0y+DvcuLcgDrLpX6C93lQw8Vo4aI3QuyTJWjw0O9osML9r?= =?us-ascii?Q?CHpVkUGD3bp0alD1OP9sbdDFq9cAIrbuzkyGtak7hAxAN9fTBj51pXQTMtnq?= =?us-ascii?Q?54tiCYQaOkdPA6SB160K72S1flFS25BWk010NtMdNRYRmsVG1qXGrBFA9GHs?= =?us-ascii?Q?3I9igDtE1U/qClVt60ou8a2H1MWyespIrDo6BXEh1cE5F8JfzHLFv850bjlc?= =?us-ascii?Q?+tx/sveEp8ed4HitU+VeQpxIWOC5N7XFGH7fSUcBBZzdGRskrzFDzcB7/08Y?= =?us-ascii?Q?Vu33w/f1edxca/oVmE+6qQkEwsiJmsUuv0uXA0GQPLkM1nz7LrZN7Z6pVnsB?= =?us-ascii?Q?E7yHSB2rjZJpqYznnhs2mugiGNa0p55PP0ih0SDb/1v8FOdK8F5SRmMU9xyN?= =?us-ascii?Q?qphnD1MH03XJT81T93S4cI8sdqBln6FDE7wRSYyE5oe4JJe2PD+qhSdrQhSb?= =?us-ascii?Q?2cTNjST9Yu96NW5ZBZvJjDbGV4jAlDysmDNkhmwkXXIJIkJSVyM3IIU8ia/s?= =?us-ascii?Q?mZtyE4UfMXrI5nv0U7kK91e2NEKAJs+m1/sekMv/z97n+QbHbi1yQ50PJb6C?= =?us-ascii?Q?a3ywDNwvBaHIPa33pR7RgbZHL2tWGbdwdSFoA34dGo7Dsa6kNzQao9avFbzs?= =?us-ascii?Q?CWn+ccTxxXp0p2sVMYn8MI2bgtW+3IB7v2RC53/USH4LunSI7fhJc4yStoAt?= =?us-ascii?Q?+xvhL4AXmzn3Ww9ZNL+rtYGpqPaTIj/izAl7Eme+LmFunXEKjwxxVw6ss+nD?= =?us-ascii?Q?e9jhV4AI0c4rZiJ9LwHAfEAO6LJzyK2B6I/yfU10OG9NJ0TzGkr4mrpVzNFx?= =?us-ascii?Q?4Gpz3eXcx4JKlgYpkwZyROGB+OmpAfFz5NSaEqFxx7NkzwRv7SkWx0POevHK?= =?us-ascii?Q?Dw=3D=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: 6COe4595yN09cIjaBDrEatoIjnwPOhwmQQA4j8G7QVKDzdojagXFLKU0rz+XZMxVnK1xSvZqR4KTaAdEIO7nCg9WXB3F66DpF/AEomjc3PTGm7vLaDXSVWHDRPliD8f68m8dPrNgVLL9mI8GLN6FbzRKebpyVKXRG4Og9/VRwWvqzDDt18Yd24p6eOwQ+wm3v/1yuxL7Ws3B2UnhK/m87eiWSMTU5B7gBcizYujdVqSx6Z9R+QocpZnKspV7fMusIIs2qG6etadcAx1VPu8qlWvBkpyQlTmsHCjx3pKY1EZPZeMHbCS3LlopFnRhVvpkHkiXucFJLBQmcY1LBp52TCBwgsnQnhYkWrp+umeJlB91ueBeufhwe9O3qOTcuO5dLz5Zbg+t8ABiF5eaERqDy6NoHUm+43Kht+Btq825WIU9e1T//o602kcibQglIeUW+4jfUv5rrF+PmsDwa6MRBUX9UMvx8dxn4Rz6eOCfBc+OwLxBG/tBq2SmQwEwvQne+bzS8SjtCZQdaMOC+bWZfxpCwDjCXjIvpngiaUD4qIEkA0/fivKe0iUkAuigUI5mvdkl8bFZ+i0BPBrfDsmZ0VkoyFs7qOvdQBiFcl+smh0= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 01d58a13-8b4f-4a51-b319-08ddf0a7d5d9 X-MS-Exchange-CrossTenant-AuthSource: DM4PR10MB8218.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Sep 2025 20:22:59.6325 (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: Y/58K/cScUVjZE22zANKFJFLlUKOpYwl31WTeJ2p3D0qUUy/0T21VKA6aTPwnMsgzwg/zmM7yJF6eK+EPtnUYo5gmHalYgXfhpIqUJEf+ss= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM4PR10MB6278 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1117,Hydra:6.1.9,FMLib:17.12.80.40 definitions=2025-09-10_04,2025-09-10_01,2025-03-28_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 spamscore=0 adultscore=0 suspectscore=0 bulkscore=0 mlxscore=0 mlxlogscore=999 phishscore=0 malwarescore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2508110000 definitions=main-2509100190 X-Authority-Analysis: v=2.4 cv=esTfzppX c=1 sm=1 tr=0 ts=68c1de3f b=1 cx=c_pps a=qoll8+KPOyaMroiJ2sR5sw==:117 a=qoll8+KPOyaMroiJ2sR5sw==:17 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=z/mQ4Ysz8XfWz/Q5cLBRGdckG28=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=wKuvFiaSGQ0qltdbU6+NXLB8nM8=:19 a=Ol13hO9ccFRV9qXi2t6ftBPywas=:19 a=xqWC_Br6kY4A:10 a=yJojWOMRYYMA:10 a=GoEa3M9JfhUA:10 a=yPCof4ZbAAAA:8 a=7X8Cq549UNVAXTOeWE0A:9 cc=ntf awl=host:12084 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwOTA4MDE2NSBTYWx0ZWRfX4f4809Ol13GY TXERyQe+EglL3m+GZXuQp4n1NkbjULUQ3zUlhlec30SPFfDYd7BJjdkf4Muz4tLb21+/4vKI32Z 82vDe5uofEn3XuMey1hwqbkY4OO16XZDAgo+QMuqh0b/MiJc5sKbTLzPceUQ+a7/6SjY2+qEb9i 5NvrLAR//zggJoZ7wYezqSgXKagcrsLRCAC6dWTujKIw6xtxvkz8Kgxl6Pfl097G5Z8vR2jgkSQ s2y40mC3U8l7cONTLm5BIOINduxGVIRJGpYCKy/qz2K0o9ckvF00AcWCZW7a4CZ2iuBgEQSZfFz vwd1s0Y14bZFuVC/R7X49oCl8LOuYDF6AsLz5A08BKIgf9deiX9DydDDAite2nlf6EQp3BB7GcT S98FjXDetAdeGJzdCWAWGobGbPqg9w== X-Proofpoint-GUID: iaDZA6z4fDm08eYffFl0RwXPwWn8G1K6 X-Proofpoint-ORIG-GUID: iaDZA6z4fDm08eYffFl0RwXPwWn8G1K6 Content-Type: text/plain; charset="utf-8" Update the mem char driver (backing /dev/mem and /dev/zero) to use f_op->mmap_prepare hook rather than the deprecated f_op->mmap. The /dev/zero implementation has a very unique and rather concerning characteristic in that it converts MAP_PRIVATE mmap() mappings anonymous when they are, in fact, not. The new f_op->mmap_prepare() can support this, but rather than introducing a helper function to perform this hack (and risk introducing other users), simply set desc->vm_op to NULL here and add a comment describing what's going on. We also introduce shmem_zero_setup_desc() to allow for the shared mapping case via an f_op->mmap_prepare() hook, and generalise the code between this and shmem_zero_setup(). We also use the desc->action_error_hook to filter the remap error to -EAGAIN to keep behaviour consistent. Signed-off-by: Lorenzo Stoakes --- drivers/char/mem.c | 75 ++++++++++++++++++++++------------------ include/linux/shmem_fs.h | 3 +- mm/shmem.c | 40 ++++++++++++++++----- 3 files changed, 76 insertions(+), 42 deletions(-) diff --git a/drivers/char/mem.c b/drivers/char/mem.c index 34b815901b20..23194788ee41 100644 --- a/drivers/char/mem.c +++ b/drivers/char/mem.c @@ -304,13 +304,13 @@ static unsigned zero_mmap_capabilities(struct file *f= ile) } =20 /* can't do an in-place private mapping if there's no MMU */ -static inline int private_mapping_ok(struct vm_area_struct *vma) +static inline int private_mapping_ok(struct vm_area_desc *desc) { - return is_nommu_shared_mapping(vma->vm_flags); + return is_nommu_shared_mapping(desc->vm_flags); } #else =20 -static inline int private_mapping_ok(struct vm_area_struct *vma) +static inline int private_mapping_ok(struct vm_area_desc *desc) { return 1; } @@ -322,46 +322,50 @@ static const struct vm_operations_struct mmap_mem_ops= =3D { #endif }; =20 -static int mmap_mem(struct file *file, struct vm_area_struct *vma) +static int mmap_filter_error(int err) { - size_t size =3D vma->vm_end - vma->vm_start; - phys_addr_t offset =3D (phys_addr_t)vma->vm_pgoff << PAGE_SHIFT; + return -EAGAIN; +} + +static int mmap_mem_prepare(struct vm_area_desc *desc) +{ + struct file *file =3D desc->file; + const size_t size =3D vma_desc_size(desc); + const phys_addr_t offset =3D (phys_addr_t)desc->pgoff << PAGE_SHIFT; =20 /* Does it even fit in phys_addr_t? */ - if (offset >> PAGE_SHIFT !=3D vma->vm_pgoff) + if (offset >> PAGE_SHIFT !=3D desc->pgoff) return -EINVAL; =20 /* It's illegal to wrap around the end of the physical address space. */ if (offset + (phys_addr_t)size - 1 < offset) return -EINVAL; =20 - if (!valid_mmap_phys_addr_range(vma->vm_pgoff, size)) + if (!valid_mmap_phys_addr_range(desc->pgoff, size)) return -EINVAL; =20 - if (!private_mapping_ok(vma)) + if (!private_mapping_ok(desc)) return -ENOSYS; =20 - if (!range_is_allowed(vma->vm_pgoff, size)) + if (!range_is_allowed(desc->pgoff, size)) return -EPERM; =20 - if (!phys_mem_access_prot_allowed(file, vma->vm_pgoff, size, - &vma->vm_page_prot)) + if (!phys_mem_access_prot_allowed(file, desc->pgoff, size, + &desc->page_prot)) return -EINVAL; =20 - vma->vm_page_prot =3D phys_mem_access_prot(file, vma->vm_pgoff, - size, - vma->vm_page_prot); + desc->page_prot =3D phys_mem_access_prot(file, desc->pgoff, + size, + desc->page_prot); =20 - vma->vm_ops =3D &mmap_mem_ops; + desc->vm_ops =3D &mmap_mem_ops; =20 /* Remap-pfn-range will mark the range VM_IO */ - if (remap_pfn_range(vma, - vma->vm_start, - vma->vm_pgoff, - size, - vma->vm_page_prot)) { - return -EAGAIN; - } + mmap_action_remap(&desc->action, desc->start, desc->pgoff, size, + desc->page_prot); + /* We filter remap errors to -EAGAIN. */ + desc->action.error_hook =3D mmap_filter_error; + return 0; } =20 @@ -501,14 +505,18 @@ static ssize_t read_zero(struct file *file, char __us= er *buf, return cleared; } =20 -static int mmap_zero(struct file *file, struct vm_area_struct *vma) +static int mmap_prepare_zero(struct vm_area_desc *desc) { #ifndef CONFIG_MMU return -ENOSYS; #endif - if (vma->vm_flags & VM_SHARED) - return shmem_zero_setup(vma); - vma_set_anonymous(vma); + if (desc->vm_flags & VM_SHARED) + return shmem_zero_setup_desc(desc); + /* + * This is a highly unique situation where we mark a MAP_PRIVATE mapping + *of /dev/zero anonymous, despite it not being. + */ + desc->vm_ops =3D NULL; return 0; } =20 @@ -526,10 +534,11 @@ static unsigned long get_unmapped_area_zero(struct fi= le *file, { if (flags & MAP_SHARED) { /* - * mmap_zero() will call shmem_zero_setup() to create a file, - * so use shmem's get_unmapped_area in case it can be huge; - * and pass NULL for file as in mmap.c's get_unmapped_area(), - * so as not to confuse shmem with our handle on "/dev/zero". + * mmap_prepare_zero() will call shmem_zero_setup() to create a + * file, so use shmem's get_unmapped_area in case it can be + * huge; and pass NULL for file as in mmap.c's + * get_unmapped_area(), so as not to confuse shmem with our + * handle on "/dev/zero". */ return shmem_get_unmapped_area(NULL, addr, len, pgoff, flags); } @@ -632,7 +641,7 @@ static const struct file_operations __maybe_unused mem_= fops =3D { .llseek =3D memory_lseek, .read =3D read_mem, .write =3D write_mem, - .mmap =3D mmap_mem, + .mmap_prepare =3D mmap_mem_prepare, .open =3D open_mem, #ifndef CONFIG_MMU .get_unmapped_area =3D get_unmapped_area_mem, @@ -668,7 +677,7 @@ static const struct file_operations zero_fops =3D { .write_iter =3D write_iter_zero, .splice_read =3D copy_splice_read, .splice_write =3D splice_write_zero, - .mmap =3D mmap_zero, + .mmap_prepare =3D mmap_prepare_zero, .get_unmapped_area =3D get_unmapped_area_zero, #ifndef CONFIG_MMU .mmap_capabilities =3D zero_mmap_capabilities, diff --git a/include/linux/shmem_fs.h b/include/linux/shmem_fs.h index 0e47465ef0fd..5b368f9549d6 100644 --- a/include/linux/shmem_fs.h +++ b/include/linux/shmem_fs.h @@ -94,7 +94,8 @@ extern struct file *shmem_kernel_file_setup(const char *n= ame, loff_t size, unsigned long flags); extern struct file *shmem_file_setup_with_mnt(struct vfsmount *mnt, const char *name, loff_t size, unsigned long flags); -extern int shmem_zero_setup(struct vm_area_struct *); +int shmem_zero_setup(struct vm_area_struct *vma); +int shmem_zero_setup_desc(struct vm_area_desc *desc); extern unsigned long shmem_get_unmapped_area(struct file *, unsigned long = addr, unsigned long len, unsigned long pgoff, unsigned long flags); extern int shmem_lock(struct file *file, int lock, struct ucounts *ucounts= ); diff --git a/mm/shmem.c b/mm/shmem.c index 990e33c6a776..cb6ff00eb4cb 100644 --- a/mm/shmem.c +++ b/mm/shmem.c @@ -5893,14 +5893,9 @@ struct file *shmem_file_setup_with_mnt(struct vfsmou= nt *mnt, const char *name, } EXPORT_SYMBOL_GPL(shmem_file_setup_with_mnt); =20 -/** - * shmem_zero_setup - setup a shared anonymous mapping - * @vma: the vma to be mmapped is prepared by do_mmap - */ -int shmem_zero_setup(struct vm_area_struct *vma) +static struct file *__shmem_zero_setup(unsigned long start, unsigned long = end, vm_flags_t vm_flags) { - struct file *file; - loff_t size =3D vma->vm_end - vma->vm_start; + loff_t size =3D end - start; =20 /* * Cloning a new file under mmap_lock leads to a lock ordering conflict @@ -5908,7 +5903,17 @@ int shmem_zero_setup(struct vm_area_struct *vma) * accessible to the user through its mapping, use S_PRIVATE flag to * bypass file security, in the same way as shmem_kernel_file_setup(). */ - file =3D shmem_kernel_file_setup("dev/zero", size, vma->vm_flags); + return shmem_kernel_file_setup("dev/zero", size, vm_flags); +} + +/** + * shmem_zero_setup - setup a shared anonymous mapping + * @vma: the vma to be mmapped is prepared by do_mmap + */ +int shmem_zero_setup(struct vm_area_struct *vma) +{ + struct file *file =3D __shmem_zero_setup(vma->vm_start, vma->vm_end, vma-= >vm_flags); + if (IS_ERR(file)) return PTR_ERR(file); =20 @@ -5920,6 +5925,25 @@ int shmem_zero_setup(struct vm_area_struct *vma) return 0; } =20 +/** + * shmem_zero_setup_desc - same as shmem_zero_setup, but determined by VMA + * descriptor for convenience. + * @desc: Describes VMA + * Returns: 0 on success, or error + */ +int shmem_zero_setup_desc(struct vm_area_desc *desc) +{ + struct file *file =3D __shmem_zero_setup(desc->start, desc->end, desc->vm= _flags); + + if (IS_ERR(file)) + return PTR_ERR(file); + + desc->vm_file =3D file; + desc->vm_ops =3D &shmem_anon_vm_ops; + + return 0; +} + /** * shmem_read_folio_gfp - read into page cache, using specified page alloc= ation flags. * @mapping: the folio's address_space --=20 2.51.0 From nobody Thu Oct 2 21:39:18 2025 Received: from mx0b-00069f02.pphosted.com (mx0b-00069f02.pphosted.com [205.220.177.32]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 20A692459DC; Wed, 10 Sep 2025 20:24:05 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=205.220.177.32 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757535847; cv=fail; b=r6WnN6KMjKORvU+C23Jp0xgLBHezt0esv0VSGHBXyU2bv0Nl9nRSRVWPu0e3YHVeND0NtQXE1WUyTCfOcMM+eBpXJpUKggL60maGWuWd6NDk8pL7SrbAgY+u6t2Ua4p32Towsn7Um0OfyQTpnhRbUQUkB7oS9bHignvmQgZPnIw= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757535847; c=relaxed/simple; bh=A5Yv6vEDjEPTr/jf0svFDRVbCrx6W9rHFl2rtGpyn9M=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=jgXU2iuiNPnBeODIfKivCgSpsYVS9uR6rhgfIaWhbVI2pa3YSY1QHYQZmXmnG3L9Z8WpkHiumMyDdOAO06rUCHQ7L0Y7jie0N0YBPozMQvtIEtregSgzd9fSW7Ez+iWFcxsZovyICyOUPkMfAJwTz0OgJPH+8HkITC8YOUYTRVQ= 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=CJTd+DR8; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=lWobbSVO; arc=fail smtp.client-ip=205.220.177.32 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oracle.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oracle.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=oracle.com header.i=@oracle.com header.b="CJTd+DR8"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="lWobbSVO" Received: from pps.filterd (m0333520.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 58AGfpW0009838; Wed, 10 Sep 2025 20:23:29 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=cc :content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s= corp-2025-04-25; bh=sNRgN8ww4NFZcyigkZ3PExC6K+MQT1o42BfSvdw6oZw=; b= CJTd+DR8X7h5izkB/24guafOSH4GWjQSIkUyo7Ub/fcvff0dJDj3uuMhHG+ECkH9 qiszT3t2JHF14Qf49mUD2fkbhcb/OYnrONHUf0coZLNF1Sg0/vrMu3REXwTVIY7E biFZ/MZaQodSjoZuFm19P/7tFNxj5FvfovAOeBMhVmCYMHXKlH4ZxnM/556m9pmz tDfnlbPB+hABvgxy5+TYc8R4AcgPt3Q/ft3Dk+2EEBCwXuHM7oBnyQ+5jbI/XAvZ qljKxuteK/9mgI3VFDbyCksLkrjHUGebSSR2vIpXmqM0JmwDOd/TQ/j1r1RchQSV /uSS10PswEIq/NTKUDFjoA== Received: from iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta03.appoci.oracle.com [130.35.103.27]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 4922jgvy4b-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 10 Sep 2025 20:23:29 +0000 (GMT) Received: from pps.filterd (iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (8.18.1.2/8.18.1.2) with ESMTP id 58AJfi4Q002816; Wed, 10 Sep 2025 20:23:28 GMT Received: from bn1pr04cu002.outbound.protection.outlook.com (mail-eastus2azon11010005.outbound.protection.outlook.com [52.101.56.5]) by iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 490bdj1cg6-3 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 10 Sep 2025 20:23:28 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=MQIm3sQKlRKnJoD4vZaIypCT0BX27c4/+yeSmNPp2bMUno8jjWmPC2yQXjVrWnwqABtuCy7gjf+dgra2Iz/SXxp12kj/ist3UAS20EZl5kTvWlLyWZydZi/n7xKQYUFGE6tinMj+4SnYFrO8wc9b/gkudn4baiD34uGuIs1NO0wQwF4ihF7LHNjASSihS4KYcu76VJb2gDWutgQWGjz46kBpydRcfcGXmZ/V9l+oFfx/1YO/MSC/QaBzKoWZlAYWMpmT8ZuirKrzyxitXo9YiB0qz0LCbHPxq/GPA0IZOJvOWYWkdOFAASQd/QjxhwAYPqMvPc8jJh8oBssRtn0rcA== 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=sNRgN8ww4NFZcyigkZ3PExC6K+MQT1o42BfSvdw6oZw=; b=zCWpy0X6PhxD7Z6zybt+LBukzHZn/Jrp4O311G6OKxXdfGJc0EWryMKRwmUDI6NhA/hpUiQVvoo1X2IveVS9VrUvyOVJvUX6l+jiUO8zdxtgd/m+5QsKr9jjJjInVQcZ8bpB92vQzBjLqC7dFN7byw0yRDtptAFmvrk78xoS6Mt4+l533HV1IJTtYvnBu7Tlj7Wno2acJHZLr5Y/dtEFnc8M7vnuX7dElh5CnJv9gKYY5UWBmJnkL4QmIgl8Ooh2soyQ71lHTTMndWzi3VnR8tsp29a91IeI6Tte26uSDj2kzuSKTHfZsm+yaTIdFj3vb1dsZP91ke/usVTEUSfOXg== 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=sNRgN8ww4NFZcyigkZ3PExC6K+MQT1o42BfSvdw6oZw=; b=lWobbSVOUm6i9bgYbCONd/HRVVYP1ZTtfc04c3+sFEkGUICo1oyz8JrCSBsRPHmjDzlDe2tDMVkebBkt3MhD6HDQYH8F6paKyjfgSmRo50aghEJlJ9uUbNeJzNLiO0g3mtfpswCdW6Mi4NCYJ3SUm1M0KcSR+ZHvuXhq+Unwywk= Received: from DM4PR10MB8218.namprd10.prod.outlook.com (2603:10b6:8:1cc::16) by DM4PR10MB6278.namprd10.prod.outlook.com (2603:10b6:8:b8::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9094.22; Wed, 10 Sep 2025 20:23:03 +0000 Received: from DM4PR10MB8218.namprd10.prod.outlook.com ([fe80::2650:55cf:2816:5f2]) by DM4PR10MB8218.namprd10.prod.outlook.com ([fe80::2650:55cf:2816:5f2%5]) with mapi id 15.20.9094.021; Wed, 10 Sep 2025 20:23:02 +0000 From: Lorenzo Stoakes To: Andrew Morton Cc: Jonathan Corbet , Matthew Wilcox , Guo Ren , Thomas Bogendoerfer , Heiko Carstens , Vasily Gorbik , Alexander Gordeev , Christian Borntraeger , Sven Schnelle , "David S . Miller" , Andreas Larsson , Arnd Bergmann , Greg Kroah-Hartman , Dan Williams , Vishal Verma , Dave Jiang , Nicolas Pitre , Muchun Song , Oscar Salvador , David Hildenbrand , Konstantin Komarov , Baoquan He , Vivek Goyal , Dave Young , Tony Luck , Reinette Chatre , Dave Martin , James Morse , Alexander Viro , Christian Brauner , Jan Kara , "Liam R . Howlett" , Vlastimil Babka , Mike Rapoport , Suren Baghdasaryan , Michal Hocko , Hugh Dickins , Baolin Wang , Uladzislau Rezki , Dmitry Vyukov , Andrey Konovalov , Jann Horn , Pedro Falcato , linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org, linux-fsdevel@vger.kernel.org, linux-csky@vger.kernel.org, linux-mips@vger.kernel.org, linux-s390@vger.kernel.org, sparclinux@vger.kernel.org, nvdimm@lists.linux.dev, linux-cxl@vger.kernel.org, linux-mm@kvack.org, ntfs3@lists.linux.dev, kexec@lists.infradead.org, kasan-dev@googlegroups.com, Jason Gunthorpe Subject: [PATCH v2 12/16] mm: update resctl to use mmap_prepare Date: Wed, 10 Sep 2025 21:22:07 +0100 Message-ID: X-Mailer: git-send-email 2.51.0 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: GV3PEPF00002BBE.SWEP280.PROD.OUTLOOK.COM (2603:10a6:144:1:0:6:0:10) 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_|DM4PR10MB6278:EE_ X-MS-Office365-Filtering-Correlation-Id: e31eea9a-841a-4011-b571-08ddf0a7d79f X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|7416014|376014|366016; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?yFrn9FDcbis2xWAbv9I7nf8a64mV9tbWHZ3qTXeVvunpjDY4ViEw+zscZspe?= =?us-ascii?Q?noRfa6o75DWvfpDGbr9IOCP2un7nUfTemtdqHGttRlwa3hnl5NQC+6+rRJwo?= =?us-ascii?Q?XsZ2MhEmkzy6zhPfA6jc7Y+8dJ3ocTisvVFxjrow5VX2y3bC+Cu3XL7ODFJM?= =?us-ascii?Q?oiD7pe5i2woO7+y/0sLSoO8AiFG0cIWSvD/xg2x6tDRHdGAjE7kpjwt35Kfw?= =?us-ascii?Q?DX+wqc3W8kOSaTkvkCmB7Jh5gNS4CnuQlgcddR4u2mEdMNUEDT4d8V+1ex+i?= =?us-ascii?Q?arz7jfB5P27Jhb2Cxf+v/ocPv3r/sByY+bGpepQnmsQc9tGyCgA5NlKkRrBr?= =?us-ascii?Q?2lAmp/IC+qy/IdFvuk+77vXzRPhpSixckX1d6pu+iW1naRkSqhd5N3yGJSWc?= =?us-ascii?Q?Q2Fh8fnJQChK3NwqhFGo2IX1LNLevqP02/pfDZsKZJAswD9tjnNzwvTZu49a?= =?us-ascii?Q?Wsb7Ui9lcywys3hJC7yN39xBXwQm+pL4RNF9bB1nU1J9Y/Ps4hGyawaoaubx?= =?us-ascii?Q?IdLHxvky4ih4zBuIhkAFSxiVIXcoXRsFlxB8gM/V937Vx56mr8xFbl/SdFTJ?= =?us-ascii?Q?Z9XfL6721x0qF6iMbXFGHYe2I13aPQ8/7xEViXHE4ZYYegRZU136KbZLYbaj?= =?us-ascii?Q?hIRcTM3SkEGarC6YWexFMuqSv9gQKOuw0L4DOTa607h6/7nxPdoga8F/VggG?= =?us-ascii?Q?TJ2eTJ7fBrnrDH4XZclfEwGexHQiAAWrhyQGwb7CR2NmMDJJdCKdosrDGuIg?= =?us-ascii?Q?iz9+9U23GorU35hicWaCt1Jcv/aDnzaoTLixNEuHOmzTCN6bZj++qFOxI2u5?= =?us-ascii?Q?ntiDz0o3OpJVrAghIRpsgTPSx1BUhCsSKhZCms37tHCJ8ZHM6PhzE8O6cCmh?= =?us-ascii?Q?iHVomDNPfOinDfPxHHhQnVFHcAwbur0FdyMpsJ3tta3UDdu2LElTt4qE1VyL?= =?us-ascii?Q?VsrFnDvkSKkj6OTYDd2fnnx4OqoKeAEWnZhg7lOna8biKqjTdaA7nERqPefC?= =?us-ascii?Q?MygkPQbqDXKdxNT5d4tyEZ3b37WOClsXYN6BbRSc2dYQ7vIlbOWewK8DJFgN?= =?us-ascii?Q?2LFxGWw7uxDxzneyGzVrVwIqNlLswsaT2p8AXaGg25OsbwYnQ/3xWbnhkHJf?= =?us-ascii?Q?2KfH9nzzCVkN5LaJzPDUGAhiTPLIemPllRJra30wwJZ0GeuFPOXlQTnP9d3k?= =?us-ascii?Q?QjmWTd0/xxWyEU0sDeti5vR0w0OO+SUeYtzSDFUI+B+a/Wc0YQaaiCHdvHOg?= =?us-ascii?Q?Us0irPbBoG0ydNiNObUSGDDqTKltZYCrye58Ee8uCfmotcejUkuDVC4G2Dj3?= =?us-ascii?Q?37P2k5Cs8NmEhJtu87SCus4D+wwFZ+zINFN98vlt2oqAG8GQxF9m71LISQ3q?= =?us-ascii?Q?5RSNbqG7mAL14DMcmuMpI2Ym3MzDHZMg71GQ6CHJ/hnjV+aqiW7AzoB61LMO?= =?us-ascii?Q?soTJK8q136I=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)(1800799024)(7416014)(376014)(366016);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?DZOss0P9M8Dzyrv8IeMixiNj43SslqXXwZFaqq06QCv5p+x2tP/J9hPDPGb/?= =?us-ascii?Q?hPIezvkyOV4ikzjn/d4OUr1qDRIrhundz6MkERjK6Y+0ww8FAUywC4LlB4qO?= =?us-ascii?Q?nXDGGNsfRrm5y6to/7ce+J8x3jPmkYsFqnDH6Ew9On8qU2M+HZ4ZHugKbbcz?= =?us-ascii?Q?5l69hTnMLYOdVml3s6N5e+cWzjIC7RlpiOJ+WBi+zfdPJBZTTIY4u/Ek0TVt?= =?us-ascii?Q?RDnUr9Y0YzziaHYzd+DeItUu2r2PsyoeTvYMyqaxrDx2P0Ye9hjahC4srr1W?= =?us-ascii?Q?Xnws+J9EmUnhK9Ikn+nJvsPArEERnKdBJNmJ6LoRtio2XBc44araCINlz7II?= =?us-ascii?Q?ybmQBy3Th3tLhnveenITwrHX224MnwYMXKnvTIDYPX5MfXUsPOcVRTGZgH11?= =?us-ascii?Q?YCd1Jd+IgOWKtfnEU5o4dzfxWgFknzULL9mPtyYxUWoZ5bUCF1JecrviCf2A?= =?us-ascii?Q?TS2kH3zieFiPiAJLRJoBvLmFFh37pfApyzptKQmtGdNrwjudwTyOZXnaZ4pC?= =?us-ascii?Q?U1EqCLVPb0Ix+RgXASimtdBmzSY7LzgFauHzDrjYYvJZyeOR37qsn9n3757K?= =?us-ascii?Q?2YtDV0eeLHd3UhLp2xDONWExb0HzmSQhfZS8J2PhtjzXnRx+P+BddREWfH7r?= =?us-ascii?Q?IDWH2dkaT8CAtvtatBiO/lfKl5pjqsofmVmi9vVw7txjNq6jqDK/oQCexqbL?= =?us-ascii?Q?3EeOF6aoEVwR4k0nLxalb5h6kuyMulMcRE5YqV11Zp8XgOqDXkrC7Z7qjpDB?= =?us-ascii?Q?8nRLKDH2ehMyKeOZOT6prhKbVvSoIfJ6ALtzMzvC1X7TeLKTP4GGpQVlTBxB?= =?us-ascii?Q?qWxEKoZtL1vFeCF1LoLPgxU/Q5X9zkSJboSQf9mDxL9XeA03A7ysozF6leqq?= =?us-ascii?Q?vwj500O/SjjhOXnKhuLQ5vjS//W5FdZ+tDuS9/PDhSZz1BQeP7DMvaMFKEHP?= =?us-ascii?Q?mUnr89LvuZLiQxrNrmsfzaU4WsZmjQaEiNX8Gs5xjQePMxKnFuun/nZzRHIC?= =?us-ascii?Q?2mM/SI0RsrkymJgtx8gSrgA+i9sDdO2kUCdqcKjVW44pRo1V9LXhPy1pCiG3?= =?us-ascii?Q?ZA7u4aslzX3O9+VL8mi17DSA2kTb8BV719H71QwWT9gz+Ix1C1chonugbkQX?= =?us-ascii?Q?KvEY1hbVVcFTM8cvrBo+XDLJZxY9+HqSY3461IMxH/Ru/gd6q2+DMVFn0c5S?= =?us-ascii?Q?86fdNr2t3r5Mi6H54mSOExdU9wkZMbH44h1wHz5xBvh8CusH447EydReN6MV?= =?us-ascii?Q?eq3WAb2qha+Mj+g/xsvkILWToa8CqAp3dsF+xeAT8a7qGiuPXT53wI4wWpz/?= =?us-ascii?Q?G6OT5+bl7BgkM8PjCzeN949gYvPgMuynZHFbRfVwVMML0jXxbOWRum2lh10k?= =?us-ascii?Q?Q+7Qj97DHaUog93Pn0Ar1VwLSt9yJvm+DBc9hb73WgDDdLc5cOPp5nqI3svQ?= =?us-ascii?Q?cVssrfFasyVoES+87NrN7ZHxaJDqhiW/12oZCcK+oo5owcCuA+4LsX/2sh/f?= =?us-ascii?Q?EYheRIrO1xgN3Mwz0AGGX7aVDBLmh1V6g1T6tibKLl94v2DcLiIjTIaARp2j?= =?us-ascii?Q?rnIa3L71gNHM7bcYHlQgvshOHim6iikUduG+ZCLefHTalXkYUGW7EMgMt2E6?= =?us-ascii?Q?DA=3D=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: 7P5hl6twlN3sLSTOu4RshSLZ8X1JE6uySQhkrpcCPOrP72eYjkI1JbC0IZ3D7Oj6kD8LIo3zpKlfxNuDVXOAbCt67NIhnqjMBKXNrttrtGeZzuW0ncm9m4YkGsyHaEdQHD11D1HnnK+BATU8oCqP408q1Awj16IZoSKF9hSZZ/DXxIeYu4roYAJpAVcAaEEvvePzrGtMGIQH73gllkaChb1sdeYVBmsmeel3h1KedUhOQi8dM0vXYpQUbW7rYfQML8O6zJSOJkVJo+cimG8rOTm8AUJUS/vTYhhxX0JQ2NmqdjaGgz5b8avdXu8rKIZaBLtsoeQVeXOKRZ3ypDBj6q8h6ZgV5g7qkJs3sGRHNuruD8eosTHBiu9u1vL4tRmJlxfHC/KVgVpdERV1Gi4yzymbOObhicZnDSIjn6U6N6dLNkKXwUEupxJF7YzRTTKasFNMYUIZJcACUaTqDMdX1JA9TAIPhVEGYHPipklVUdh0xv7UoHsMZTv2JiG3/9HcBdiS381+sYXKp1dhphXWc763znE+wLFh1b4LFGEm3fd23J0IVBioeXnDuVNwoAuwEWk/iBmVXF0PS9GOjsSvYh/W2PuE40Suz1HrJn2VJPU= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: e31eea9a-841a-4011-b571-08ddf0a7d79f X-MS-Exchange-CrossTenant-AuthSource: DM4PR10MB8218.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Sep 2025 20:23:02.5243 (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: EuuyK4AeRwcTQxpyPNznDt2l9xtD+XWUrp0cgWVwQSFQUqewllcLrTfhPPMAjf64h65NWb105BEVGFs/IzAf+pYIUnMK24mJTx87vMilOYM= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM4PR10MB6278 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1117,Hydra:6.1.9,FMLib:17.12.80.40 definitions=2025-09-10_04,2025-09-10_01,2025-03-28_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 spamscore=0 adultscore=0 suspectscore=0 bulkscore=0 mlxscore=0 mlxlogscore=999 phishscore=0 malwarescore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2508110000 definitions=main-2509100190 X-Proofpoint-ORIG-GUID: PAq414IqEPL6UVMNDjq6NFqq6yaEvh7A X-Authority-Analysis: v=2.4 cv=PLMP+eqC c=1 sm=1 tr=0 ts=68c1de41 b=1 cx=c_pps a=qoll8+KPOyaMroiJ2sR5sw==:117 a=qoll8+KPOyaMroiJ2sR5sw==:17 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=z/mQ4Ysz8XfWz/Q5cLBRGdckG28=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=wKuvFiaSGQ0qltdbU6+NXLB8nM8=:19 a=Ol13hO9ccFRV9qXi2t6ftBPywas=:19 a=xqWC_Br6kY4A:10 a=yJojWOMRYYMA:10 a=GoEa3M9JfhUA:10 a=yPCof4ZbAAAA:8 a=XorjO2LDAUPeUTK5CBgA:9 cc=ntf awl=host:12084 X-Proofpoint-GUID: PAq414IqEPL6UVMNDjq6NFqq6yaEvh7A X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwOTA4MDE2MiBTYWx0ZWRfX1tdeLsxJ6zHF 7ologTU2EYdrSgonfje/zRp/ssjsNG0yXyxX8HQ80lTOVNSrPRLbnzUhsaoMLbniO9FN2vwCS29 R1qhROIg05FfoSYKsZBq3J3MF9N8aMBHEY/GLYomtysbEdv+nOW0Cj1jixWlWfkRQRMwH6HylbT mdJvRSOrMLe3vcxz2zSK9ivfWtXLq7//aXrLSi12mVNdMwM4iT/XYT77WhvAoCEyC30WhBkPsac fB2a4JOSwAu/lxpcUk2U4EsSYG5XLrVMAbe+etiybtVOhG8mroNBI04ZB0zy615mBXIKbV0o+dA Ck7x+use20hThyr24i7hkrlh1pi86coPZRNGeBmPFbt9ulbdAp1jKXELCpWnv4vEFOkBzwR+huM SYNepX3UF/9IvwxkN0s47l5kxABEMA== Content-Type: text/plain; charset="utf-8" Make use of the ability to specify a remap action within mmap_prepare to update the resctl pseudo-lock to use mmap_prepare in favour of the deprecated mmap hook. Signed-off-by: Lorenzo Stoakes Acked-by: Reinette Chatre --- fs/resctrl/pseudo_lock.c | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/fs/resctrl/pseudo_lock.c b/fs/resctrl/pseudo_lock.c index 87bbc2605de1..e847df586766 100644 --- a/fs/resctrl/pseudo_lock.c +++ b/fs/resctrl/pseudo_lock.c @@ -995,10 +995,11 @@ static const struct vm_operations_struct pseudo_mmap_= ops =3D { .mremap =3D pseudo_lock_dev_mremap, }; =20 -static int pseudo_lock_dev_mmap(struct file *filp, struct vm_area_struct *= vma) +static int pseudo_lock_dev_mmap_prepare(struct vm_area_desc *desc) { - unsigned long vsize =3D vma->vm_end - vma->vm_start; - unsigned long off =3D vma->vm_pgoff << PAGE_SHIFT; + unsigned long off =3D desc->pgoff << PAGE_SHIFT; + unsigned long vsize =3D vma_desc_size(desc); + struct file *filp =3D desc->file; struct pseudo_lock_region *plr; struct rdtgroup *rdtgrp; unsigned long physical; @@ -1043,7 +1044,7 @@ static int pseudo_lock_dev_mmap(struct file *filp, st= ruct vm_area_struct *vma) * Ensure changes are carried directly to the memory being mapped, * do not allow copy-on-write mapping. */ - if (!(vma->vm_flags & VM_SHARED)) { + if (!(desc->vm_flags & VM_SHARED)) { mutex_unlock(&rdtgroup_mutex); return -EINVAL; } @@ -1055,12 +1056,11 @@ static int pseudo_lock_dev_mmap(struct file *filp, = struct vm_area_struct *vma) =20 memset(plr->kmem + off, 0, vsize); =20 - if (remap_pfn_range(vma, vma->vm_start, physical + vma->vm_pgoff, - vsize, vma->vm_page_prot)) { - mutex_unlock(&rdtgroup_mutex); - return -EAGAIN; - } - vma->vm_ops =3D &pseudo_mmap_ops; + desc->vm_ops =3D &pseudo_mmap_ops; + + mmap_action_remap(&desc->action, desc->start, physical + desc->pgoff, + vsize, desc->page_prot); + mutex_unlock(&rdtgroup_mutex); return 0; } @@ -1071,7 +1071,7 @@ static const struct file_operations pseudo_lock_dev_f= ops =3D { .write =3D NULL, .open =3D pseudo_lock_dev_open, .release =3D pseudo_lock_dev_release, - .mmap =3D pseudo_lock_dev_mmap, + .mmap_prepare =3D pseudo_lock_dev_mmap_prepare, }; =20 int rdt_pseudo_lock_init(void) --=20 2.51.0 From nobody Thu Oct 2 21:39:18 2025 Received: from mx0b-00069f02.pphosted.com (mx0b-00069f02.pphosted.com [205.220.177.32]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id EFF902F6196; Wed, 10 Sep 2025 20:24:06 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=205.220.177.32 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757535849; cv=fail; b=E6pkJwMIyRjb4gSeDpVFUoAqw2VFyK4UfhQDq4RHdttgRzcfoHxQ4x5x6larF2yOoprGPqUOvBCQIkOyFuvvWJEHuuEUhbgzxLK3sGjjlmv7Y+Ww9qGtDp0Emt6jFa/pSFUKZkEQs99/8yJsBHa81GJlywwyD7EFU1Qn84qYTHw= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757535849; c=relaxed/simple; bh=1JfdXBZRZLU1ilQ7TO3Xv2SbxUPYw+73vGPGbPcjgLc=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=ITp2Yeb7X5VhSb5eJxpXYhNH5o2BqDuq4MYHTxFq6bSwpUUGsJgn7o3ifaxKn6rD7s9fkuTaj/f+oR0MIUUC6j5chc/5D4V95o3aM1NJ9JqC/mR7r3TMrCjjlERtsv4v46+63gknMnjS9cI+zcGrZ9tY3iSgTpwBh1Abvxq+E0A= 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=aXoBATT3; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=Lhp/Pfvv; arc=fail smtp.client-ip=205.220.177.32 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oracle.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oracle.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=oracle.com header.i=@oracle.com header.b="aXoBATT3"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="Lhp/Pfvv" Received: from pps.filterd (m0246630.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 58AGfmod031800; Wed, 10 Sep 2025 20:23:29 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=cc :content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s= corp-2025-04-25; bh=TDZj7ctZsILMMs8wq9yQ/WUrQo+JNZFgrh7mrnA11/M=; b= aXoBATT33kWpFcaaRQ+XFgLLfSfdedgJDgkdB9aUTU8nclsbQBZu2oAIxgQ8j1FP nSWrmziGvDIsEXdngXPHRuVKVRWK6y+qRlqiCAjt+Cl3OsvPWrn/SaIqr2KO6ANO WlSz6DEq3PxtXeJ45NtrXSGwz3e7Fpf6zaG5KEAbO5vwbKESrDajuJ/dxiBEf88j g4s+fxD2SxTOYa65ZprLqGtWTvJ9VsgHtBk88TJHtMTzVkzvb2aZJ7Lu3sW4kWhL DCIlQHMRNCyx5l8Ra7xRr4UrkFfbP0mzrES0BOOclB4hWDCckTIg8yERXXavKfEe iv63ZKOOoCa/oNfci/yHgg== Received: from iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta03.appoci.oracle.com [130.35.103.27]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 4921m2w002-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 10 Sep 2025 20:23:29 +0000 (GMT) Received: from pps.filterd (iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (8.18.1.2/8.18.1.2) with ESMTP id 58AIW1Jm002913; Wed, 10 Sep 2025 20:23:28 GMT Received: from ph7pr06cu001.outbound.protection.outlook.com (mail-westus3azon11010007.outbound.protection.outlook.com [52.101.201.7]) by iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 490bdj1ca0-3 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 10 Sep 2025 20:23:28 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=Jf3hKZZeCnrOWcBviGwW1SiPDwPBAh7fwUPJybNRrk38aPJ3TQuUpLIXY/WDflQdqdHrbsYazCP5EnxbWlLBrgbTnaZqOLheIAUHG2rp4ILnzE3hnwY0qrOpc8A2UFp0TW8tCgjK6SCTS3ByV1ZFnTZ9ROSRCOkzhLyrZuTwqpNfpXJ8xJltildMeOoW1vJM/7sc2KL9LGX/oIbxS8tGYfKr7ooUvGnLpo0/0Xfb685WFRAt7wO/Cxnb4E/UzUGanuItwa25+/oRnYPw1LS7jKwh+nbx1haTsK06oqAFym8n1KRso/FeeDkEpoemFyFgPF0CsEHTtHaGWv5/SsAa5A== 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=TDZj7ctZsILMMs8wq9yQ/WUrQo+JNZFgrh7mrnA11/M=; b=MENj6d1awHzQh3RksBa/4Kf+j5uEZGEskziMXSGRmEDShDnh57a0Lh5IaFwGGvBpfjLJo4VsMqCJPx+JcByn/4w6VJedbKHV3ZtOVRENCsOVeaBTiKvVLQnQa+u4pYG7qrT53W+ZgIhSINFPH85n3pokoq9k5eg6kYb8B7yuM1KGcsEYIY2hkyZgslVw7gpePgO2nVrP6imsMGMgIUIq4D8zjGKIItyJKJI86/pApgI29vimOtL9GSAYnT42TMtyuHzbmXTwe6QAvZSH7R5kCkmtKG+y4J9VJ9AhkWfYkaLSJl4P7RGl+veqDGwpSZ89ShqzwIbfqUPYbJ1dkfeJfQ== 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=TDZj7ctZsILMMs8wq9yQ/WUrQo+JNZFgrh7mrnA11/M=; b=Lhp/PfvvAOwbfPcfm5GydKJrxA483P6bcwzUIigJWChTbK49iO8d1GfcTEKfNSsBlyqzwuaJnayZ50X2vmfOKq/wUQUBgDDjDm5nmdWLfQk4ONRZmGBKpvNMLkWmnRE3RK4TIixLOXkM3TRWcdPJHr/sxHcXIUtj1yrKAgNfCC4= Received: from DM4PR10MB8218.namprd10.prod.outlook.com (2603:10b6:8:1cc::16) by DM4PR10MB6278.namprd10.prod.outlook.com (2603:10b6:8:b8::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9094.22; Wed, 10 Sep 2025 20:23:05 +0000 Received: from DM4PR10MB8218.namprd10.prod.outlook.com ([fe80::2650:55cf:2816:5f2]) by DM4PR10MB8218.namprd10.prod.outlook.com ([fe80::2650:55cf:2816:5f2%5]) with mapi id 15.20.9094.021; Wed, 10 Sep 2025 20:23:05 +0000 From: Lorenzo Stoakes To: Andrew Morton Cc: Jonathan Corbet , Matthew Wilcox , Guo Ren , Thomas Bogendoerfer , Heiko Carstens , Vasily Gorbik , Alexander Gordeev , Christian Borntraeger , Sven Schnelle , "David S . Miller" , Andreas Larsson , Arnd Bergmann , Greg Kroah-Hartman , Dan Williams , Vishal Verma , Dave Jiang , Nicolas Pitre , Muchun Song , Oscar Salvador , David Hildenbrand , Konstantin Komarov , Baoquan He , Vivek Goyal , Dave Young , Tony Luck , Reinette Chatre , Dave Martin , James Morse , Alexander Viro , Christian Brauner , Jan Kara , "Liam R . Howlett" , Vlastimil Babka , Mike Rapoport , Suren Baghdasaryan , Michal Hocko , Hugh Dickins , Baolin Wang , Uladzislau Rezki , Dmitry Vyukov , Andrey Konovalov , Jann Horn , Pedro Falcato , linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org, linux-fsdevel@vger.kernel.org, linux-csky@vger.kernel.org, linux-mips@vger.kernel.org, linux-s390@vger.kernel.org, sparclinux@vger.kernel.org, nvdimm@lists.linux.dev, linux-cxl@vger.kernel.org, linux-mm@kvack.org, ntfs3@lists.linux.dev, kexec@lists.infradead.org, kasan-dev@googlegroups.com, Jason Gunthorpe Subject: [PATCH v2 13/16] mm: update cramfs to use mmap_prepare Date: Wed, 10 Sep 2025 21:22:08 +0100 Message-ID: <0b1cefb4e4021e95902d08c7a43a3033d1e3a4d9.1757534913.git.lorenzo.stoakes@oracle.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: GVZP280CA0055.SWEP280.PROD.OUTLOOK.COM (2603:10a6:150:271::12) To DM4PR10MB8218.namprd10.prod.outlook.com (2603:10b6:8:1cc::16) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DM4PR10MB8218:EE_|DM4PR10MB6278:EE_ X-MS-Office365-Filtering-Correlation-Id: 3f494f9a-45c4-4ce6-9e01-08ddf0a7d92f X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|7416014|376014|366016; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?FUCDREMuJs5Njdv2lkz1C5WZj9okwnq9ZRd1ph0Ub6S8BXfShvC6H7VcKhkh?= =?us-ascii?Q?Fu63TRx/ZI8AhHDNFj4ZDsevZqqFOvY3fHMt8bUuQpwUAfnHZj4gO/BWcmjz?= =?us-ascii?Q?p5I2QBZcaW/1kgDv4uVqNr3qIZTyM5KgZFYmSjThtNbVZiTJs1PkiSE8oYcq?= =?us-ascii?Q?tkCZNpQBPn3vg5Z1dT0ac5CqECBryUGdbVJG69mqGkhXNs6IBzCE0/qmGn4o?= =?us-ascii?Q?lFNoeBUgz18kXYXWlhEnFIJlxmeTBPQENwAX/5NX7dvD1EdFwZoencCPBiEY?= =?us-ascii?Q?3kDJ3tl2q8YvCXbdkcamrg9bryeoIRjAZWpreDEikiv0SqxslM8gfk/7KxEK?= =?us-ascii?Q?hjslPs9j0NR2RKc0gXmJVQYVUwKr/NX38ofn9DWQzaNVDeDOZ3Hiu/IoFJ6A?= =?us-ascii?Q?o6gTS++FcHpXlo7cwxEcYScRQF6NJTwoeFQJAVdWDJCCxtRwySCabX1lUcfV?= =?us-ascii?Q?UWs8iQnw8zvy4XnPUIebTcGw8+WlMPpLcXxPTmrhKcB+Ft8t4APdav2rC6zA?= =?us-ascii?Q?oIcPJmllyUhes0/atyC8FABEippA6sNGq/Hfw6hYTAnnR1QXiFVFTScBbfPP?= =?us-ascii?Q?WXykDK7Eep6aI5Qyjmug9rriMUVF524z5BLzGof62ubJBwACxMAmwxc2hsYf?= =?us-ascii?Q?e3nDI7rmgh+0fYBQWeShQIDKqQoHH1V0gvp6XjqkRQt9IC72gBd51LEeby+E?= =?us-ascii?Q?DQMbNJbpzXpyuB+9hbaUTLkPmiJsA8yArv/w7asSMdNDWnUnD7Rhke7fHhcr?= =?us-ascii?Q?Y6eLyitWJSM+qOLtIrsuqpF/TPK7Y+P0fUnYWYDpM6qGlPyQdZ4fFCEzopBa?= =?us-ascii?Q?eew97UKezybpfTFZ3gBZkftpaCPECuQbPSHiM6rpjaMziQ729Qb9ifNL9OPl?= =?us-ascii?Q?i36dYwpA9eqpo2BqQxTIYXQKtDXS+GzxrIvfE7idvO/6yRLt7V4KeXmI8hQn?= =?us-ascii?Q?UjbCcBh0WrY/tQ+frChOkTZlMvqfF4Vs57IUdVrSCqyClfS4lyK2jV+THH/j?= =?us-ascii?Q?+eTBkluMrIxFjcgfxHgUNn4KUgXH26voSkTUwOaT4m1JdU4PMPDiO8ypyEst?= =?us-ascii?Q?AACWcITYILlYBqYw8L0J5KJqxqgCLK92e4VMCvUqnd/qAXFLRbAic1sNysFw?= =?us-ascii?Q?WYxygxkObcsW6aTvGSIDVEDGf3pBiioTzRmvv3Yr+oLlDlngEpsa642sCPCy?= =?us-ascii?Q?OJdNY3Wk60AbSQMfgH44Am1shUEsDnj1BcxgeyWB1SeHjNLjBrGb1pcrFk8D?= =?us-ascii?Q?zShAh4RmJ3pNNgQnbqrS3ahk/yO1ZLtjHiaXcFL3krwLOiGnMqcExP6hOhjQ?= =?us-ascii?Q?wo7bJVnc4MneLmNc+VREarNtpYq6ofKgrl9ynN5xALq1PderWh6jhZr8LhLY?= =?us-ascii?Q?msQPYgsAokIDVDyYz+lyNCluI4UC5FyoBHMJYJe8kXjh04xeTPt3+XqlY4BC?= =?us-ascii?Q?kJpkPsIGTRo=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)(1800799024)(7416014)(376014)(366016);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?d4iIPIyfb9JjcIDyosu3QC7Gvw4j9ITXckm5asPtBBi8BbdY+PhzH58F2vde?= =?us-ascii?Q?OrZ2jl/Snuzq+d84RwliDMd6zfSG7jQfQUOKSKYu4sxbrcSfJV8R+/pP8uCe?= =?us-ascii?Q?J4gVQAuzlhIqS+hGVQyryxY/X4hk8no09LLbtxYiV3i3Zj3TE6HdqqynxIRF?= =?us-ascii?Q?t+XsS5GnS3g25Qle5isid+3r7IMQtFqs+lHt37JiF0bD7fi0F0HbB5cCpw72?= =?us-ascii?Q?UunYY2vU5OlBQiXNE56wqM2z6M0TTVXD5lgK6zyidinPAE6wU5ICLCreHduZ?= =?us-ascii?Q?wdf6lYembHWY+9CxvwFkKFYOXatZAbFYwy+y3j/WPADG09uBOniPYz8cTNn4?= =?us-ascii?Q?+4qMp9h/7B0/bNjSCcqeH+X0Qi5UNom9QUCIwdkXMjEd1XpvoY/mrHkq8sbm?= =?us-ascii?Q?EwMrEE1zDOzmqA/SLSFxMtbuxY3ppSvW2KOl+2jx6uZnw6RSo/LmkTCkDu7l?= =?us-ascii?Q?8mr7dDanxhKLvt86jGbE5aKCsZLxo2BwjHwNyQGVvuw7tBtuKKu4VXFuqJH3?= =?us-ascii?Q?sheBB4X4hHT1QbSOrw9qk1cVrYpiknNvanJ1IbVqPCvxoZk1O8I4rRHDOwc6?= =?us-ascii?Q?L8G5V/C1fMvfEPBw/o+yaqjIesn57XuLlyO3cw9Wua9UzDuZ8JeA/YIYiUtg?= =?us-ascii?Q?kBKTxUvp+ppDvhQJXPk9PGWmpVOYF82KkCETIE0juL6k8YER09EGY3cgxcfe?= =?us-ascii?Q?ftE/bFZW0Lfdvg5wJNrwBit849n2ItdybwYKWQqMbwwYfCNJTygebH+GOP5P?= =?us-ascii?Q?6yC7fx5We/QZK7yUqgfatKcdCsXeAgSTE4yT07DPEWMzNCIYI1OIAjmnrRwk?= =?us-ascii?Q?dcj0Guf1DAyavGQvGTvxSDu3ZEWAlIpCAFZKgqauDclNGlzwfARZBndrOKnB?= =?us-ascii?Q?5+ETd0lWvyHa+0nPj0FihqPNwTiSrREoT/W7RRfzMxZ1svQD9n6j7L7Kxguy?= =?us-ascii?Q?xxfyFisSnka5l1lXXO4mX4wDEpqn+toB4J0qqQKncsO93mDJz06L8u5VTKKI?= =?us-ascii?Q?nNzeV9QS6uB3IbHM4tJGr8NqiueK0to17cYm2qBKrCtYxaWJffDKYV6/PPAp?= =?us-ascii?Q?JmvAi8ZtpvqOBYzoBoi9eOygcgabW3lKlbc/rRqSRJfY1ZH60uiL4sGksQgc?= =?us-ascii?Q?Y4nXLyKdSyoahs+wzGIo8ZNppZz8P42PEGuZ+E7qdq4JWMowMmY7xgb3ThfK?= =?us-ascii?Q?TVRCuYdOHXKERRDkS9eVuAnsT8Md1X2PkcZrvuPUcSAIdQCMGkny7z/wi4Sw?= =?us-ascii?Q?Dml5fZ/b+owtmlumtP1FcWRgnQYSp3QrbswcyEyRxhti05FuzvuxuhTOeG9s?= =?us-ascii?Q?k97KxEcVdPgRw8usyZJS5pzvgRutNS9zftI7MIJdNEV+Fy1K8iRraIm3CUMC?= =?us-ascii?Q?R8HuhhLb2NnpGL3FolsnKYIWQA2zGINQBMRGKG0BfyoFPY1ElwviE6ccA3pb?= =?us-ascii?Q?SRHS0OiFQVtByHtFue3vtwYCLEHxkXEYEjUv2o5hT/h62cVZi6fodlEDW2fY?= =?us-ascii?Q?wqETDJIgGFChdGbBbVAcuvPTyaFCVVoY5VQfFpd/71hUkFvA/Z9Iwm1rAzSg?= =?us-ascii?Q?ybJY0gvzD8SomiKla5sJ0JExeqsTqZHMb/GdaQ/rAZV6yUWW3uLgF+KviSLN?= =?us-ascii?Q?Ng=3D=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: RV2fp/2Q2beM2kS/c9x+L7vbw1KSBRo0UKCBswaNEU4XFLd5Ar6n//3pXw7eWlvdG9biK3oHOYV/sypKkIJqMatca2Iqu9d3CYIUvDaPfkZZ6aB9S8J/LBNj1zr3/c37Hs1hn+aZwl4mGFFE+cRn9doGB+GO+kjblJvPUnsS30iXCIkJ8vUOU/aAxJ//JsOTbQ/1XIf+huQcWesfBGsuFDSRkLOqJ4+Gdhgd3q/bTHlW6PTOy5AcyGOZDC5UjKbvlX9uorcXizE6wyjrcN0mN+rG1xsM+drbQbBCY0kUMHMfpSaTJvQLJO3RzTaUcvMNc6Tx8+ud47FuvA9r9njwdSeItiiG1jwgH9duZZK54UqeItcDajQiIAoz7rrcGyBUWYC8zZQJfZDAy6xunPe7ZjNZpAS7xWIOopXmWMnHA9TfkPYKd4dad/zS+SrrnJUoBW3EJC9FHG0Xc9Z0HpsAd28WxiqImn/ozy/4ME4Ru9dA4Z1xZ4KKw9kDl04M3bMfsJiApcQfx8wykWHW7r2oO7q/iPjprm/+FTrE6BWLYrsypH3lxuiIB370d4Wm3Te4pU5o4IIISLzWLJYMCG+TTCHP7yWFAmqlj4QS7t3eJfU= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 3f494f9a-45c4-4ce6-9e01-08ddf0a7d92f X-MS-Exchange-CrossTenant-AuthSource: DM4PR10MB8218.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Sep 2025 20:23:05.1423 (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: +PU3pU0I0I95bNgB71GixTh2oi7pKNlkYuyzEimysaBoZ3caDrF5s7pa45HjdKhKYyHflS75LdCSOOx3e5ImRo4kG32EMTjmhfcROgmFdKc= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM4PR10MB6278 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1117,Hydra:6.1.9,FMLib:17.12.80.40 definitions=2025-09-10_04,2025-09-10_01,2025-03-28_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 spamscore=0 adultscore=0 suspectscore=0 bulkscore=0 mlxscore=0 mlxlogscore=999 phishscore=0 malwarescore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2508110000 definitions=main-2509100190 X-Proofpoint-GUID: 97Fpw0HOO_5yt3NTEGoOhFepokWCgKKn X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwOTA4MDE1MSBTYWx0ZWRfX2cJjtJuz5RNW PguGRYaQujM7V+razkBSUNrEKLFnalar9DyuOZDO3PHc92dVEiQrjKEPorBx7Ghn/tB0sH4OKLx Nhw30/y6WFcmd2Frc6Fp9xaUJMpGNsqNeTwXt82uu63i+nVAR6xulfj7LoBrbpzOCM3FeHVj4Me RfEsd1GaHc+s1sONrk+X54XxHVoIueVaOWB6c7Jn1YoncoPcX75dN3VyjmowPLGAiXjFzZ10b2K +fe7t5W7+m9V6iPWKzcq+L4bVpue791Q6ZBeh3a4gintQFyZAKlIFEuzQNTVG10RLP0XnRd/crD BzSrJi+59tHLOb4Mm2r2pCS8vwhYfXVbB3K2vtvThk3Ag9iJj1RpqnBPosg4b6D1Urc3foqADnW 8uyL0LwLcdHshpOG1ctenxYsF8f3jw== X-Authority-Analysis: v=2.4 cv=Dp5W+H/+ c=1 sm=1 tr=0 ts=68c1de41 b=1 cx=c_pps a=qoll8+KPOyaMroiJ2sR5sw==:117 a=qoll8+KPOyaMroiJ2sR5sw==:17 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=z/mQ4Ysz8XfWz/Q5cLBRGdckG28=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=wKuvFiaSGQ0qltdbU6+NXLB8nM8=:19 a=Ol13hO9ccFRV9qXi2t6ftBPywas=:19 a=xqWC_Br6kY4A:10 a=yJojWOMRYYMA:10 a=GoEa3M9JfhUA:10 a=yPCof4ZbAAAA:8 a=m4A7AkdywhOBhaBTiuYA:9 cc=ntf awl=host:12084 X-Proofpoint-ORIG-GUID: 97Fpw0HOO_5yt3NTEGoOhFepokWCgKKn Content-Type: text/plain; charset="utf-8" cramfs uses either a PFN remap or a mixedmap insertion, we are able to determine this at the point of mmap_prepare and to select the appropriate action to perform using the vm_area_desc. Note that there appears to have been a bug in this code, with the physical address being specified as the PFN (!!) to vmf_insert_mixed(). This patch fixes this issue. Finally, we trivially have to update the pr_debug() message indicating what's happening to occur before the remap/mixedmap occurs. Signed-off-by: Lorenzo Stoakes --- fs/cramfs/inode.c | 46 ++++++++++++++++++++-------------------------- 1 file changed, 20 insertions(+), 26 deletions(-) diff --git a/fs/cramfs/inode.c b/fs/cramfs/inode.c index b002e9b734f9..2a41b30753a7 100644 --- a/fs/cramfs/inode.c +++ b/fs/cramfs/inode.c @@ -342,16 +342,17 @@ static bool cramfs_last_page_is_shared(struct inode *= inode) return memchr_inv(tail_data, 0, PAGE_SIZE - partial) ? true : false; } =20 -static int cramfs_physmem_mmap(struct file *file, struct vm_area_struct *v= ma) +static int cramfs_physmem_mmap_prepare(struct vm_area_desc *desc) { + struct file *file =3D desc->file; struct inode *inode =3D file_inode(file); struct cramfs_sb_info *sbi =3D CRAMFS_SB(inode->i_sb); unsigned int pages, max_pages, offset; - unsigned long address, pgoff =3D vma->vm_pgoff; + unsigned long address, pgoff =3D desc->pgoff; char *bailout_reason; int ret; =20 - ret =3D generic_file_readonly_mmap(file, vma); + ret =3D generic_file_readonly_mmap_prepare(desc); if (ret) return ret; =20 @@ -362,14 +363,14 @@ static int cramfs_physmem_mmap(struct file *file, str= uct vm_area_struct *vma) =20 /* Could COW work here? */ bailout_reason =3D "vma is writable"; - if (vma->vm_flags & VM_WRITE) + if (desc->vm_flags & VM_WRITE) goto bailout; =20 max_pages =3D (inode->i_size + PAGE_SIZE - 1) >> PAGE_SHIFT; bailout_reason =3D "beyond file limit"; if (pgoff >=3D max_pages) goto bailout; - pages =3D min(vma_pages(vma), max_pages - pgoff); + pages =3D min(vma_desc_pages(desc), max_pages - pgoff); =20 offset =3D cramfs_get_block_range(inode, pgoff, &pages); bailout_reason =3D "unsuitable block layout"; @@ -391,38 +392,31 @@ static int cramfs_physmem_mmap(struct file *file, str= uct vm_area_struct *vma) goto bailout; } =20 - if (pages =3D=3D vma_pages(vma)) { + pr_debug("mapping %pD[%lu] at 0x%08lx (%u/%lu pages) " + "to vma 0x%08lx, page_prot 0x%llx\n", file, + pgoff, address, pages, vma_desc_pages(desc), desc->start, + (unsigned long long)pgprot_val(desc->page_prot)); + + if (pages =3D=3D vma_desc_pages(desc)) { /* * The entire vma is mappable. remap_pfn_range() will * make it distinguishable from a non-direct mapping * in /proc//maps by substituting the file offset * with the actual physical address. */ - ret =3D remap_pfn_range(vma, vma->vm_start, address >> PAGE_SHIFT, - pages * PAGE_SIZE, vma->vm_page_prot); + mmap_action_remap(&desc->action, desc->start, + address >> PAGE_SHIFT, pages * PAGE_SIZE, + desc->page_prot); } else { /* * Let's create a mixed map if we can't map it all. * The normal paging machinery will take care of the * unpopulated ptes via cramfs_read_folio(). */ - int i; - vm_flags_set(vma, VM_MIXEDMAP); - for (i =3D 0; i < pages && !ret; i++) { - vm_fault_t vmf; - unsigned long off =3D i * PAGE_SIZE; - vmf =3D vmf_insert_mixed(vma, vma->vm_start + off, - address + off); - if (vmf & VM_FAULT_ERROR) - ret =3D vm_fault_to_errno(vmf, 0); - } + mmap_action_mixedmap(&desc->action, desc->start, + address >> PAGE_SHIFT, pages); } =20 - if (!ret) - pr_debug("mapped %pD[%lu] at 0x%08lx (%u/%lu pages) " - "to vma 0x%08lx, page_prot 0x%llx\n", file, - pgoff, address, pages, vma_pages(vma), vma->vm_start, - (unsigned long long)pgprot_val(vma->vm_page_prot)); return ret; =20 bailout: @@ -434,9 +428,9 @@ static int cramfs_physmem_mmap(struct file *file, struc= t vm_area_struct *vma) =20 #else /* CONFIG_MMU */ =20 -static int cramfs_physmem_mmap(struct file *file, struct vm_area_struct *v= ma) +static int cramfs_physmem_mmap_prepare(struct vm_area_desc *desc) { - return is_nommu_shared_mapping(vma->vm_flags) ? 0 : -ENOSYS; + return is_nommu_shared_mapping(desc->vm_flags) ? 0 : -ENOSYS; } =20 static unsigned long cramfs_physmem_get_unmapped_area(struct file *file, @@ -474,7 +468,7 @@ static const struct file_operations cramfs_physmem_fops= =3D { .llseek =3D generic_file_llseek, .read_iter =3D generic_file_read_iter, .splice_read =3D filemap_splice_read, - .mmap =3D cramfs_physmem_mmap, + .mmap_prepare =3D cramfs_physmem_mmap_prepare, #ifndef CONFIG_MMU .get_unmapped_area =3D cramfs_physmem_get_unmapped_area, .mmap_capabilities =3D cramfs_physmem_mmap_capabilities, --=20 2.51.0 From nobody Thu Oct 2 21:39:18 2025 Received: from mx0b-00069f02.pphosted.com (mx0b-00069f02.pphosted.com [205.220.177.32]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id CFAB82F8BDA; Wed, 10 Sep 2025 20:24:05 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=205.220.177.32 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757535847; cv=fail; b=YWdYRIWil1GHzvftrNM398Pb8QEXz3g5wAtDwtCFLlMExci6+nnlz/jX+efwxymZHdT22PwaTBD9XS64qUCCl6QDqd6rvywdwSF2njsiPh8IsZGhscjGXyNEq5IShaICadMxe1IcMJ1kba/LOOFP9dHcSWE15G8fa+w8kelsTxw= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757535847; c=relaxed/simple; bh=DkBC4YjCSU/GtBuBbvJx6RbAuluecmISfrbUssiNJxY=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=Cx12ApXuzT2vmbqNtAMZZg8sLdyaEQ1O4At0LpYsECJdu7zsDDXBYyDesfCqD/MaIaCKMTykg8jnN4naqHJyzHWJHed9KFDM1NTquGy37JXwLYJ7XhFfp4TUfW1y1osetLVqip2IZ4oNt+T+hOBzpDg0KZ03C9KvOzZAt2bW0Xg= 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=GWhEfzxe; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=TtX+yOi3; arc=fail smtp.client-ip=205.220.177.32 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oracle.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oracle.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=oracle.com header.i=@oracle.com header.b="GWhEfzxe"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="TtX+yOi3" Received: from pps.filterd (m0333520.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 58AGficK009688; Wed, 10 Sep 2025 20:23:30 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=B7O3kJ3lGqMWds2QK8kGSK9NSQyYQsnjI88W6YN5E5E=; b= GWhEfzxe2MgF8GSjcnIhvwrs8t/+/UZ4MVHLVqtwVnfXLA6MtWD4SoJJVTPC+z+A zXETeMUvYiKaTAmJoPUvwAYsiFjbazyg0MnVE4fq5tymPMfMRwLYzsoM6UnhRist qEZKMGFDRL/NKzJVEUFETlaNdlDh2VgUt72970pbDX6CpUEMDZPAbdSLo9mCsgbu FlR5txTofeFxtvDq3QbsQ11oCG4g7L+9TuKxZuS4HtQDLx2Ldll5FnXMZUUfJU2B evGqh0FWEIdpw3ChagQxyQ7Gc31dSRWHu5hGhQujg/L8R/3Y6brEmNXj24Pk61Vh KC4RsFhWrNA8FYvwHoFDvQ== Received: from iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta03.appoci.oracle.com [130.35.103.27]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 4922jgvy4k-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 10 Sep 2025 20:23:30 +0000 (GMT) Received: from pps.filterd (iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (8.18.1.2/8.18.1.2) with ESMTP id 58AJfi4S002816; Wed, 10 Sep 2025 20:23:29 GMT Received: from bn1pr04cu002.outbound.protection.outlook.com (mail-eastus2azon11010005.outbound.protection.outlook.com [52.101.56.5]) by iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 490bdj1cg6-4 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 10 Sep 2025 20:23:29 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=C7ovt0aeJ673R+0Z+kLrydDVrbw4WWTcT2zaheLhQTIvqCwYIgZ0c1U2A62ILqgQutuGovGAsWEzt5tODEH3SDPVf7RZDSicAoBjkzjuU//I8pFC2CeDibRvTV97OjSWIrZYH1OeHfEb4dbCVxMskmJCHiWq8Z+ABXZNXcR/ynrDtEWqIeE0Un5JfHBezoQpXqJqyIimlngX5xzDIsc5vY5lISGtCtUzORUgMze1/zVPAB9+g5ecTmEtvlh9JyhOPpcS0Hz6HEoSnymC7+oMhfMsryG0NZyfKsWsbTQ1Od7Kgf5nm64fET0+b919Pt63lR9hUhPXUWqVSwQNDqVbAw== 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=B7O3kJ3lGqMWds2QK8kGSK9NSQyYQsnjI88W6YN5E5E=; b=LO/BQ3YZRlcUdoWK02Pf/i3T1ggevgXfofZqUspljn58Xm6f9eliVXJgNn8RfpUvHAFE99bhgM7vmi2xYTah0SV7+cQFE3QyjGyrA51gtC7oG6sxpYS46yaDQoFHwPgT4pkAG+sjqTDAqmjE1Myzg3/kUChW9PrFzdTetk6RB95dnrhbnUoyM51u6twKJngTDxso3J9Vr++exNZzHgUBCORp0/mV6ojZAWGbTdIsuN53MpkQa+JEN4a+0sI0TXCtXUR/IJtMZh82dgrSdwGtDY+TWCZZIhvIo8T+en8gj1Xmqm5p5roczygerjXzaaeIRyGYuG0iSKhsovlzir1zbQ== 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=B7O3kJ3lGqMWds2QK8kGSK9NSQyYQsnjI88W6YN5E5E=; b=TtX+yOi3UQgmOU4FG3Pi/C7BB5UYgKMZIyoG3G8XSZKqmM8mQIQvjrEY0qR58HK85jPLMb9LeDmljUgmE1PjdLsPgn57J4KWZiyaykyv+N5/PMwMKiudeUQB5NYpql0GPy3QpHoEQ1c8avTxwO0sTcxNHmLjw8lCfTapcE0zMks= Received: from DM4PR10MB8218.namprd10.prod.outlook.com (2603:10b6:8:1cc::16) by DM4PR10MB6278.namprd10.prod.outlook.com (2603:10b6:8:b8::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9094.22; Wed, 10 Sep 2025 20:23:08 +0000 Received: from DM4PR10MB8218.namprd10.prod.outlook.com ([fe80::2650:55cf:2816:5f2]) by DM4PR10MB8218.namprd10.prod.outlook.com ([fe80::2650:55cf:2816:5f2%5]) with mapi id 15.20.9094.021; Wed, 10 Sep 2025 20:23:08 +0000 From: Lorenzo Stoakes To: Andrew Morton Cc: Jonathan Corbet , Matthew Wilcox , Guo Ren , Thomas Bogendoerfer , Heiko Carstens , Vasily Gorbik , Alexander Gordeev , Christian Borntraeger , Sven Schnelle , "David S . Miller" , Andreas Larsson , Arnd Bergmann , Greg Kroah-Hartman , Dan Williams , Vishal Verma , Dave Jiang , Nicolas Pitre , Muchun Song , Oscar Salvador , David Hildenbrand , Konstantin Komarov , Baoquan He , Vivek Goyal , Dave Young , Tony Luck , Reinette Chatre , Dave Martin , James Morse , Alexander Viro , Christian Brauner , Jan Kara , "Liam R . Howlett" , Vlastimil Babka , Mike Rapoport , Suren Baghdasaryan , Michal Hocko , Hugh Dickins , Baolin Wang , Uladzislau Rezki , Dmitry Vyukov , Andrey Konovalov , Jann Horn , Pedro Falcato , linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org, linux-fsdevel@vger.kernel.org, linux-csky@vger.kernel.org, linux-mips@vger.kernel.org, linux-s390@vger.kernel.org, sparclinux@vger.kernel.org, nvdimm@lists.linux.dev, linux-cxl@vger.kernel.org, linux-mm@kvack.org, ntfs3@lists.linux.dev, kexec@lists.infradead.org, kasan-dev@googlegroups.com, Jason Gunthorpe Subject: [PATCH v2 14/16] fs/proc: add the proc_mmap_prepare hook for procfs Date: Wed, 10 Sep 2025 21:22:09 +0100 Message-ID: <832f0563f133b62853f900cf9b5e934b3ee73a7c.1757534913.git.lorenzo.stoakes@oracle.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: GVYP280CA0012.SWEP280.PROD.OUTLOOK.COM (2603:10a6:150:fa::10) 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_|DM4PR10MB6278:EE_ X-MS-Office365-Filtering-Correlation-Id: 5139e266-a01f-4ead-a596-08ddf0a7dadc X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|7416014|376014|366016; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?s7mriCOOVHwbvMTruYsuEHiHSCHHTjAUJdyUeC3Vz9Zs99AlQKx2SosF3CoY?= =?us-ascii?Q?ZLStkOk4LyFtYVncVj01AU5Uji8RFRaP8Sp3axFueuDX2NPwmbCCxQ78dRRj?= =?us-ascii?Q?9ulZch8KHWe0EwuUlXqxIlLu6YzGAbiw7ASfAYTqj8TY9NKO2Xl4/a+UPpIw?= =?us-ascii?Q?VjqHBnGCF7LwQW7qa2K9PFTBnhC2mxGRKrjzFRrWilIvWxTnAGsF7mdaqsgE?= =?us-ascii?Q?HnslpNddGwI3uFVV2T5t63px+uOkJdS+3BjqN2UApdBXjYibiRZtYCjYxYxW?= =?us-ascii?Q?QaEtDRsHSMdWXfvTVuVyv9byQR0hStZDNuduCu/WGcaUoTCX0ETEpuZnLIKS?= =?us-ascii?Q?0MaMp4hNGM3LmWZzwBXSLcQGlUTrq0o6CkvERV4jHJLK1Zn+ayVnXFbwLqLH?= =?us-ascii?Q?qwG9r/d3L0H4ASCwrs87tKhF2+f7YxEjrU2l2jy9M+d4jNweWOJnySCRe2Bd?= =?us-ascii?Q?COaZM8lWcL8K6ZcGTyhlU2+plOQy3r18lHpMCG3WT8UtNa1yEe/+ad3qTR9h?= =?us-ascii?Q?Ux4ALgaglxdiYapIJ+uNuYD3LEVur7Ve13YgqPAscq0v5IBJJ5fci94WiNzy?= =?us-ascii?Q?xLKUrJDlZssvtwH4FBPWWnLXCCmk2QtWCUWNpPo/NPq9So72oDcSpSZfcFRM?= =?us-ascii?Q?qWJ2HjEMzC55/YeqgBlCoRvc8CUYEJLrRc3soew+y5i5cGYyjIMNOVa5eKgc?= =?us-ascii?Q?sl0QuPuzI4D6vpOT0ygpRAjDdEkyuPFYk5dz/EPxOGnD0N+T9M+u+Dq9yFrt?= =?us-ascii?Q?Ab21pBnDoSY1hFvFA/DbYzB5dMERitojvwkY7Ig4Fa+tYJabGBYjDej0sld+?= =?us-ascii?Q?EP5Dtpiu6U+rZiooPg3x/EnWVA6P+mC3Chn+4kJUdg+CWKqyd4tArD+cbY2b?= =?us-ascii?Q?NCMuHXUv+byw23Y7iP6fXhlH2G98iT2K8Tyq/aQp88HGnzedZN0wUxBjOgEA?= =?us-ascii?Q?KcGXE9sZ/vj5IlKt7tF1M+pzq+GPGRslGXiafDq2IuszuscEdVV7ee0+nAfO?= =?us-ascii?Q?6m7+P2OEBmEkbvLo3FyH0VFQBn6YumA3AME0PFR4T+PJiXodyYXjFHjc0tEi?= =?us-ascii?Q?6oy0kvOeoh1Hsv84EZfbAewjPjfWjNQKrjCvPlCyJ4bcz9pxnisdfXz5rSda?= =?us-ascii?Q?Kpvw1eaClqBEAAgsHriGKcLRwFHpfAD0mTrNppkeNLwSgP0nUGQIMqmZ7XpB?= =?us-ascii?Q?IuHzMcQgjxFUMdpuAtaXJNbdDIAzcfazuidJoB1vFuElyuqsYe4kzWMMuytb?= =?us-ascii?Q?9iwShDzRrAO2Kk2NCHM8GhRs0yktvVFBZ1xyEgdWITlGdBhKW6mnm41nOUAK?= =?us-ascii?Q?aLIguKNk+mP63KpBeh23EiH781XVQcsbFp2vowP7BDQOQ6uyYXZUhVvG0Kkg?= =?us-ascii?Q?KoRqOJ70sRs88yhQb2Ygv0FrxFclHZiiI/DkfFScZ2k/0EmwxBEnY/vwyIe1?= =?us-ascii?Q?UW2ZYFpVwWo=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)(1800799024)(7416014)(376014)(366016);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?A9AomaLKTyZEIBeD8/8vS1EBILtbexcuudnZZ2GLSTmxAxZ2Cy0m7MSruKe9?= =?us-ascii?Q?dHoRHc9+p/sSlNfSm9uIzrWpYwUOUmDxAw4ELtpHHn7yywKGgfuLzO4U028x?= =?us-ascii?Q?7JkjkhOkLG6dT5hMMglhVoYSZpmbx3Z6GHe0Ye/bg6VKvcTtJ8DW+5BXVK0w?= =?us-ascii?Q?aFRWMsELWCsfzgjW7YwYBS/nw0iTomCdTlJhUnQJn6DUmtXL+SnCGIr50KEW?= =?us-ascii?Q?Cx0N3whuT/U0CNWSzmqxBsQhq/9G8DQXXtgCHFBpzF9IZn5QVw738kW2QtE4?= =?us-ascii?Q?XbSqnVkfKTYeIA93DpRcm40MNmD79PH9dIya+HjhH8BnmQsf/IpxOrA//4Hb?= =?us-ascii?Q?Qw5824sFSKaMidJxVZQt4EXZh5w0vzVNGRRp81jmuTkGK1hzq0B8Pi72P29O?= =?us-ascii?Q?VKi2sp2XDeLAgv6Ac0dTuKDZmggUyKVHgkKupMwc47OntxMM6c43B0q+Vtmk?= =?us-ascii?Q?oVP/G6rCPuNlz2XH/+kB/MILCX2jSplNRix+rQGu9KfOsjQMKb/0ckz7KF/h?= =?us-ascii?Q?QzsNoHwx0aziv2zT9BvW9HUNCL4VdQt98v0H9qAS+oSDZxHLTZ6CxIFUd2/2?= =?us-ascii?Q?8KWRlUgGK/8Bephwz7J/nFDr/vFv//7HD3SrImZoX3zJ/c4AJ/qF37YN66hq?= =?us-ascii?Q?eIniJVZkdHj4OiEoLvkN6LYp7ccjbAzZcVZwYJnoPTd7hK/7VXS96HIGldm5?= =?us-ascii?Q?6KVObn9jE9033ot/3zT9dUakXRseB/ZdrbE6Ci19vUkkZ4e+cuklGKQlgzuI?= =?us-ascii?Q?lX2no8J60q+gtdOswOVgI3MCcKsI4BT8TDFnWPk3XvF8Sst5iOw8YCeFmmgt?= =?us-ascii?Q?ax+eJT5SRWgTk6bRzxZtc8whD0nrJQsKwiYLMGwio5NVpgdYlHzkRBI413rU?= =?us-ascii?Q?ejF0zh/j79Rmc4eTgi0oIosGoVryX7Dj5W8aLKblHJiOFnkMfEJK74dt7LyS?= =?us-ascii?Q?MHfaSOoD8Fg1LN9USbyb7XCNHEAPCHXDBXoThjsbxDAoIKUe4M+36yM+iPWL?= =?us-ascii?Q?lyYGvClugcGnFNKPs+s0E50n+kXZgAoiUAwJYw7AG1pVANuVrXr3thdXyJvr?= =?us-ascii?Q?ZsJRimvCNh2rc+Z5CNVH49gj1MZA+a/NwRRUPKRCGL5187aH6Xsq8ejnDjHP?= =?us-ascii?Q?3TDSl125Vx+Ctwq1Cy3cVU2VzbsuAr1N0gL/qMcFPbhzDOCVpjP7HD33Z1ki?= =?us-ascii?Q?JXMClegIVYgvlvsXiLpPz0D6eQx0q7wSa3J14ee8aGh28g7njtwh72PzfU3r?= =?us-ascii?Q?TeqAO7lJxOUZ0z6+ZxQhkLw2UOSDO96h8GvlhaoPBgBXeRVzX+HvCWPSnmCR?= =?us-ascii?Q?WBDSKr1KsBBHfvBk/JSfFPIzee+5MFu7CkEHtMpSGa7tiWM4bC9s6wDE1/Dx?= =?us-ascii?Q?6l10BIkygRjsSl5+MrFNsp0V12DXOZum71WeNmyiyc2APLDae3Gua89PQNzC?= =?us-ascii?Q?3IatL14a4lVkRM6uIWVMZ5c0fmQR/R+5Y6MqXKITWv7HfNL5RnT4PznBSdiL?= =?us-ascii?Q?REH3MzN2Zyn9Jy66pkPYF9tbDWIxMCEyXZ98LPdMDGo3BtRa26Ah1nxoKuIY?= =?us-ascii?Q?ydnISA7hW8NwDH9i+smGIAUOkobwNFLMDgd6GH5CNbv0EWAyiVYrRZ9LktrP?= =?us-ascii?Q?1Q=3D=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: ZK//pix0pRX/afxnjhR211ELWMFXye2n05+jt/140xlp5VY8Bi0QRBBes/ne/UpP5eU1a1MODwOX08Kt8QZWdm0u1CF1y+ibMsdv1GpYx+b16k3L1fSKbVmIoEkvAJtDfvvUd+FXXFqJwMs+jdVx2fIVGn1i1y0hxGIuWbIhz7EoLNu4hoF6K7UPvNic9/GjMDfEEqc9UWCwmB71WnU28wLK36w077kh0k985YD6c/mrHGJqhq8Np98k0DYwZ9B50+sG4juAbFybJIP5Ycy+YdOAC/qykpIXHw0bYeI0dTk0U8AHP5sKgYGi8ScCCEuiI2Qft4WA5gu1bMICbL4zdkw9P3eVP9/C4OQ01teV3UTFd74iB4bIhciS/WRAAVqWQWksFeckPReytftySFhDGnAY4GPpeYxhLU1mOoIztJG/8LADD+89njCnA3v2XX1wJES93rV3RTk1CQX+b/QfvLzEEnxVCgc7ZWDrX1qhsDa70uPwzpXVeRM+G5cx1xY0+c3eJycZDxnIWiaTWR/pl1aJaHUGNcVaPrDgbcaMxi4v2pvdjYAeYTY9mZESLU1U5DF6IRMyZgyElqxXrd16qjpYmyjv4iLKX+i6+Yn8l0A= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 5139e266-a01f-4ead-a596-08ddf0a7dadc X-MS-Exchange-CrossTenant-AuthSource: DM4PR10MB8218.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Sep 2025 20:23:08.0320 (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: G0TOhJhZEwgK3Z7COj3w8BiSFGuc3L5S+fLPgMrOxVy0SdTKbdQiovNZiSYjg405zieMwaOxVp6+Mh0Qbf6CbM03M+9ilrErLjnIy66k9/o= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM4PR10MB6278 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1117,Hydra:6.1.9,FMLib:17.12.80.40 definitions=2025-09-10_04,2025-09-10_01,2025-03-28_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 spamscore=0 adultscore=0 suspectscore=0 bulkscore=0 mlxscore=0 mlxlogscore=999 phishscore=0 malwarescore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2508110000 definitions=main-2509100190 X-Proofpoint-ORIG-GUID: Fh_m90enFP2q3noB9XJSVmr_ORbIBSW9 X-Authority-Analysis: v=2.4 cv=PLMP+eqC c=1 sm=1 tr=0 ts=68c1de42 b=1 cx=c_pps a=qoll8+KPOyaMroiJ2sR5sw==:117 a=qoll8+KPOyaMroiJ2sR5sw==:17 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=z/mQ4Ysz8XfWz/Q5cLBRGdckG28=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=wKuvFiaSGQ0qltdbU6+NXLB8nM8=:19 a=Ol13hO9ccFRV9qXi2t6ftBPywas=:19 a=xqWC_Br6kY4A:10 a=yJojWOMRYYMA:10 a=GoEa3M9JfhUA:10 a=yPCof4ZbAAAA:8 a=9jVcBwQ3IVUZEcKrhkYA:9 cc=ntf awl=host:12084 X-Proofpoint-GUID: Fh_m90enFP2q3noB9XJSVmr_ORbIBSW9 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwOTA4MDE2MiBTYWx0ZWRfX4w0rO+y+vBug dFUZhDrd2OKdtnYbOr6spZJcxgggOClYB2q6wiLUBTYNCRK0VylAmHLa4O1x3bmfkjRdKIqor8i yKb5EQRxAjKBCUKjUAG1nUTDqA/wKTnpSU9KZCCYk2j1ceC2Ka/hX1jBqm8EoAzvlVrbsribAsD ymKwKn3w9Wh1iLg/xJPxFz2hzABPi7p1IV4ciqyyAyiR14SM/3MhVSOIkoBeQR9SJA8Ma3Smo1V PpHXygrdg4JMQpWXP/19S7et7d8TX7a5He4CUTfXzahHktFjTX4euad52nElyz2onsm7+6BnSle 3f0U1qUSnMwvl3sH33Hq1E0WAj3tKL2cn7VY8hEHK/UwJthKS/YgxkwyiViWfhTWuyRDRpVo+jp NDLnTPLuvTHU1dCUczwsFWBIJyxydw== Content-Type: text/plain; charset="utf-8" By adding this hook we enable procfs implementations to be able to use the .mmap_prepare hook rather than the deprecated .mmap one. We treat this as if it were any other nested mmap hook and utilise the .mmap_prepare compatibility layer if necessary. Signed-off-by: Lorenzo Stoakes --- fs/proc/inode.c | 12 +++++++++--- include/linux/proc_fs.h | 1 + 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/fs/proc/inode.c b/fs/proc/inode.c index 129490151be1..609abbc84bf4 100644 --- a/fs/proc/inode.c +++ b/fs/proc/inode.c @@ -414,9 +414,15 @@ static long proc_reg_compat_ioctl(struct file *file, u= nsigned int cmd, unsigned =20 static int pde_mmap(struct proc_dir_entry *pde, struct file *file, struct = vm_area_struct *vma) { - __auto_type mmap =3D pde->proc_ops->proc_mmap; - if (mmap) - return mmap(file, vma); + const struct file_operations f_op =3D { + .mmap =3D pde->proc_ops->proc_mmap, + .mmap_prepare =3D pde->proc_ops->proc_mmap_prepare, + }; + + if (f_op.mmap) + return f_op.mmap(file, vma); + else if (f_op.mmap_prepare) + return __compat_vma_mmap_prepare(&f_op, file, vma); return -EIO; } =20 diff --git a/include/linux/proc_fs.h b/include/linux/proc_fs.h index f139377f4b31..e5f65ebd62b8 100644 --- a/include/linux/proc_fs.h +++ b/include/linux/proc_fs.h @@ -47,6 +47,7 @@ struct proc_ops { long (*proc_compat_ioctl)(struct file *, unsigned int, unsigned long); #endif int (*proc_mmap)(struct file *, struct vm_area_struct *); + int (*proc_mmap_prepare)(struct vm_area_desc *); unsigned long (*proc_get_unmapped_area)(struct file *, unsigned long, uns= igned long, unsigned long, unsigned long); } __randomize_layout; =20 --=20 2.51.0 From nobody Thu Oct 2 21:39:19 2025 Received: from mx0b-00069f02.pphosted.com (mx0b-00069f02.pphosted.com [205.220.177.32]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id AFA3D305940; Wed, 10 Sep 2025 20:24:07 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=205.220.177.32 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757535850; cv=fail; b=qDpcPnpLzg5AKiWEw3UA3erJaes+KPhuq8cMiVQdLkco7Ru60ymLSNktvEiL/eishPpeG9LYJo2ixIXUpRDGH+ezOzbmmpsdtQ7GrZ2Q2Y+NW3od/fzYMBldbmvtlvyEXD9s+xNg2tqOj35R/B97o48DDyuYPQjAvY/nrW5USn0= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757535850; c=relaxed/simple; bh=4zwKU3+yhg7sQh2kxmxCigZCuOarWFFxucVN++Rndfw=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=jKf7uwNt6EavlphKV5JW32Wvci7nfVT9ag/VbJ1vB3q2vp1gUYFhcEWCE+ukR7JxxpGKsbDAQWsQ/eHKp5yZejdHv/g3UxWTNChtbcJacd2p0upQqWXKqZSFd8QFyAwb0k7PX2S4i77puOyWWIa766bFAY5yNKuRixlPDI6g2to= 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=P2KhwpxX; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=Ya8GU3R+; arc=fail smtp.client-ip=205.220.177.32 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oracle.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oracle.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=oracle.com header.i=@oracle.com header.b="P2KhwpxX"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="Ya8GU3R+" Received: from pps.filterd (m0246632.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 58AGfiGo009739; Wed, 10 Sep 2025 20:23:31 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=cc :content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s= corp-2025-04-25; bh=qV/bTAUMy7Xh1fGu3pvqaeng4rc/lJ0fDkag4Iwsyl0=; b= P2KhwpxXxNfHXe9v9VHDaJXA/5j0Wizm86bZV3NYFBOT6IPtZU3lBpUw1K2fQGDT nn27tUtV4pIozhnSCcSnpXc/nEWApoO8jILVioQua6VrCjEHzTrttsIp9EhERYsB R+SjKQ2Q1WQtPRWngltzu4TA3xE/hjG4B/uDg6q+pd+EPLdoig3rkjCc+GZuL7MO 9djULfhgxf6gk6P/kNuNfQyYT4ptfeXaWxOa+GAnnlt7aCwAScmjeGFm+TAg/0vg qZzquA4Eqxv01nR1ouq1TSAIxQbKFumBAC52v40rsj7jL1a4lyxNL07ASmj8J2/n jBIj/9aZGu2eJp0bEBVx4Q== Received: from iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta03.appoci.oracle.com [130.35.103.27]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 4922shvv3t-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 10 Sep 2025 20:23:30 +0000 (GMT) Received: from pps.filterd (iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (8.18.1.2/8.18.1.2) with ESMTP id 58AIW1Jo002913; Wed, 10 Sep 2025 20:23:30 GMT Received: from ph7pr06cu001.outbound.protection.outlook.com (mail-westus3azon11010007.outbound.protection.outlook.com [52.101.201.7]) by iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 490bdj1ca0-4 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 10 Sep 2025 20:23:30 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=HOoUu68ejSvoQZ1KKvIGZmnrsI1HV3AoPN0So0yTsCzULA6ZiKZsYfCJHJtklxrHYN9ZtA6OS51t2phntRPXHQHd0FJ8J2WXX9Zf/VdqF9bwWbM8yT2BCkesRuhYRtI0RUy5xPUcW/XYxwGrpVfoMO8sCRyxg8AtwoDneS0xf1kPPHuYz4kIinYxODQ+TInvTF5almRImCR/UBTFlLOaLCzkjkZ8ja2XeFe54Hi8AhieVCzIMwPUi4kxSp4gBPObtIJNB5JISOBqG8zJVQm7LZC6Qgl1FaPYrCkF4I1TKMmi4TUqDg2jGGQRSRiaQNXXnbP/f8ZMMPYhnM7bD6RugQ== 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=qV/bTAUMy7Xh1fGu3pvqaeng4rc/lJ0fDkag4Iwsyl0=; b=ygFnaHpDZNbVF20n73kMVX1bdIlArdsfYqSl3YPp5MLJVGyEcZMLWrVbpxHsQq0OZNymDwXMJqTQYOLgwKZhfJQ9yhFjvutNy4AMSYplV0oX3uDw8zvkbwA1O+kr/85F5eWknZtnFssYh9h+W2y5c0haKVWLL4GgXE0biSLcUYIlK9M0yPji8DxgriI25zF4YdZZEqOISJhQO3OAHMzJ5Ho4sUGPE2XPou6YbyS+QqwmJHoRbHN37d6oc0FNKrS/577bCvhQTMnY8swA89LXS7zIltKFZVHjFI++MUTbCcxvaqzE+jVTBuvwwMySgaY5c8UwBOO0QSDvLXrMRTjrBQ== 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=qV/bTAUMy7Xh1fGu3pvqaeng4rc/lJ0fDkag4Iwsyl0=; b=Ya8GU3R+xMhy7QQKwos9tQQz0TwWZXUXF9jFvwoLedlQS+FhBoVWPyuPLUldSCds7PW2teP8rc5R/OORHJ3trorsYUVS8o3N2Ue+lkwzxDRSIXb+d2IcciyXg2zws45eCESY2k6EfhxJMoazabp72KgZnaGIN1nWEAxLeGM1pFk= Received: from DM4PR10MB8218.namprd10.prod.outlook.com (2603:10b6:8:1cc::16) by DM4PR10MB6278.namprd10.prod.outlook.com (2603:10b6:8:b8::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9094.22; Wed, 10 Sep 2025 20:23:10 +0000 Received: from DM4PR10MB8218.namprd10.prod.outlook.com ([fe80::2650:55cf:2816:5f2]) by DM4PR10MB8218.namprd10.prod.outlook.com ([fe80::2650:55cf:2816:5f2%5]) with mapi id 15.20.9094.021; Wed, 10 Sep 2025 20:23:10 +0000 From: Lorenzo Stoakes To: Andrew Morton Cc: Jonathan Corbet , Matthew Wilcox , Guo Ren , Thomas Bogendoerfer , Heiko Carstens , Vasily Gorbik , Alexander Gordeev , Christian Borntraeger , Sven Schnelle , "David S . Miller" , Andreas Larsson , Arnd Bergmann , Greg Kroah-Hartman , Dan Williams , Vishal Verma , Dave Jiang , Nicolas Pitre , Muchun Song , Oscar Salvador , David Hildenbrand , Konstantin Komarov , Baoquan He , Vivek Goyal , Dave Young , Tony Luck , Reinette Chatre , Dave Martin , James Morse , Alexander Viro , Christian Brauner , Jan Kara , "Liam R . Howlett" , Vlastimil Babka , Mike Rapoport , Suren Baghdasaryan , Michal Hocko , Hugh Dickins , Baolin Wang , Uladzislau Rezki , Dmitry Vyukov , Andrey Konovalov , Jann Horn , Pedro Falcato , linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org, linux-fsdevel@vger.kernel.org, linux-csky@vger.kernel.org, linux-mips@vger.kernel.org, linux-s390@vger.kernel.org, sparclinux@vger.kernel.org, nvdimm@lists.linux.dev, linux-cxl@vger.kernel.org, linux-mm@kvack.org, ntfs3@lists.linux.dev, kexec@lists.infradead.org, kasan-dev@googlegroups.com, Jason Gunthorpe Subject: [PATCH v2 15/16] fs/proc: update vmcore to use .proc_mmap_prepare Date: Wed, 10 Sep 2025 21:22:10 +0100 Message-ID: <163fba3d7ec775ec3eb9a13bd641d3255e8ec96c.1757534913.git.lorenzo.stoakes@oracle.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: GVX0EPF00014AFB.SWEP280.PROD.OUTLOOK.COM (2603:10a6:158:401::30d) 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_|DM4PR10MB6278:EE_ X-MS-Office365-Filtering-Correlation-Id: a9d5729d-eeab-4905-967d-08ddf0a7dc96 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|7416014|376014|366016; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?yU6noUR3JLos5jQEC8qKZ24tJXNlTFMBrXqltHEcNBVctuvn9m+RRB1VqI+D?= =?us-ascii?Q?zv+rPjgMS16ZNTpc6X273uFAKDRBokeBr77Kolcls7djT1jSTCqYu+NLxTZo?= =?us-ascii?Q?NqtnH0Akv45+PUejBTTXaVVj7t6WKAk5jlQlbeJ5Co4pXKcKYzgd6rBLb6Vj?= =?us-ascii?Q?P+SXvcxehysB2yufhYtJWlKQT4qOoO6zszk3HkiX/XlT7cxWT8Y/7ep32DF+?= =?us-ascii?Q?DAHeKKppAcTp8MsVhIhLEGYaSzfkiOKImVTRQoWqf+ps+BtZIcjFmdHAGrsr?= =?us-ascii?Q?F6L5M+gt061aeHQG3toAH0VRkN3EUrD5CEapDfH/NP9Wi2nf83TcrtoZWAs0?= =?us-ascii?Q?HdEtI4brvH7LKblWerdi9eBjNtuWj3Y1q/m9BY+TPlF4PittSy7V9YjLpe4y?= =?us-ascii?Q?2A2HhxRNS3JX3mI/SPVyP9jDmwA65CUy6bgnOVsljIa/E5dPwsDS7vm1ssmH?= =?us-ascii?Q?qPR8DKo1tDiRGwG6I3Yb6eQpS6juiQEohsiryYJ3mV8VuaPWfyeVrzscWU9X?= =?us-ascii?Q?FXuiZMbq7ziX7n7512eOI9hGrmdfBztpRfeDljXaGCdBoQsUMB4Khykh6GvW?= =?us-ascii?Q?eTSYVcJYDyUCIG1HCcdEAvKQHx+9N5QEQ29AeGZ/Xc+iQpgrK6JORViStXTZ?= =?us-ascii?Q?TiUctcEwdcZeTeEZfckA4M/F3/fIQeOqzrM5bOoYaaMsjC/M7QttdMcHh7c/?= =?us-ascii?Q?xQvVVoJrZ22Zat3z/UU1R+C8qqEWUgpaH8NArltBp1bp62IkmqmNQXcNPfI1?= =?us-ascii?Q?ibG8W5498BRV+VNQIOfMXNcc0PJ3fGXkY4GEiL5cHgXhdxzda8Hl6vZxpVyw?= =?us-ascii?Q?K2eM5EY/3hBIJwRFVr0OcJGAJ2QdoCYxF0J3oabiLfpXXvslQnLdo8w/qkQB?= =?us-ascii?Q?ncqOB8RzPctspEqSoWHZ9y95PNx6J1WthS2gfmLE7PqysjCvjs/stpuS0qMW?= =?us-ascii?Q?4bWlZR7Aose/BLz4tj9ZIlllv9q0lobJb+tKAbcDHvDvPl7VTZIl2sz4oyD2?= =?us-ascii?Q?bHOqFUih8jEjpQ4vF37snn6LD8NLjOlzRVgtL6xy/ofIVNXZielS5AcqrIpx?= =?us-ascii?Q?ZcyR4ysLzJ5I+SHUmPKdgcmHEMFBwZyaxNGgDB3wyM9CqWAdrIC1QQhNiMfd?= =?us-ascii?Q?OiLS20mMgeuVIur46f/wTkNuAtt5ma2oUC0BW5e3/Qm9tfOae5kdkhXdfjw8?= =?us-ascii?Q?ikdRxFa3t8hME/dRZokFtkhl3Sywrv3Gg2DQiChgX1z0CQmC2uNG0IuDHI04?= =?us-ascii?Q?jBD5c77BLnFqRCphgpdm85rqw0qDgsG22zY4MWvwbJRFapDImho3O6IeGv4c?= =?us-ascii?Q?gKKomjZc3zdlHzFU/cJP7Bd+2JaWjodi376wEc3W/gkcne6babeqiimhkWgT?= =?us-ascii?Q?KjdXY3j2RjUsg6UhXs+lnZvciZrACG+kZYfvCgdoIUQmLDYZqAMFm+aBwz2h?= =?us-ascii?Q?gzcXc095hcw=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)(1800799024)(7416014)(376014)(366016);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?Gf1XrYMzX6PsyUI/CMKFjG2NC05e4xmI4BYhIK4tQccI5+Jpa/5/cg6ZhOxi?= =?us-ascii?Q?/EtIbY6JvTbwC7mKewiX11YENDdHGR0j6/KdclD0DafSTvDW5YznhqApUdLL?= =?us-ascii?Q?FGyeN6h93CEIJeQ7imPxuo1lPAvOQzIVuiC3Cw0xLd4+EMgPYH1DQWYR5lp7?= =?us-ascii?Q?OeUkr7VpgJ7huZIYamYEmbywLfUHhkRsSgJd2WqzQvxg+igRp0r1frXyAGoZ?= =?us-ascii?Q?DeEiJOCrp8+mk+pYbYZGyg1qBJpfDyQbbVtekVYV1EVPrn2jW+/Izeq+YtGJ?= =?us-ascii?Q?sa0b26KhiNpqum0VEcZgWsgfsJ6xjsUlBBWOKUxavrzZ1GrmFrqX2G+shzpe?= =?us-ascii?Q?SXeqQdtA+uBSWhSWNx6qGpGmOHVvK/fq/H1z135wDrXCg6rS2UrJFJ8eQVol?= =?us-ascii?Q?XDa7eek37gMtLm0pfCGOUWdUoAAcKvnU5vmUo2kzLCxbmN/mTc3X1RzXlSEE?= =?us-ascii?Q?tiBhcSANU7iqzgU4Sx5/D3YzOTlD+30i8VlAUFLsU515QTtUJOk7fWfFgb3q?= =?us-ascii?Q?0zkhoAkfu6DXmdE8UwLAt7H80wCTTALT4yj3LwYBV6Q6Mefj4oZu6DMxdbj/?= =?us-ascii?Q?DIa/fEui8We2ocfe8Kzy8jO9/eexmiUvKf8mbsFd1Vxw8boIDrPu3+3Upu/d?= =?us-ascii?Q?GNiCvakxciGlQqttN5ls62wqNqsAwtMt33K6p7e5S21cSv+fGNx2W7KziHe0?= =?us-ascii?Q?s6QXGyVwdaBBN/psygXqyLORO2CJCz1ZCHu9ay14h9puIfyUYJtLeOuCrOGx?= =?us-ascii?Q?TDCejJ5HpU2frHtcCoLrxsgIHDOCC70AFuErMHrU5LKwJlNxq0TiXkQmPF8C?= =?us-ascii?Q?vzyIfakCbpDZ/Wn+AlLTnEtVCoPTwfKEFBOCwqdIZPAZrDS045F9yd2SKC7z?= =?us-ascii?Q?IUdpfJxNadQKA6KzsXtXVfnfhAMNhUj9T+0zMFldQvTu6ARxSipHy+2s3GDM?= =?us-ascii?Q?HDTi/AgX0STav9/g0eShJHxGqNSCB/HTjzxitMo0qg0BCOvJov6JNTqEWNr0?= =?us-ascii?Q?3dUKTaVh8DKbnI3+O2xvfvS25fCtBt/gqloPwoqHNCRY9p5Fo0ThKk/OF+wT?= =?us-ascii?Q?RPDcBZsWBMmYqNMYOPz8u/6KsmMHIXhIyJuUP7vlFux3PrUw8sJZNEqzzv+w?= =?us-ascii?Q?DQeXfyqfFvQIPNfAUwEP4EooJC+WkijObSYkoXvsBFnPkslC82P1gPgq4fnl?= =?us-ascii?Q?xMpjniqru40fFt6EV0ZCLhZI/Qzfa60Z5Mdu0XGnRBvDpkupklz/duCi3sxA?= =?us-ascii?Q?l4kKj6IyxltzxDwTSW8zruk23xJz7o6ocMgdZ+4ciFll4V4OMEzQR00Y52xJ?= =?us-ascii?Q?UiGCYQXvMWdisR/6x2YYQ4ai1JDNT2fkl0CnlMeufKO4GmRq0K6Sq+KNQbLj?= =?us-ascii?Q?vsN6Lm/SfONrKSIvphPgCGmYzC7CYmv2/qPXuwPB49SGWDSlb2Om3ZUAhdzv?= =?us-ascii?Q?ZLgSzLiJoeoaBKmDHfpWIIJrGf4NBcAueNPJEK+Vunx4E1YTFWJ2BQKw0SxT?= =?us-ascii?Q?mvtc4n6/eftP7/UYSqXryCkHjf6Ylqwwt06mUAR0V2WJ0GXmGxOzPCbhUjQ7?= =?us-ascii?Q?2FI2SrGUD/K4iXwKfWVcERAVJipRfG8mWfdQ3QDOuW91yOi10IKr5fEmGrzi?= =?us-ascii?Q?pw=3D=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: ZePe0sN0X1InCwDi2llgDNBXdUc+cUaLmzq72Ig9M0fNDD2vZ3VQQgUkrpUFdWDT5WyGwzjmuNtSfHa4jGevas0eZkW10TKQUdxLcxP9aK5sSpg00gVMGI4RYejtdvEjVfdciBhs+hDBJvsYAxuljs+ydxE/gPs31RwqGcNlQ1vUYoGuQO653KMv02OHl0hf9UWpbMOBxqnLPeQn2GIAPQpd4e2//JS9JfD3F5/QgyY8X5jVv7cSVOhDBTsZcoGIevYc0xRnQhS2tLuXo7L/mDJ0rGEnJfyGBYLZpJS3Yn8mly4Tt23JLAh0ixwb6kZpXu++ZbHEXWMS0HJALt+6qkPioWV4KVffFs8Wy5sUWvI7JfVmxnpt8B6NzmGi98YAJ22QHspJfjr5w6l7p9zUkJoByFQI+laQNS2BXBRi0I+RjdC4o2oLVCh4FF4mmjnvu5sNK/GAiodbmW6lgym1wK7ELrRLyonlO1q3gwPSSKDPxQiptG4eGdVVh6ZBGeE445uSe4HjB3DEZJHwN9cc6qZggjrihperGTi8XdmTRmtIJxoOMnS6povlgvTZZmwpuK2qJmtionNbk/EILV9I4cPCAKNMaL52+BDMcyzIW8s= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: a9d5729d-eeab-4905-967d-08ddf0a7dc96 X-MS-Exchange-CrossTenant-AuthSource: DM4PR10MB8218.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Sep 2025 20:23:10.9274 (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: PcI4jTQMhHmAlVhvI1FV5agqCxnUpOLi1t8qoVSXOjoVHiUya39OgsbWdBbgPvkKMhYq09zgIvuPzYLMeG2nxVtRCHrgegJU101Q7OIc1FQ= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM4PR10MB6278 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1117,Hydra:6.1.9,FMLib:17.12.80.40 definitions=2025-09-10_04,2025-09-10_01,2025-03-28_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 spamscore=0 adultscore=0 suspectscore=0 bulkscore=0 mlxscore=0 mlxlogscore=999 phishscore=0 malwarescore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2508110000 definitions=main-2509100190 X-Authority-Analysis: v=2.4 cv=esTfzppX c=1 sm=1 tr=0 ts=68c1de42 b=1 cx=c_pps a=qoll8+KPOyaMroiJ2sR5sw==:117 a=qoll8+KPOyaMroiJ2sR5sw==:17 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=z/mQ4Ysz8XfWz/Q5cLBRGdckG28=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=wKuvFiaSGQ0qltdbU6+NXLB8nM8=:19 a=Ol13hO9ccFRV9qXi2t6ftBPywas=:19 a=xqWC_Br6kY4A:10 a=yJojWOMRYYMA:10 a=GoEa3M9JfhUA:10 a=yPCof4ZbAAAA:8 a=FKJ8-FkX7txb-S-0vFMA:9 cc=ntf awl=host:12084 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwOTA4MDE2NSBTYWx0ZWRfXwkBJiO3WUtzK QiRB8ol+4+EqjFst76eNQSWyqZ2olNKH31EmImYMQ3wF6KJqW98A3PR3R9HzDUG0T6LVxKwD/Gb G9s2az17tOw1sK6mfAwp/QTCTAsyy8CBzNGKIa5M6OCPi9HruzYI4drz68BpfpuKfa8vzjQN3YN wh4c5IkTfku+mc84/TMbGHWaRswtYT85doEZmhLx/n9G8REVOVlYNdbvoYKcLIPN02fPX15976C MF1D0MkeaO0BQ19VBi3ovZtC6namG802ISGNW1BpUE44qpwHHXujD8WoKQy/y8yRV/RxQ182Emc EsRg3/7u24Teg9DCA2fPNtpy5fUU8L+9QXbdaKIvL4qEun2ONsxrNcwbOEW170M1NWtLG/+7KL2 uqh1OvvGAI0u/bK4BqE5yylCa2jj4A== X-Proofpoint-GUID: vwcnyTtryQLKrkGlaQv-ReqeT9Ie2sDC X-Proofpoint-ORIG-GUID: vwcnyTtryQLKrkGlaQv-ReqeT9Ie2sDC Content-Type: text/plain; charset="utf-8" Now we have the ability to specify a custom hook we can handle even very customised behaviour. As part of this change, we must also update remap_vmalloc_range_partial() to optionally not update VMA flags. Other than then remap_vmalloc_range() wrapper, vmcore is the only user of this function so we can simply go ahead and add a parameter. Signed-off-by: Lorenzo Stoakes --- arch/s390/kernel/crash_dump.c | 6 ++-- fs/proc/vmcore.c | 54 +++++++++++++++++++++++------------ include/linux/vmalloc.h | 10 +++---- mm/vmalloc.c | 16 +++++++++-- 4 files changed, 57 insertions(+), 29 deletions(-) diff --git a/arch/s390/kernel/crash_dump.c b/arch/s390/kernel/crash_dump.c index d4839de8ce9d..44d7902f7e41 100644 --- a/arch/s390/kernel/crash_dump.c +++ b/arch/s390/kernel/crash_dump.c @@ -186,7 +186,7 @@ static int remap_oldmem_pfn_range_kdump(struct vm_area_= struct *vma, =20 if (pfn < oldmem_data.size >> PAGE_SHIFT) { size_old =3D min(size, oldmem_data.size - (pfn << PAGE_SHIFT)); - rc =3D remap_pfn_range(vma, from, + rc =3D remap_pfn_range_complete(vma, from, pfn + (oldmem_data.start >> PAGE_SHIFT), size_old, prot); if (rc || size =3D=3D size_old) @@ -195,7 +195,7 @@ static int remap_oldmem_pfn_range_kdump(struct vm_area_= struct *vma, from +=3D size_old; pfn +=3D size_old >> PAGE_SHIFT; } - return remap_pfn_range(vma, from, pfn, size, prot); + return remap_pfn_range_complete(vma, from, pfn, size, prot); } =20 /* @@ -220,7 +220,7 @@ static int remap_oldmem_pfn_range_zfcpdump(struct vm_ar= ea_struct *vma, from +=3D size_hsa; pfn +=3D size_hsa >> PAGE_SHIFT; } - return remap_pfn_range(vma, from, pfn, size, prot); + return remap_pfn_range_complete(vma, from, pfn, size, prot); } =20 /* diff --git a/fs/proc/vmcore.c b/fs/proc/vmcore.c index f188bd900eb2..faf811ed9b15 100644 --- a/fs/proc/vmcore.c +++ b/fs/proc/vmcore.c @@ -254,7 +254,7 @@ int __weak remap_oldmem_pfn_range(struct vm_area_struct= *vma, unsigned long size, pgprot_t prot) { prot =3D pgprot_encrypted(prot); - return remap_pfn_range(vma, from, pfn, size, prot); + return remap_pfn_range_complete(vma, from, pfn, size, prot); } =20 /* @@ -308,7 +308,7 @@ static int vmcoredd_mmap_dumps(struct vm_area_struct *v= ma, unsigned long dst, tsz =3D min(offset + (u64)dump->size - start, (u64)size); buf =3D dump->buf + start - offset; if (remap_vmalloc_range_partial(vma, dst, buf, 0, - tsz)) + tsz, /* set_vma=3D */false)) return -EFAULT; =20 size -=3D tsz; @@ -588,24 +588,15 @@ static int vmcore_remap_oldmem_pfn(struct vm_area_str= uct *vma, return ret; } =20 -static int mmap_vmcore(struct file *file, struct vm_area_struct *vma) +static int mmap_prepare_action_vmcore(struct vm_area_struct *vma) { + struct mmap_action action; size_t size =3D vma->vm_end - vma->vm_start; u64 start, end, len, tsz; struct vmcore_range *m; =20 start =3D (u64)vma->vm_pgoff << PAGE_SHIFT; end =3D start + size; - - if (size > vmcore_size || end > vmcore_size) - return -EINVAL; - - if (vma->vm_flags & (VM_WRITE | VM_EXEC)) - return -EPERM; - - vm_flags_mod(vma, VM_MIXEDMAP, VM_MAYWRITE | VM_MAYEXEC); - vma->vm_ops =3D &vmcore_mmap_ops; - len =3D 0; =20 if (start < elfcorebuf_sz) { @@ -613,8 +604,10 @@ static int mmap_vmcore(struct file *file, struct vm_ar= ea_struct *vma) =20 tsz =3D min(elfcorebuf_sz - (size_t)start, size); pfn =3D __pa(elfcorebuf + start) >> PAGE_SHIFT; - if (remap_pfn_range(vma, vma->vm_start, pfn, tsz, - vma->vm_page_prot)) + + mmap_action_remap(&action, vma->vm_start, pfn, tsz, + vma->vm_page_prot); + if (mmap_action_complete(&action, vma)) return -EAGAIN; size -=3D tsz; start +=3D tsz; @@ -664,7 +657,7 @@ static int mmap_vmcore(struct file *file, struct vm_are= a_struct *vma) tsz =3D min(elfcorebuf_sz + elfnotes_sz - (size_t)start, size); kaddr =3D elfnotes_buf + start - elfcorebuf_sz - vmcoredd_orig_sz; if (remap_vmalloc_range_partial(vma, vma->vm_start + len, - kaddr, 0, tsz)) + kaddr, 0, tsz, /* set_vma =3D*/false)) goto fail; =20 size -=3D tsz; @@ -700,8 +693,33 @@ static int mmap_vmcore(struct file *file, struct vm_ar= ea_struct *vma) do_munmap(vma->vm_mm, vma->vm_start, len, NULL); return -EAGAIN; } + +static int mmap_prepare_vmcore(struct vm_area_desc *desc) +{ + size_t size =3D vma_desc_size(desc); + u64 start, end; + + start =3D (u64)desc->pgoff << PAGE_SHIFT; + end =3D start + size; + + if (size > vmcore_size || end > vmcore_size) + return -EINVAL; + + if (desc->vm_flags & (VM_WRITE | VM_EXEC)) + return -EPERM; + + /* This is a unique case where we set both PFN map and mixed map flags. */ + desc->vm_flags |=3D VM_MIXEDMAP | VM_REMAP_FLAGS; + desc->vm_flags &=3D ~(VM_MAYWRITE | VM_MAYEXEC); + desc->vm_ops =3D &vmcore_mmap_ops; + + desc->action.type =3D MMAP_CUSTOM_ACTION; + desc->action.custom.action_hook =3D mmap_prepare_action_vmcore; + + return 0; +} #else -static int mmap_vmcore(struct file *file, struct vm_area_struct *vma) +static int mmap_prepare_vmcore(struct vm_area_desc *desc) { return -ENOSYS; } @@ -712,7 +730,7 @@ static const struct proc_ops vmcore_proc_ops =3D { .proc_release =3D release_vmcore, .proc_read_iter =3D read_vmcore, .proc_lseek =3D default_llseek, - .proc_mmap =3D mmap_vmcore, + .proc_mmap_prepare =3D mmap_prepare_vmcore, }; =20 static u64 get_vmcore_size(size_t elfsz, size_t elfnotesegsz, diff --git a/include/linux/vmalloc.h b/include/linux/vmalloc.h index eb54b7b3202f..588810e571aa 100644 --- a/include/linux/vmalloc.h +++ b/include/linux/vmalloc.h @@ -215,12 +215,12 @@ extern void *vmap(struct page **pages, unsigned int c= ount, void *vmap_pfn(unsigned long *pfns, unsigned int count, pgprot_t prot); extern void vunmap(const void *addr); =20 -extern int remap_vmalloc_range_partial(struct vm_area_struct *vma, - unsigned long uaddr, void *kaddr, - unsigned long pgoff, unsigned long size); +int remap_vmalloc_range_partial(struct vm_area_struct *vma, + unsigned long uaddr, void *kaddr, unsigned long pgoff, + unsigned long size, bool set_vma); =20 -extern int remap_vmalloc_range(struct vm_area_struct *vma, void *addr, - unsigned long pgoff); +int remap_vmalloc_range(struct vm_area_struct *vma, void *addr, + unsigned long pgoff); =20 int vmap_pages_range(unsigned long addr, unsigned long end, pgprot_t prot, struct page **pages, unsigned int page_shift); diff --git a/mm/vmalloc.c b/mm/vmalloc.c index 9fc86ddf1711..3dd9d5c441d8 100644 --- a/mm/vmalloc.c +++ b/mm/vmalloc.c @@ -4531,6 +4531,7 @@ long vread_iter(struct iov_iter *iter, const char *ad= dr, size_t count) * @kaddr: virtual address of vmalloc kernel memory * @pgoff: offset from @kaddr to start at * @size: size of map area + * @set_vma: If true, update VMA flags * * Returns: 0 for success, -Exxx on failure * @@ -4543,7 +4544,7 @@ long vread_iter(struct iov_iter *iter, const char *ad= dr, size_t count) */ int remap_vmalloc_range_partial(struct vm_area_struct *vma, unsigned long = uaddr, void *kaddr, unsigned long pgoff, - unsigned long size) + unsigned long size, bool set_vma) { struct vm_struct *area; unsigned long off; @@ -4569,6 +4570,10 @@ int remap_vmalloc_range_partial(struct vm_area_struc= t *vma, unsigned long uaddr, return -EINVAL; kaddr +=3D off; =20 + /* If we shouldn't modify VMA flags, vm_insert_page() mustn't. */ + if (!set_vma && !(vma->vm_flags & VM_MIXEDMAP)) + return -EINVAL; + do { struct page *page =3D vmalloc_to_page(kaddr); int ret; @@ -4582,7 +4587,11 @@ int remap_vmalloc_range_partial(struct vm_area_struc= t *vma, unsigned long uaddr, size -=3D PAGE_SIZE; } while (size > 0); =20 - vm_flags_set(vma, VM_DONTEXPAND | VM_DONTDUMP); + if (set_vma) + vm_flags_set(vma, VM_DONTEXPAND | VM_DONTDUMP); + else + VM_WARN_ON_ONCE((vma->vm_flags & (VM_DONTEXPAND | VM_DONTDUMP)) !=3D + (VM_DONTEXPAND | VM_DONTDUMP)); =20 return 0; } @@ -4606,7 +4615,8 @@ int remap_vmalloc_range(struct vm_area_struct *vma, v= oid *addr, { return remap_vmalloc_range_partial(vma, vma->vm_start, addr, pgoff, - vma->vm_end - vma->vm_start); + vma->vm_end - vma->vm_start, + /* set_vma=3D */ true); } EXPORT_SYMBOL(remap_vmalloc_range); =20 --=20 2.51.0 From nobody Thu Oct 2 21:39:19 2025 Received: from mx0b-00069f02.pphosted.com (mx0b-00069f02.pphosted.com [205.220.177.32]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 76D86319867; Wed, 10 Sep 2025 20:24:21 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=205.220.177.32 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757535863; cv=fail; b=WGYUqLViiHHSe+BvnpV+tVunp6x5qoOiArTtbK8Y2vaMTaod3zxPv+CviSEdminkHQcMEjzl/i1kqtu1+hJgEBEszNx45ojwICNnMqVrMoh9p0OdF04iWYhaufXzZKtnCzDhmCcleAKW/zfPOW3MoIRj/VLp2SfESK5Icz5kGhE= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757535863; c=relaxed/simple; bh=/a7pQxcpbyILJh5pfOTQPUPBGwKpqa1Ei0+NsazW+Yc=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=SvP2Gx+6sj0isUMPeMS7XncTPlORQVwhIyP1CK5XXFr2gfGwdf9vt6Ox5I5Iaies6hV8X7iA39LZ73QqF6z0JUVL3HlubfqJCCtcWKsofFlHV00PNkt/aTp3KShke/3CDqPVI/ltr91MVoHc27krvy075Xeq9X/EW6GSQxxVcOA= 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=Crjq4f7B; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=CYP6rE3h; arc=fail smtp.client-ip=205.220.177.32 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oracle.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oracle.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=oracle.com header.i=@oracle.com header.b="Crjq4f7B"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="CYP6rE3h" Received: from pps.filterd (m0333520.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 58AGfpW1009838; Wed, 10 Sep 2025 20:23:33 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=OuBj8M9Fa+IBLDa0PJiJfcoR2DELHVDDJqpa6D9XAig=; b= Crjq4f7BzHFPn/NfujfKt9tbQHKqjq3p5di2bbDZoQmZeDHAi7pZPfahwFk37G/7 Tkh2w4R469o/ZDWk6hvgACe00YP5sm3erdurHS3P9Tb6vQ2eYcxbOTyB5chygrNs hMJXg74h0+jiNSOkH6JdCbwggSzeLEpZCq7HI3GrJYVMK7zvkOes6SzW6ZHUHBvh jYfUqszna0iDQeIXT7iBZcKZe0xdS05I7EjtO8XW/cayudWRpY2pRldINaztE7Op spXPY2d/YvJjpAbMCMNl8IFVP8MioAxmbAH3O3KXrjh+4B5DYNqLklggR3zkyxWJ zWzD51nwtRykpLDFHswdyg== Received: from iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta03.appoci.oracle.com [130.35.103.27]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 4922jgvy4w-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 10 Sep 2025 20:23:33 +0000 (GMT) Received: from pps.filterd (iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (8.18.1.2/8.18.1.2) with ESMTP id 58AJfi4U002816; Wed, 10 Sep 2025 20:23:32 GMT Received: from bn1pr04cu002.outbound.protection.outlook.com (mail-eastus2azon11010005.outbound.protection.outlook.com [52.101.56.5]) by iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 490bdj1cg6-5 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 10 Sep 2025 20:23:32 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=ZonWXkTZ3VrlOZLPav0a7WmKfMKG7vVaeiSW5TVYyhoEP3+roFFJqu+O/2j/mfyrXFAEBggPNKS5piPQpPses69UYAL8gypU+V7vwabTTEujwHyAqv0L6BRmPG5ofK6ghGI9z7vYOfEEao1Jq2S3KMvZH/gJlwDrW20CNVEqXAoHr1wdeC6sRs7UAoJaigm+lIVGwJOo1PY1KgrEtP7roSgCOr2t69Uydhp6tMAyt7NRyCC5KNo/63NKcgb44nRemLEMUvaTihoE4frd8f/L6gVtsWa4ZAOyHQx7/+9Hp2mLf+YU6e2AfUsmrDF/VRayopJZBfCEC2laS2h/Xu+dPg== 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=OuBj8M9Fa+IBLDa0PJiJfcoR2DELHVDDJqpa6D9XAig=; b=ctQtJV+sUqjDQ9wGQ7HJn+b9nrj1UA7LeLLWt9zJX3EAaO63JTqUWVoE6BfLC2yzuK6mzL7FNaZG7lGUEvOCmltkNb+2j2AKiOA265b/R/4y2JlkHqD586ng8W7X5lv38BdNb15nZ1+KKHthm3XRSqf9HcuKYwU8tfUcLXZ2NjbmCkaZSOZh4wWyKBFEMxzQ5WNaDHOBSQD/Pf4CWnV6W+iHx7TeOPrpXYk4v1csDrNzJBeJ3R0enyICY/qD5tn+WB3b3X4udFX7dclg3br+WCMCtecKrEEjNS9+/0VgZktENBQJm0SnCgfN+GbTmScyp97eXXYjXP4lYPMuQKvr6Q== 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=OuBj8M9Fa+IBLDa0PJiJfcoR2DELHVDDJqpa6D9XAig=; b=CYP6rE3htZK97HlnwNiMZEm0MpDlDsOaI3sHQUlFzM8RUsNnJ/6y0HyXJi95hMs5oYc3aQk+OoWfdj5WlmX+zPPbFVfEwzFQzXUEpCKYove8C7A88A7HhlJmyjEA6rL0hMZEGqessCo9r3FF8dG+J5OjFqb4AP5pA2SDE6dUA1I= Received: from DM4PR10MB8218.namprd10.prod.outlook.com (2603:10b6:8:1cc::16) by DM4PR10MB6278.namprd10.prod.outlook.com (2603:10b6:8:b8::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9094.22; Wed, 10 Sep 2025 20:23:14 +0000 Received: from DM4PR10MB8218.namprd10.prod.outlook.com ([fe80::2650:55cf:2816:5f2]) by DM4PR10MB8218.namprd10.prod.outlook.com ([fe80::2650:55cf:2816:5f2%5]) with mapi id 15.20.9094.021; Wed, 10 Sep 2025 20:23:13 +0000 From: Lorenzo Stoakes To: Andrew Morton Cc: Jonathan Corbet , Matthew Wilcox , Guo Ren , Thomas Bogendoerfer , Heiko Carstens , Vasily Gorbik , Alexander Gordeev , Christian Borntraeger , Sven Schnelle , "David S . Miller" , Andreas Larsson , Arnd Bergmann , Greg Kroah-Hartman , Dan Williams , Vishal Verma , Dave Jiang , Nicolas Pitre , Muchun Song , Oscar Salvador , David Hildenbrand , Konstantin Komarov , Baoquan He , Vivek Goyal , Dave Young , Tony Luck , Reinette Chatre , Dave Martin , James Morse , Alexander Viro , Christian Brauner , Jan Kara , "Liam R . Howlett" , Vlastimil Babka , Mike Rapoport , Suren Baghdasaryan , Michal Hocko , Hugh Dickins , Baolin Wang , Uladzislau Rezki , Dmitry Vyukov , Andrey Konovalov , Jann Horn , Pedro Falcato , linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org, linux-fsdevel@vger.kernel.org, linux-csky@vger.kernel.org, linux-mips@vger.kernel.org, linux-s390@vger.kernel.org, sparclinux@vger.kernel.org, nvdimm@lists.linux.dev, linux-cxl@vger.kernel.org, linux-mm@kvack.org, ntfs3@lists.linux.dev, kexec@lists.infradead.org, kasan-dev@googlegroups.com, Jason Gunthorpe Subject: [PATCH v2 16/16] kcov: update kcov to use mmap_prepare Date: Wed, 10 Sep 2025 21:22:11 +0100 Message-ID: <5b1ab8ef7065093884fc9af15364b48c0a02599a.1757534913.git.lorenzo.stoakes@oracle.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: GVZP280CA0052.SWEP280.PROD.OUTLOOK.COM (2603:10a6:150:271::14) To DM4PR10MB8218.namprd10.prod.outlook.com (2603:10b6:8:1cc::16) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DM4PR10MB8218:EE_|DM4PR10MB6278:EE_ X-MS-Office365-Filtering-Correlation-Id: bece5537-e9f8-455a-c22c-08ddf0a7de5d X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|7416014|376014|366016; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?/bbcUiuSdSQ8uP8/kwt04z7ErqJnR85izqT683dT/FFwAUnnzp6C9FinVVHU?= =?us-ascii?Q?hzJpC3h5f8MBwXbTXISrsXnoM5CrXPx4cwzd56g0vRtMxBuMzMX21ojC0RzF?= =?us-ascii?Q?aciMdVNCvT39ITZcn4Tqr7CAVPobgL6uLFdhz59DYNfDWQlPcWx/JJE+2jpJ?= =?us-ascii?Q?BrWioOTaWwqcxSS7hv8InSiW13n9inGIs0fWBVYC0qjxQ1X7KUtdga074ktw?= =?us-ascii?Q?HpC6VKH+evXytDWiNRIy/BfZso+YHzIGb180nBld84C05JAzLnVsBVkbFQmK?= =?us-ascii?Q?9ymrSYwfN4boMA53nmZnGZfpfW2ATbuiFA4V0I/hEaGEx7RfABBu1fG+BcBL?= =?us-ascii?Q?NHJ9CNM4yBqlzQxMQcu4QqmqtRAzmUjkocPnFyiMaywv3YbHv0+P1FTa+xOc?= =?us-ascii?Q?YcJFB1ELLB+f+EeEJ0WL2SnKF7E93H5T5Q29xIbj4jmAcdSi/+Lg5znpJp96?= =?us-ascii?Q?mkzGO6/9ZALBRhF8AUTFjazx/JrJolgz/o2N/vnNjrxfKX/XHJuvLoJ2CYNe?= =?us-ascii?Q?TUHxtBSq+FlE23l0j50K5q6ugwIiOeGvUaYzYqNmLSDm5hlc/U1GTFsN2ooJ?= =?us-ascii?Q?ajOD5pQOxmbs3SgY238aD/rL0f42BpTH1B1a6oOzTs6QZQrW9c4TRf9EprkG?= =?us-ascii?Q?6fAYWmvp/gcD7oFaxNLu2q5iAYWRiKnLO7DaIBNlFcvBSDZ6hgp+inc5LXBf?= =?us-ascii?Q?2wmqiCrYuEedPcb7pfB46LyM5ry7l10MF6Os99M7Otq1cS/3To9DzD+kAMmL?= =?us-ascii?Q?euWpRPYtz8/AWAJjdgvZ42/oKjJw+3zCfP5CuQJ3jPfxqOlDw0akyDX2FQoc?= =?us-ascii?Q?ucg+5qBuYYWXtVCouxASYMyv4+jlo+ypDtjEZnCcLei6UmKB1PFOKfBJaH3S?= =?us-ascii?Q?1kU50Dh1Wb7IWR49yFbtwKnk4DWS0GVLwgvQlKPN7OfeGBhzo0rXEGWlCYb7?= =?us-ascii?Q?SSSHkXVPN7kjvmvkmARjuVZqog9XgrnN1v8H/Ib0uxs4mptbuKD5+UlqRfjS?= =?us-ascii?Q?xel/g/thM+FbWVUmEWS0/4JPHRu5EqOIbCfwBR1NjMKCtHnFL9zdlLkBIWWg?= =?us-ascii?Q?ltpm7JudviYHADhG5iODS7S/CXAFfsuG83Kdh9uLxMHTrh8eExZnwzREKy4T?= =?us-ascii?Q?08epDV17xU7vrupEse/PVsDUuePsKDX4NW3TNJ5UX17yXq2CAFFSL/2wKTnW?= =?us-ascii?Q?xWaL5Y8SoXbEEWRK3VmBtTzbvCEqye+NXjZH3HP0aAfsO0FgURj4mQsWhCGs?= =?us-ascii?Q?TAFFGLg+LLNUG0i/EdTO7kaiievBWEpY+cbfs5GOAUjkLsC3Sprq5IzOB8iA?= =?us-ascii?Q?4M/AOUukdRbZiFgjth/rtvT8Qy52KErHqIeX02bA6/oIL3YscHbr7G4/Odao?= =?us-ascii?Q?qwgFjuUUCrdidlHxPk9lon9PCtcqm/Mcu8Hs3O8/FQ3ceaKmN0T38doGt2Yk?= =?us-ascii?Q?CSVhyjkg/dM=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)(1800799024)(7416014)(376014)(366016);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?BYDNSXKidrZzZGgXL/yT709cMSdHZ31fPXWmzuQxzYvo79NQwMhUX5s3fVMK?= =?us-ascii?Q?tayIoRsSsm7+5jGQacxzCPYwdkh7eAAKqtMtsxfCbVX9X2DpLtiLuWw7vi/c?= =?us-ascii?Q?D3hX1y6qR7FSCpzdh2k0zX66nkXYf9Fxzfd1J8ERv7i+52yb2kLUeeZGlPWY?= =?us-ascii?Q?BrQtZE091BrOM4/aThkAz2yrvkSPJJY+eYOxhxbLZuDQLi6/JKn4qZ8KqsOI?= =?us-ascii?Q?giOV/Sit6rs/afJAGrxKP54Vvl83Ulie1EijwCFStmTuZCyvDrfwGValS6aU?= =?us-ascii?Q?TpcF4F5Y1MbjzRzTG4QCKb6RzOqGXRRCRUs+zDBdcfRENgUjwQePsXOmxDNU?= =?us-ascii?Q?CZXd183if7OWf6fReQ9Si8T64r5JpT7zO/DDNWMXEyN3KOrFD4V71bn/8A9U?= =?us-ascii?Q?sPL+OgKMyrl5l8q3Gf6KgTW/PTPmfBPFGSPOyrlNTbBMoPwgK0qjvKHAiLAC?= =?us-ascii?Q?CL0R7OYRQpXA9j55BkXA04ZuV6I6AdJXx+SLWu2GwYoTjt8jyYHYsJgO8gGD?= =?us-ascii?Q?Z5/NKTMW8i0IiD810Emdp0S8mnatYVX/g4sOLMzSpg3NtDZbN2RGUwB2AVyg?= =?us-ascii?Q?7hpZNCOEAr8NXijTLgzi0qiRxJq1s3Oo4/eIQC868Nnfi3mkafCVN9TvFEQl?= =?us-ascii?Q?8UvkmCYhC7I0b3HD8fz1MvO/JfLUAO+Khm/LMSiydcGFFA5MQRlV9/BHn2At?= =?us-ascii?Q?ZxgL8oWHtkxco/py3xhKRkWqH2C5cENDL4j342vdXc/bSdTRhOzhBPjjwtVH?= =?us-ascii?Q?w1Mmbb5JStHnFuiNSAhXm/NgqznZatwjiZBTimqwV8PuSXwIuy+vxZlCrnaP?= =?us-ascii?Q?mdbWEhcyglfbBxrPMGG4DcQC89M1XUQdOqVML7nokEwxNPrsi1uzpZ03EqCU?= =?us-ascii?Q?W6zyFim0QpROFYN+Abcz0ueGUIr/cOOzcRVWgCYHpmLsHn5gEG8J+BMCteCU?= =?us-ascii?Q?SlpKw8DytUiTHLbr9spZnY7sZiFqRglO/l9Lp9dh//S+MwSRoVOt20NkBBxl?= =?us-ascii?Q?dPaRUCLEPjUbf5CyQdONxHaJ8kAzRZd51qoCZ1G15AR5zqQ5mWXiGZpneCrZ?= =?us-ascii?Q?GfZzMguBDv6vabQQymAW5crdF69m+kJSG/kQ6AZOPR1xS5b7lk+zpco8OriX?= =?us-ascii?Q?/vkL+vlRkkYRcwwm3kvl+DQgX+EkTHRY6xXCcAxbrKwQ+UoOVdw6huRoI8aX?= =?us-ascii?Q?8qvHSKIJ3OQFrfM631jR+pRb5Nhl9UFvRd9UJYtdAwpXgUYuk7EtKWEpWqaF?= =?us-ascii?Q?vfRcuHra1ZSitPzVwIRPfXc8dpb0hroyC2kggFRjA7ZzhFkLzLYqsI/BZOUd?= =?us-ascii?Q?MwQRT7+F9JlG3kqQG5XqdSbGaYeEGqF1pv2cE+VMFnBkZ93bo8iQ9M+z/naI?= =?us-ascii?Q?Malmr3ep0iJK27TfNHTT59pjM8oulTaRfsVW/5oAdRLVTkXQhwa+82YvgADH?= =?us-ascii?Q?XrzQYla/6HjSKERohWJkG5UrCCnlN4VAdH62ffw/g4VxQKF+CVfgJrKVF+K3?= =?us-ascii?Q?O/vUkEsTnxdhSkNpW4c67/ELNABzVRXdvOUZjyTpIWnSKnyz0NYwHozRkFVJ?= =?us-ascii?Q?zrA2PrKRa3uZTsJSzCmEEor3AoWDWyl2mVGG/T6jeHxxQfdn3SfQ9QB5vZjv?= =?us-ascii?Q?UQ=3D=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: 6h/3YwwIG+fCWtEdJHhBXqEo4zXSXm79+xOVJ+QF+A2XfzRXFtXIE+IQrRifjHmDNESlg9SnShGeDuL2WhDFybkX2MwwtdyJIZecgxlfZ0AXCm5f6MjTD2bPmnO++JS4NR8XyZoht7dwCTYrxhDoBszTZ3sDplYmYTVktxPQ5RJPQW9fw8eg78X2QsjFtfNcDRwEhiZ5w0pcdAfOJLddasikvKEI5o3hVhez2n9U30bHx6J3KxbPk5fkuCcP10UYl7lNZvUVP9gALRx7nQ3yMS47EeOyvDfUS4VoaRDbMjizLxYOWjKbTB+UmU+/7plDFBVZzMZc8JjBHjckl+MdXbIVsowaQKocYdjDuNECzFH66qIznWIhpiLB0UHSc8Koh0gKhkVvSQaZaWIGY1RNBXxe3+LLZPd1qX1qXjL2IsIUQNPB80e3cWwTQZygN+svUxMgr1V17Nw5lyQIcUW6AkyvtzKxx9xE1CdFYc9P7DCwPZ5qANuXELMCsQqFrdGekSok168huHukelZysiQhAksALrJscnI84Ybsw7k7DI5/idfMaS6JQCf/VSYQSfF/xWXHFMHaS5AFQ0sC9+MV5+z9Zkn9N4SMHUmOvCUHvo4= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: bece5537-e9f8-455a-c22c-08ddf0a7de5d X-MS-Exchange-CrossTenant-AuthSource: DM4PR10MB8218.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Sep 2025 20:23:13.9396 (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: 8sHBeGcrz06BAaqxWHn44XoRNewcqOP0cLpKG7zeFhw071msETi1VB0HkcdAu3GMJ/q3Atjo8i7+plOmJ+LqCvhRq7F7MvxYGmcb0l8PKps= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM4PR10MB6278 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1117,Hydra:6.1.9,FMLib:17.12.80.40 definitions=2025-09-10_04,2025-09-10_01,2025-03-28_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 spamscore=0 adultscore=0 suspectscore=0 bulkscore=0 mlxscore=0 mlxlogscore=999 phishscore=0 malwarescore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2508110000 definitions=main-2509100190 X-Proofpoint-ORIG-GUID: TRQUnQ-xRkryZD128SitOB895Mo1JVom X-Authority-Analysis: v=2.4 cv=PLMP+eqC c=1 sm=1 tr=0 ts=68c1de45 b=1 cx=c_pps a=qoll8+KPOyaMroiJ2sR5sw==:117 a=qoll8+KPOyaMroiJ2sR5sw==:17 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=z/mQ4Ysz8XfWz/Q5cLBRGdckG28=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=wKuvFiaSGQ0qltdbU6+NXLB8nM8=:19 a=Ol13hO9ccFRV9qXi2t6ftBPywas=:19 a=xqWC_Br6kY4A:10 a=yJojWOMRYYMA:10 a=GoEa3M9JfhUA:10 a=yPCof4ZbAAAA:8 a=obMSAg19tZQ7Rrc9VVEA:9 cc=ntf awl=host:12084 X-Proofpoint-GUID: TRQUnQ-xRkryZD128SitOB895Mo1JVom X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwOTA4MDE2MiBTYWx0ZWRfXyjNRfq12RVpJ sNwiotSkCUvTO3Wx61x3HhmNMlz3O/v1/bd6QGdjOJsWbCz+Chb6+j9+kDfEwfb1a7zf025SsnL qIg02cmN/bxic8dR4xZgslgUYKZcmfnfD29F/qnC+PYcygYmTep4/NCxEAk4gmwm38KqQ7chk15 eZUNwmATR+AOWn2oIlfz0HMC5jbv4u9iE/VlymHGm1oMlpUDn4vLkWw7dWDZNUotoCSQsa0yJt0 mglwU7fZ0/q3P+qZ2UelNoHcASVOzn9S1cd5SUzANi4oucMKyJZwQ6AdJVHY9Er/yxMxUL3NbOn Q6+d1nv6THIUcn3y4E4wUoAUQDGwKnqRApA1ta61F6NSaJb0tHIazeKI/og0fE0L53EahAF/Iig d95kgG7mDOzN1y8gaZskadGBYLeU7A== Content-Type: text/plain; charset="utf-8" We can use the mmap insert pages functionality provided for use in mmap_prepare to insert the kcov pages as required. This does necessitate an allocation, but since it's in the mmap path this doesn't seem egregious. The allocation/freeing of the pages array is handled automatically by vma_desc_set_mixedmap_pages() and the mapping logic. Signed-off-by: Lorenzo Stoakes --- kernel/kcov.c | 42 ++++++++++++++++++++++++++---------------- 1 file changed, 26 insertions(+), 16 deletions(-) diff --git a/kernel/kcov.c b/kernel/kcov.c index 1d85597057e1..2bcf403e5f6f 100644 --- a/kernel/kcov.c +++ b/kernel/kcov.c @@ -484,31 +484,41 @@ void kcov_task_exit(struct task_struct *t) kcov_put(kcov); } =20 -static int kcov_mmap(struct file *filep, struct vm_area_struct *vma) +static int kcov_mmap_error(int err) +{ + pr_warn_once("kcov: vm_insert_page() failed\n"); + return err; +} + +static int kcov_mmap_prepare(struct vm_area_desc *desc) { int res =3D 0; - struct kcov *kcov =3D vma->vm_file->private_data; - unsigned long size, off; - struct page *page; + struct kcov *kcov =3D desc->file->private_data; + unsigned long size, nr_pages, i; + struct page **pages; unsigned long flags; =20 spin_lock_irqsave(&kcov->lock, flags); size =3D kcov->size * sizeof(unsigned long); - if (kcov->area =3D=3D NULL || vma->vm_pgoff !=3D 0 || - vma->vm_end - vma->vm_start !=3D size) { + if (kcov->area =3D=3D NULL || desc->pgoff !=3D 0 || + vma_desc_size(desc) !=3D size) { res =3D -EINVAL; goto exit; } spin_unlock_irqrestore(&kcov->lock, flags); - vm_flags_set(vma, VM_DONTEXPAND); - for (off =3D 0; off < size; off +=3D PAGE_SIZE) { - page =3D vmalloc_to_page(kcov->area + off); - res =3D vm_insert_page(vma, vma->vm_start + off, page); - if (res) { - pr_warn_once("kcov: vm_insert_page() failed\n"); - return res; - } - } + + desc->vm_flags |=3D VM_DONTEXPAND; + nr_pages =3D size >> PAGE_SHIFT; + + pages =3D mmap_action_mixedmap_pages(&desc->action, desc->start, + nr_pages); + if (!pages) + return -ENOMEM; + + for (i =3D 0; i < nr_pages; i++) + pages[i] =3D vmalloc_to_page(kcov->area + i * PAGE_SIZE); + desc->action.error_hook =3D kcov_mmap_error; + return 0; exit: spin_unlock_irqrestore(&kcov->lock, flags); @@ -761,7 +771,7 @@ static const struct file_operations kcov_fops =3D { .open =3D kcov_open, .unlocked_ioctl =3D kcov_ioctl, .compat_ioctl =3D kcov_ioctl, - .mmap =3D kcov_mmap, + .mmap_prepare =3D kcov_mmap_prepare, .release =3D kcov_close, }; =20 --=20 2.51.0