From nobody Mon Dec 15 21:50:44 2025 Received: from mx0a-00069f02.pphosted.com (mx0a-00069f02.pphosted.com [205.220.165.32]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id E06F7A2D; Fri, 9 May 2025 12:14:28 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=205.220.165.32 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746792870; cv=fail; b=uUIxtZaIHoqb5y973TZdKFpM2IyP9x7EuzlcDaKniFxIbEfsEoCgRD89KmD0ZqTndsNuvEzGB3Bow9yYjTMZP3whiRJ4dj8DfT83faNgK/LKyMH6X2yqAI8Xc0jBxEkDN7cyEJ036qv8Hoyu56lVk+Z6RrIDgtyxldWDN8RHiDI= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746792870; c=relaxed/simple; bh=CfSC8moS/tjPA+gWhZ4OjlPcRIX6q7cdYpg4tWf0GKo=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=luJgh0KCJkOWTO3wUzpoT4qdQpNHTUR50/gkMj0MYXQr33n1FKeAMvrTiXZEWPM+JIOIcI1L+sX0wcX6ZgQ4mR/4pstIksXKf271GUvpucIOuKdqy9E6O4FcQoXb+s5PplqY00Zhq65YK6IhWdiC/zjmeodR1qmGl2VINJ8dNmo= 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=Pog26V/T; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=ngz1Z+UI; arc=fail smtp.client-ip=205.220.165.32 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oracle.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oracle.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=oracle.com header.i=@oracle.com header.b="Pog26V/T"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="ngz1Z+UI" Received: from pps.filterd (m0246617.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 549CCcLq015768; Fri, 9 May 2025 12:14:08 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=F/umv6SM8lv90d28JgH5BHVZnf9pM8OMMpbyh9C2mSI=; b= Pog26V/TYdZqLsmZccXr+k/Jf2JANA4Kb0cFXEhbIbuPmI95twcQ6e6hc4oGDSpR Rmx7wF+BfR9vsOGDe7iZQ0Yqu+pCEs2I3GHxvihN3YtWAdo0cfOZyrogO33KMMwF KOP5j3br1WNNPFkKSHjTLFO6431E3S4+Ni73imfuiFKl9oqV5sWAKkojDtUf5HG6 E8pb/vQexx4HtmNQexmj5jMz8Yl8ETEfPOd9+U2LJl3FmloUlh6ONqDCysX7zII/ slIeIimPu17gH3S37ZzzBSqtveRsYmx46iLU1K7NKP++ptEUzSX/oqrvN4ReqeNK yBkLQ2b2rEpg6+jiVtejlQ== Received: from phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta03.appoci.oracle.com [138.1.37.129]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 46hhgjr03p-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 09 May 2025 12:14:08 +0000 (GMT) Received: from pps.filterd (phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com [127.0.0.1]) by phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (8.18.1.2/8.18.1.2) with ESMTP id 549A1gMc035454; Fri, 9 May 2025 12:14:07 GMT Received: from cy4pr02cu008.outbound.protection.outlook.com (mail-westcentralusazlp17011029.outbound.protection.outlook.com [40.93.6.29]) by phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 46d9kcx71v-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 09 May 2025 12:14:07 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=L1JdNvkGatKbK+eIotoJfJxmWTRIyCVdNK59MrRCJZfU/2zuwkDdjAPraEKqxfcJGGedYk94T2jPpVQ8Ppn3ny6AK8ykw/BMIORWExcby4IP9HcD45dkjpMqfMGjiSNEo+0sXXOAkLcBIgRKnzPcZR05sJv86w5yyPEA8DEwVx05JiMsp7XnuCUyp8Urx69PVTu6FGgDJpJycx2b+2rt1haQnxHqV9oSGoiNVcfo78anogkB8DCCj2E8oTWDDwUCHz1/xoDRHyoKweUN4otdIZH7wtD3mC+jcT1sE8DDzBhS99AJRP8Ywh5DLlMFXNAdFHY90uDCHb4uR9lhLKqs6w== 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=F/umv6SM8lv90d28JgH5BHVZnf9pM8OMMpbyh9C2mSI=; b=Xn28iH5+fRiEsZ7Q6JS/sPL+oCdFlRKegeWAY4OMdhDG1XeVNVNtp9q2z1FG28zJ/QDwbNQ1AmxMWYthn99hv+xIKz2UB3pYO4Mu/4O4EhgjpGwXGlWX2rG+lmk0+EysH3KXYWM6Eaj5jcLWr5sOZ0GxCSj48Cc2wD3EmyiEiXxX2JQHTgdcZfSTquERw/D3GTQB9KZPjbbcrKOxwKqM2I9d69dnu6Ekh/4Xw886/H/VtWulX5dzj04/AR0irLMqPswgWAUbNS1dcV/lv9bUidE+krJj9A9GMAi7d7LMr4MSEY8uC5I+brqGcu9V2y90b5ZMyB0NdFOzVBI+Kex8Rg== 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=F/umv6SM8lv90d28JgH5BHVZnf9pM8OMMpbyh9C2mSI=; b=ngz1Z+UIz9hY0lXymoSR9XTFarz5wEQRSwbF/LniVY5froFf8WKFpNngMOImXArVrRB3JFkb4kum9M/NE8pKufZ2HL6Ogw1SPOh0jzNxFZdWmqAlwyQMRBjaNRz9o77UyK3NUtPzbOAbUp5FxYtCf7aGA0J0+HBXaaDYBVExsGY= Received: from DM4PR10MB8218.namprd10.prod.outlook.com (2603:10b6:8:1cc::16) by SJ0PR10MB4718.namprd10.prod.outlook.com (2603:10b6:a03:2dd::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8699.23; Fri, 9 May 2025 12:14:04 +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.8699.022; Fri, 9 May 2025 12:14:04 +0000 From: Lorenzo Stoakes To: Andrew Morton Cc: David Hildenbrand , "Liam R . Howlett" , Vlastimil Babka , Mike Rapoport , Suren Baghdasaryan , Michal Hocko , Jann Horn , Pedro Falcato , linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org, linux-mm@kvack.org, Alexander Viro , Christian Brauner , Jan Kara , Matthew Wilcox Subject: [PATCH v2 1/3] mm: introduce new .mmap_prepare() file callback Date: Fri, 9 May 2025 13:13:34 +0100 Message-ID: X-Mailer: git-send-email 2.49.0 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: LO4P123CA0640.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:296::21) To DM4PR10MB8218.namprd10.prod.outlook.com (2603:10b6:8:1cc::16) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DM4PR10MB8218:EE_|SJ0PR10MB4718:EE_ X-MS-Office365-Filtering-Correlation-Id: f0b8ae5f-ac41-4faf-a8a1-08dd8ef2fd4b X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|1800799024|7416014|376014; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?3/h45/FxonngegXDF3nZ+rKr7pKx1Tlkjq/1iWFZQIZE73JEDzBzjgOrhkoe?= =?us-ascii?Q?f6XZGBBMYgNqWbosNjrVS/4ragAYhMEgaLI/61pFR3CnI+M1IP5bRaxz4e03?= =?us-ascii?Q?NZoAg+FRWtTimsXyDYVbD8Vc24wvgiSQqwmdZ8GbpDImeOqu6Bz1bwxlCz+N?= =?us-ascii?Q?TFzBdqDvO3BnONJK7ye3w1AskXV7zqglDkfPq/igS/X0NN5osVDtuzt22nGq?= =?us-ascii?Q?gnYeiK44DNbF/Ef1XgUHgC+OCiaSMj2usS1dbKbpASrXZVOW5a0lJXvk+Z6Z?= =?us-ascii?Q?xzY0jIrp7tbR9boEuyL/EzI9ZzKSzG8xt+6/CY5ff67KoLf/ikF5ShDXYOTg?= =?us-ascii?Q?6nU+zTW8ShojF2gvJvKnwkraNOVjaVV4S4IUm7I1xif66KGkX9dYg1GHKPIG?= =?us-ascii?Q?dOKr36zpe16w2AB63m3TFFoi80hxfCnBIjmSA2ty3E3rfHiEFk9HjgHFDCVp?= =?us-ascii?Q?v8vxIIONKqHb0K8E63GccqzFDOFN8gpXTt8Y2OMlzgzBl3xJw8Gq6hnJXcLW?= =?us-ascii?Q?gmcNUwfR7YcZmy3+/9iGkWL/6KCfBbzfHUbhYw6ZOycpjRGATaMNHplA5Ifk?= =?us-ascii?Q?FjvFb2bkDpS6gYS75yDI4OFNG0hNIk4OaN5u/dJeAGSdciwqeCi1wLiEnRBP?= =?us-ascii?Q?cD7HLbFYCZrambSI4ONNoChLbAacRoTf4NqdE50r5/cBDdyIncFnSwzJx6h+?= =?us-ascii?Q?32M+0Qt4D1STRykamvoUJ8RKKnT6QsRZ+NttUgKCrmBlN1ZuEc5WQSh0Udz/?= =?us-ascii?Q?F/dEWAvHAtAYGDC3tJ+2KAzEGbJyn4q96jme8bCfP5lqlSF/p8fYs3Xvc3GZ?= =?us-ascii?Q?9cTJpU8V7kUwdDmW2NC+Qf23acfi3G12XZ163662qGMw258A1+0idaV6doZo?= =?us-ascii?Q?GijSFLpgtAcSeR8E6DzM1eyWmf4NDxHA43KBYFGwRRG280QZqX2zikEvgghr?= =?us-ascii?Q?y5sSNBV4hH50EZwckXQi4EpezEmZWrbvDQAw8fRCtKg32Nj3RktCT/gL2Vxh?= =?us-ascii?Q?Rmi0XcPZZFIYBoNSf1g+Qrk5zVUGZV83OJT1kP+RC2DFIVgnqOdm9SwFYY7N?= =?us-ascii?Q?tByTWz4jm2tb9fHGn6awj4/sOvw7YSda7wf+5muRk/RAcPQ4GoE9P/0GjKQg?= =?us-ascii?Q?+oeWFBWwkK9/KISOM2vKwVRToCewtlj6p14Y1TbTRGNGNKqV6OO26jCr5nOP?= =?us-ascii?Q?QS49d+6tVNwuSPezNq2070H12ccEsIF6i1JtnfJe+aj8BFSLkif2f9jaSGdh?= =?us-ascii?Q?QzV27rRKRSdCIlvh71wZkAwr2mkO1aEh/leJEzLfU8LLcKgb7sdcOutmQIg2?= =?us-ascii?Q?z4733bNWrg7xxM8VubFqbFqkoQeGsAE7tUXnNSuorkp9njic0Q1ZZFtvzZ52?= =?us-ascii?Q?k3q+fn1c6223FTnLprVKHa3GExqyKQMbYoa5JbIc4ny/A168jRTVVlTOrCDN?= =?us-ascii?Q?NEgXl9Q5USc=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DM4PR10MB8218.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(1800799024)(7416014)(376014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?w3o9aPjCNejxINjyaPS0NH4vjw7gntoooOET4q4281vRaAoAKXb9t7QNXLNd?= =?us-ascii?Q?z5n7JBDRBZ2HJtg3Qs9grgcAaQYPZaLRrk4v9Y7/TzSljVKCKMDjqHESgALA?= =?us-ascii?Q?V5OY6lXZR9deGs5IpVMQtNCuJhpCKOB+KQ8RnkGtwFwdyU48e9Cpq8ijSC9a?= =?us-ascii?Q?eUpHsiFIeOSYRMUvWYrRtdu4ja9+M0Oa9A4sQ0zwudH7ToTPr/8UvIlqwvmA?= =?us-ascii?Q?A6V8+GnzkNnN+ZCaWln30TcSt4KMOi9oGFVBVmvpYNXMWcr2jk2qAq2lUnME?= =?us-ascii?Q?zdN4MuSRKT6OPQcpr9fK5Fk7ZRsAMG1/jvY8slpiMGt09pTJ9H2YtbFUB6aY?= =?us-ascii?Q?rRMxq3RR5UVsSP/7Sn2aM7ni18/WL/lia8k8VeDvaVkr+dIqnOL7xi3y9QK8?= =?us-ascii?Q?GGUfluzgSboDdopSWGUtQxXsgfG4WjEnPyO7Cn3yIZ0urjkL3JiJ0LbWu+Cf?= =?us-ascii?Q?jmF6moIAFqNqBxoVZDnktsontlyeStlSHbNTl/QeQLZl2Y3IzvoHSWoaJ/Xw?= =?us-ascii?Q?0QYTxkWxZ9b3LPg888hpcfefAt3yL0DmPr4Qrcr2KmJ0HjcFjnDB6BO22mZD?= =?us-ascii?Q?Sr1zlJ3hn+mhbGJDQKiJkd6Nk2P0eUFEzbIjE6C7ZCewPmQpfo3NJDiYwFxq?= =?us-ascii?Q?qk/YfoLS1HaV0p8T0JkO5EgYTrxsSCb6sTjMXooq+A87FxoOiM11W2s71Rm4?= =?us-ascii?Q?A/imN1/R2BCx4Qi4CTbMdGroYlq4zPf2a5WzDO4jQzbpzTH+sS5QcEml+MWd?= =?us-ascii?Q?HD13vJbfU4r2O+zDSr9RG55Eu3sCKnyoCL1M10PC5hYP8kJLaeqmHK29X9BQ?= =?us-ascii?Q?e0O+Var0d2vOX8JZv8X3AORPm+ftvOF57bTyXwGB+MQ5hSceixyX5dUSwLDG?= =?us-ascii?Q?Aj/1KgevFSMI1BEj6yge7C6blsJmjfrTZngKa3+Jnb5x2Ab4sUKrr2LP9kT6?= =?us-ascii?Q?ok81UYZnsR/ev795WPwE5YG4KuPGx1pa4IiYQldiGB8n1mzfPQgmAcWPsP56?= =?us-ascii?Q?+PvFDQz9TM9R+g8MLOtUsCO46C6qMTJz+VpAYKtQ+wAgLo08k4qIm27z+z3p?= =?us-ascii?Q?sITg9FNKJLse0aHJxBaxPtbCLYqRt5sP4jYF4htR13ADhqklODwkI6rTc5wg?= =?us-ascii?Q?DU0kZ1m+sGYa1484jFDQBHhXfbDJVukPKST9RXtAiDT/IYckLZrYoJgUDZyp?= =?us-ascii?Q?9qHCQ03mnJKrfgsCLk4X+j3c13HhZAiKZGM3gFD5H5nkfbE8wc2Z1iA8h/dP?= =?us-ascii?Q?PqT5FIDlgJkVH3VZ8+mmKh/NL7wWMAeIUBhqD6AivBxD17rhE1HtWtfG3y9a?= =?us-ascii?Q?5+sRh61hKwSrP7xQqRQ7q2jWFhlyd5y6for8x2zsCDsANBLWGjSgXdah2qlO?= =?us-ascii?Q?PC65GeUOqzv99kZUs4f+4YIqFstajWvO+98JligKSuQVaSUHItRFr9jfuar1?= =?us-ascii?Q?XRhCQWudlECk0zncmF3gfodOuXraKGsmKCBPh5Du4RyCJtW3lH77aOXmA0lj?= =?us-ascii?Q?FUF8YA2S4Ej0ED/45dp+Bh7/fISgmVlDXN/4f60TEhOlMEBHxgYtubHBbIR1?= =?us-ascii?Q?nOrCLPu5SO27thnc2fLS9gOJ9++PhZaGJvLUKRpao5Ph1tOTLDZE/X4d319p?= =?us-ascii?Q?hw=3D=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: BAOSZG+LBYWEZT+Y5/umsrmh4t1kWv/K2prdeMRmYAl/HkRXk4ok2rBSBL/itSlGvoFMcNIBi90HKEVK2iSClR8HFMImt8iRalcgZsGjC6d/K1zrhWx7QU4uSahSBil+sEiFmVgWmvaFYGPaGYy71wYCRF2uoCbHwEcg78IZpFBn8keeBoxp2ZUj7ZsCwxq9mrTKSJo9j5ucNEo6ixKTZ55d8nhvqfOgfKGEH5rqKH5xPZn5F5+FnSAWa2urXHJpMJkJX3BqCcOpMRdeNugw7ZfnDuSYepADPtb+p9JKTEgyXQncp65v3PokEg+kO4VkYKSHglnOStTPiwh/1C5HH1N9yafktWjjDHG6bqme4CW+egkZ8e9qyn/v2/QhXTaTDKEvq99XXTF+nPq6KzgTU9M2NpDyUKZSYLnjJkmHf6gMiKNM0dBjgLPKiDsPuHl1HK/HKJ/ME9DbEuDlmTilLVDefH6CoGi4JnrqP6GtQqRpcWY0Zl4eCNiocag2C8Mv8pvCXMTvgP2WJuJ4Aqe+tm8fpvEBI1JvLr7ZlUmWHBeoGWTAv1qz3sSvLtFAGZ1P45iuuPy7UGS+CD0oRmO6C61IAq1f7gurYUVn14ZETcc= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: f0b8ae5f-ac41-4faf-a8a1-08dd8ef2fd4b X-MS-Exchange-CrossTenant-AuthSource: DM4PR10MB8218.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 May 2025 12:14:04.1182 (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: 449NsqI7lfcaJsbS8wFps3SrGXWAz9WIAla2RIti+PBwUGlUp0I+VpZ+vrVTXUpVXv98waVQASdS+xgJsIJODVYrPFIndPEHo6YED2otMAM= X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ0PR10MB4718 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1099,Hydra:6.0.736,FMLib:17.12.80.40 definitions=2025-05-09_04,2025-05-08_04,2025-02-21_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 adultscore=0 phishscore=0 malwarescore=0 spamscore=0 mlxlogscore=999 bulkscore=0 mlxscore=0 suspectscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2504070000 definitions=main-2505090119 X-Authority-Analysis: v=2.4 cv=HOjDFptv c=1 sm=1 tr=0 ts=681df190 b=1 cx=c_pps a=WeWmnZmh0fydH62SvGsd2A==:117 a=WeWmnZmh0fydH62SvGsd2A==:17 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=wKuvFiaSGQ0qltdbU6+NXLB8nM8=:19 a=Ol13hO9ccFRV9qXi2t6ftBPywas=:19 a=xqWC_Br6kY4A:10 a=dt9VzEwgFbYA:10 a=GoEa3M9JfhUA:10 a=yPCof4ZbAAAA:8 a=BnYvykHrKgfMS8ox0bgA:9 X-Proofpoint-GUID: u1rnVcs5m-ZqMZqoWszTXfD9CR5a-X6v X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwNTA5MDExOCBTYWx0ZWRfX4fvf5Ti8RQu9 6PFfeJZ0OGy9Vh/zbKGo7PCgI+GdazeI0hCrEwH1PzDKKMW0sW/re2u217dAuCwUX72y3DUIJjo 0+DKxvrh5Fx1nwL/NLei2BwDQKZnhULNAasVkXQhhXpP/TdOjw19yHCwldozW0tUwF9my2Z9cL0 g0UlQT2b3YX+kKgb24BW8CvM8cfet96wYVmdvQ4KVDX4iKmJB4XE4wSuM9qK0hts9FU4b+zwDYq DUk8GD9+pxPoJHDRLIa7QUyIphqVCNa9RrGW3HamaT4QwIj7S1E0/4rqQs0R2B/MEy1StbB4hJ6 tgDiMnDJly+B9NLqRGHMF++iN9PXbTLd2zwDPux1PeKIPbN8ubASjwi54pV52JYrQqrli1Kkoad YekualPrA+svhXFdoDB+NHL6dkWx4+/M/cRtEmnowILG37ZmPR3tIZrQoMkaZKPW/cPsewaT X-Proofpoint-ORIG-GUID: u1rnVcs5m-ZqMZqoWszTXfD9CR5a-X6v Content-Type: text/plain; charset="utf-8" Provide a means by which drivers can specify which fields of those permitted to be changed should be altered to prior to mmap()'ing a range (which may either result from a merge or from mapping an entirely new VMA). Doing so is substantially safer than the existing .mmap() calback which provides unrestricted access to the part-constructed VMA and permits drivers and file systems to do 'creative' things which makes it hard to reason about the state of the VMA after the function returns. The existing .mmap() callback's freedom has caused a great deal of issues, especially in error handling, as unwinding the mmap() state has proven to be non-trivial and caused significant issues in the past, for instance those addressed in commit 5de195060b2e ("mm: resolve faulty mmap_region() error path behaviour"). It also necessitates a second attempt at merge once the .mmap() callback has completed, which has caused issues in the past, is awkward, adds overhead and is difficult to reason about. The .mmap_prepare() callback eliminates this requirement, as we can update fields prior to even attempting the first merge. It is safer, as we heavily restrict what can actually be modified, and being invoked very early in the mmap() process, error handling can be performed safely with very little unwinding of state required. The .mmap_prepare() and deprecated .mmap() callbacks are mutually exclusive, so we permit only one to be invoked at a time. Update vma userland test stubs to account for changes. Signed-off-by: Lorenzo Stoakes Reviewed-by: Liam R. Howlett Reviewed-by: Pedro Falcato Reviewed-by: Suren Baghdasaryan Reviewed-by: Vlastimil Babka --- include/linux/fs.h | 25 ++++++++++++ include/linux/mm_types.h | 24 +++++++++++ mm/memory.c | 3 +- mm/mmap.c | 2 +- mm/vma.c | 68 +++++++++++++++++++++++++++++++- tools/testing/vma/vma_internal.h | 66 ++++++++++++++++++++++++++++--- 6 files changed, 180 insertions(+), 8 deletions(-) diff --git a/include/linux/fs.h b/include/linux/fs.h index 016b0fe1536e..e2721a1ff13d 100644 --- a/include/linux/fs.h +++ b/include/linux/fs.h @@ -2169,6 +2169,7 @@ struct file_operations { int (*uring_cmd)(struct io_uring_cmd *ioucmd, unsigned int issue_flags); int (*uring_cmd_iopoll)(struct io_uring_cmd *, struct io_comp_batch *, unsigned int poll_flags); + int (*mmap_prepare)(struct vm_area_desc *); } __randomize_layout; =20 /* Supports async buffered reads */ @@ -2238,11 +2239,35 @@ struct inode_operations { struct offset_ctx *(*get_offset_ctx)(struct inode *inode); } ____cacheline_aligned; =20 +/* Did the driver provide valid mmap hook configuration? */ +static inline bool file_has_valid_mmap_hooks(struct file *file) +{ + bool has_mmap =3D file->f_op->mmap; + bool has_mmap_prepare =3D file->f_op->mmap_prepare; + + /* Hooks are mutually exclusive. */ + if (WARN_ON_ONCE(has_mmap && has_mmap_prepare)) + return false; + if (WARN_ON_ONCE(!has_mmap && !has_mmap_prepare)) + return false; + + return true; +} + static inline int call_mmap(struct file *file, struct vm_area_struct *vma) { + if (WARN_ON_ONCE(file->f_op->mmap_prepare)) + return -EINVAL; + return file->f_op->mmap(file, vma); } =20 +static inline int __call_mmap_prepare(struct file *file, + struct vm_area_desc *desc) +{ + return file->f_op->mmap_prepare(desc); +} + extern ssize_t vfs_read(struct file *, char __user *, size_t, loff_t *); extern ssize_t vfs_write(struct file *, const char __user *, size_t, loff_= t *); extern ssize_t vfs_copy_file_range(struct file *, loff_t , struct file *, diff --git a/include/linux/mm_types.h b/include/linux/mm_types.h index e76bade9ebb1..15808cad2bc1 100644 --- a/include/linux/mm_types.h +++ b/include/linux/mm_types.h @@ -763,6 +763,30 @@ struct vma_numab_state { int prev_scan_seq; }; =20 +/* + * 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. */ + struct mm_struct *mm; + unsigned long start; + unsigned long end; + + /* Mutable fields. Populated with initial state. */ + pgoff_t pgoff; + struct file *file; + vm_flags_t vm_flags; + pgprot_t page_prot; + + /* Write-only fields. */ + const struct vm_operations_struct *vm_ops; + void *private_data; +}; + /* * This struct describes a virtual memory area. There is one of these * per VM-area/task. A VM area is any part of the process virtual memory diff --git a/mm/memory.c b/mm/memory.c index 68c1d962d0ad..99af83434e7c 100644 --- a/mm/memory.c +++ b/mm/memory.c @@ -527,10 +527,11 @@ static void print_bad_pte(struct vm_area_struct *vma,= unsigned long addr, dump_page(page, "bad pte"); pr_alert("addr:%px vm_flags:%08lx anon_vma:%px mapping:%px index:%lx\n", (void *)addr, vma->vm_flags, vma->anon_vma, mapping, index); - pr_alert("file:%pD fault:%ps mmap:%ps read_folio:%ps\n", + pr_alert("file:%pD fault:%ps mmap:%ps mmap_prepare: %ps read_folio:%ps\n", vma->vm_file, vma->vm_ops ? vma->vm_ops->fault : NULL, vma->vm_file ? vma->vm_file->f_op->mmap : NULL, + vma->vm_file ? vma->vm_file->f_op->mmap_prepare : NULL, mapping ? mapping->a_ops->read_folio : NULL); dump_stack(); add_taint(TAINT_BAD_PAGE, LOCKDEP_NOW_UNRELIABLE); diff --git a/mm/mmap.c b/mm/mmap.c index 81dd962a1cfc..50f902c08341 100644 --- a/mm/mmap.c +++ b/mm/mmap.c @@ -475,7 +475,7 @@ unsigned long do_mmap(struct file *file, unsigned long = addr, vm_flags &=3D ~VM_MAYEXEC; } =20 - if (!file->f_op->mmap) + if (!file_has_valid_mmap_hooks(file)) return -ENODEV; if (vm_flags & (VM_GROWSDOWN|VM_GROWSUP)) return -EINVAL; diff --git a/mm/vma.c b/mm/vma.c index 1f2634b29568..3f32e04bb6cc 100644 --- a/mm/vma.c +++ b/mm/vma.c @@ -17,6 +17,11 @@ struct mmap_state { unsigned long pglen; unsigned long flags; struct file *file; + pgprot_t page_prot; + + /* User-defined fields, perhaps updated by .mmap_prepare(). */ + const struct vm_operations_struct *vm_ops; + void *vm_private_data; =20 unsigned long charged; bool retry_merge; @@ -40,6 +45,7 @@ struct mmap_state { .pglen =3D PHYS_PFN(len_), \ .flags =3D flags_, \ .file =3D file_, \ + .page_prot =3D vm_get_page_prot(flags_), \ } =20 #define VMG_MMAP_STATE(name, map_, vma_) \ @@ -2385,6 +2391,10 @@ static int __mmap_new_file_vma(struct mmap_state *ma= p, int error; =20 vma->vm_file =3D get_file(map->file); + + if (!map->file->f_op->mmap) + return 0; + error =3D mmap_file(vma->vm_file, vma); if (error) { fput(vma->vm_file); @@ -2441,7 +2451,7 @@ static int __mmap_new_vma(struct mmap_state *map, str= uct vm_area_struct **vmap) vma_iter_config(vmi, map->addr, map->end); vma_set_range(vma, map->addr, map->end, map->pgoff); vm_flags_init(vma, map->flags); - vma->vm_page_prot =3D vm_get_page_prot(map->flags); + vma->vm_page_prot =3D map->page_prot; =20 if (vma_iter_prealloc(vmi, vma)) { error =3D -ENOMEM; @@ -2528,6 +2538,56 @@ static void __mmap_complete(struct mmap_state *map, = struct vm_area_struct *vma) vma_set_page_prot(vma); } =20 +/* + * Invoke the f_op->mmap_prepare() callback for a file-backed mapping that + * specifies it. + * + * This is called prior to any merge attempt, and updates whitelisted fiel= ds + * that are permitted to be updated by the caller. + * + * All but user-defined fields will be pre-populated with original values. + * + * Returns 0 on success, or an error code otherwise. + */ +static int call_mmap_prepare(struct mmap_state *map) +{ + int err; + struct vm_area_desc desc =3D { + .mm =3D map->mm, + .start =3D map->addr, + .end =3D map->end, + + .pgoff =3D map->pgoff, + .file =3D map->file, + .vm_flags =3D map->flags, + .page_prot =3D map->page_prot, + }; + + /* Invoke the hook. */ + err =3D __call_mmap_prepare(map->file, &desc); + if (err) + return err; + + /* Update fields permitted to be changed. */ + map->pgoff =3D desc.pgoff; + map->file =3D desc.file; + map->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; + + return 0; +} + +static void set_vma_user_defined_fields(struct vm_area_struct *vma, + struct mmap_state *map) +{ + if (map->vm_ops) + vma->vm_ops =3D map->vm_ops; + vma->vm_private_data =3D map->vm_private_data; +} + static unsigned long __mmap_region(struct file *file, unsigned long addr, unsigned long len, vm_flags_t vm_flags, unsigned long pgoff, struct list_head *uf) @@ -2535,10 +2595,13 @@ 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); =20 error =3D __mmap_prepare(&map, uf); + if (!error && have_mmap_prepare) + error =3D call_mmap_prepare(&map); if (error) goto abort_munmap; =20 @@ -2556,6 +2619,9 @@ static unsigned long __mmap_region(struct file *file,= unsigned long addr, goto unacct_error; } =20 + if (have_mmap_prepare) + set_vma_user_defined_fields(vma, &map); + /* If flags changed, we might be able to merge, so try again. */ if (map.retry_merge) { struct vm_area_struct *merged; diff --git a/tools/testing/vma/vma_internal.h b/tools/testing/vma/vma_inter= nal.h index 198abe66de5a..f6e45e62da3a 100644 --- a/tools/testing/vma/vma_internal.h +++ b/tools/testing/vma/vma_internal.h @@ -253,8 +253,40 @@ struct mm_struct { unsigned long flags; /* Must use atomic bitops to access */ }; =20 +struct vm_area_struct; + +/* + * 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. */ + struct mm_struct *mm; + unsigned long start; + unsigned long end; + + /* Mutable fields. Populated with initial state. */ + pgoff_t pgoff; + struct file *file; + vm_flags_t vm_flags; + pgprot_t page_prot; + + /* Write-only fields. */ + const struct vm_operations_struct *vm_ops; + void *private_data; +}; + +struct file_operations { + int (*mmap)(struct file *, struct vm_area_struct *); + int (*mmap_prepare)(struct vm_area_desc *); +}; + struct file { struct address_space *f_mapping; + const struct file_operations *f_op; }; =20 #define VMA_LOCK_OFFSET 0x40000000 @@ -1125,11 +1157,6 @@ static inline void vm_flags_clear(struct vm_area_str= uct *vma, vma->__vm_flags &=3D ~flags; } =20 -static inline int call_mmap(struct file *, struct vm_area_struct *) -{ - return 0; -} - static inline int shmem_zero_setup(struct vm_area_struct *) { return 0; @@ -1405,4 +1432,33 @@ static inline void free_anon_vma_name(struct vm_area= _struct *vma) (void)vma; } =20 +/* Did the driver provide valid mmap hook configuration? */ +static inline bool file_has_valid_mmap_hooks(struct file *file) +{ + bool has_mmap =3D file->f_op->mmap; + bool has_mmap_prepare =3D file->f_op->mmap_prepare; + + /* Hooks are mutually exclusive. */ + if (WARN_ON_ONCE(has_mmap && has_mmap_prepare)) + return false; + if (WARN_ON_ONCE(!has_mmap && !has_mmap_prepare)) + return false; + + return true; +} + +static inline int call_mmap(struct file *file, struct vm_area_struct *vma) +{ + if (WARN_ON_ONCE(file->f_op->mmap_prepare)) + return -EINVAL; + + return file->f_op->mmap(file, vma); +} + +static inline int __call_mmap_prepare(struct file *file, + struct vm_area_desc *desc) +{ + return file->f_op->mmap_prepare(desc); +} + #endif /* __MM_VMA_INTERNAL_H */ --=20 2.49.0 From nobody Mon Dec 15 21:50:44 2025 Received: from mx0a-00069f02.pphosted.com (mx0a-00069f02.pphosted.com [205.220.165.32]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 57EAD290D8F; Fri, 9 May 2025 12:14:50 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=205.220.165.32 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746792891; cv=fail; b=qL+QlHoDOQ0iYG3qcJ/+aNvh6KZYw2VvBvejPJ3L+DcJnH9keF/4TK33HBvPgncyKl8Qyy/PmYUCEz1LNoXRNr+ZBrFsZ+lWkHYGU6RzOZz+QX4ra+qMutzbkWX/aHGNwS8ETtfVqgYDIDBetvHGU+PElUoWSFrJy2QSnoWD3Uw= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746792891; c=relaxed/simple; bh=g2mnmnamjWKbthY6BHZudyMiSJ7SaQqEn7eBLxzeiQg=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=ZCLys+4bw+KokGMtYhRaooAWtM3p3VLVRcyKZ7qwSx5cwKUfkBV6Xo4CY7nEeSsbJiLUQ61RfWNhIjvGCb/hJtqBQM43e3ZM9bLql48IAEPmi+tSl6aoIDNMXGt5PRAtjYfx5ZRC2vgsdaZ5Wv6B465O7FjKasi35fdntL7vQ+U= 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=bMWKIWS3; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=pc1uGK4e; arc=fail smtp.client-ip=205.220.165.32 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oracle.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oracle.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=oracle.com header.i=@oracle.com header.b="bMWKIWS3"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="pc1uGK4e" Received: from pps.filterd (m0246617.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 549CDFe3016044; Fri, 9 May 2025 12:14:11 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=LO65HkFPxUvNnWsc31mkOZ+NLDjClzDzj96F4tKoO+I=; b= bMWKIWS3K9g9J+VzD7EgXvTXHnV1j88KYyKkZk/xIxeit2A1zoOfkgjPeUBmGn+B D4xFOpO4fXiqwkxR2LKiKHFzTGHm2067qzxO0t9/G18U40nXAGlxJGTCVQtOMnQL ybXvCVFFvuQ/YJnTwCOlDCj8RBJ36rRptKH6DbV/S2NjlAoqE8AYmbGAqQJhRQjn xB7cAVkEuAKQmNOAL5SKzFMAcQH+O6t+yuG58qHuVeSi8/110YfHeaWdfHkWW26T 8UGk/QBGhlrd08M4EHEKPF5IVvHdSxM8F8gkXIk4oyHEKWWwykkXVVeVLBRO/Ix7 UyDDGFQe7uNYuj9HO2ICow== Received: from iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta02.appoci.oracle.com [147.154.18.20]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 46hhgjr03u-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 09 May 2025 12:14:11 +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 549AenT8007400; Fri, 9 May 2025 12:14:09 GMT Received: from cy4pr02cu008.outbound.protection.outlook.com (mail-westcentralusazlp17011026.outbound.protection.outlook.com [40.93.6.26]) by iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 46fmsbgtna-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 09 May 2025 12:14:09 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=eFvinH3eSZ28VZooFLJWwY2iuB+1vmnAeTuTR3UDFJE7HPxpfFfDnenJG50Nss6ZS8YR5EQQQFKUCn29iztFitFXfqpnjE2XJlq/pwj+IyDpAYJvGwJdxV3vuy+90ID9pe1W5ThbV6YKIVuFNKY21CsK9U6whRZT3qbae87q1a7uTwoob41G00U+gGNpIF4LLeHG/vwdT8batLk4fvSUmg9piWOoawVldwqC6izaa4VglFHDWL8NCL+QhbdL8Wx+WM8bTDWRuDYZig/fnmNFvqvNqcFynsaQF1VrPhz9133r4jAGK7Wz5e+p3bYZullIDMLivGPuoNkDOZNHxlICOQ== 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=LO65HkFPxUvNnWsc31mkOZ+NLDjClzDzj96F4tKoO+I=; b=JQFrmoXXLGK3IJNOF0AXUqBMpvxvgUJZZkj4DYVLdbqDOmAZAHjp+X5Tef0ldHYrAWAgR92HECnJiGRJFfuW+DN0M0749WMZbBOpAgJW10ihkLJWAH88QYwe4tnZk/8Sn5+LDdrymIvW7NsVMXBDL0g5thKsYkC0HGu/gKQNXK1ax6bXepP/uh6/sSKzlcGZGy3W/oa+ILsGzr9InlKCIfxzJayVSuTJAj5sBwlZ04s3UJNp3bC8C6tOpy4ucZTcNthb5Ke5DYeIxNFeT9XLX+wO8qI5FRsXV5BWB0/tLzlNKhceDCI+ZiIjjpls75ldYnqbhs6cwjfbuuG3A+yr9g== 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=LO65HkFPxUvNnWsc31mkOZ+NLDjClzDzj96F4tKoO+I=; b=pc1uGK4eKKsUS44stNFoyqva1BnyutknkeLf9aCg+U30DN6DN72cVgeZmYNrWD4UymXwFh6+ELjjFfaUUiKV91PzwT5fVer7ieaCWs2a0sc+68vY+Sfel/28FXPez8lB59xNhPvxfSJCIhgqvI0cBh29T8u0mG7UUmN44fjAjUo= Received: from DM4PR10MB8218.namprd10.prod.outlook.com (2603:10b6:8:1cc::16) by SJ0PR10MB4718.namprd10.prod.outlook.com (2603:10b6:a03:2dd::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8699.23; Fri, 9 May 2025 12:14:07 +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.8699.022; Fri, 9 May 2025 12:14:07 +0000 From: Lorenzo Stoakes To: Andrew Morton Cc: David Hildenbrand , "Liam R . Howlett" , Vlastimil Babka , Mike Rapoport , Suren Baghdasaryan , Michal Hocko , Jann Horn , Pedro Falcato , linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org, linux-mm@kvack.org, Alexander Viro , Christian Brauner , Jan Kara , Matthew Wilcox Subject: [PATCH v2 2/3] mm: secretmem: convert to .mmap_prepare() hook Date: Fri, 9 May 2025 13:13:35 +0100 Message-ID: <0f758474fa6a30197bdf25ba62f898a69d84eef3.1746792520.git.lorenzo.stoakes@oracle.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: LO2P265CA0126.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:9f::18) To DM4PR10MB8218.namprd10.prod.outlook.com (2603:10b6:8:1cc::16) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DM4PR10MB8218:EE_|SJ0PR10MB4718:EE_ X-MS-Office365-Filtering-Correlation-Id: 5232c242-db94-41de-27d9-08dd8ef2ff4c X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|1800799024|7416014|376014; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?8fCJiP/urlpcv+2OMMfSO/GtE/riktX5p8t8X3/PhwIzf2MKylWfMKbxYrxb?= =?us-ascii?Q?CJzd70aIaPGulqAeAb0hv2Uef6U7GLtMajtaKok8y1tglU+7EsJZUsww3vzT?= =?us-ascii?Q?gEhT6UTm1DY/eFUtzt+Y6x9pWVtpgpXdSFkxJvabG2D7Yox7nNJxyAjKm1Uf?= =?us-ascii?Q?mkOhXMjDEVkreOpcvOR2ylkjAIMLkoM8xavJF9etZXaxaQ+zFhaBYckksLJO?= =?us-ascii?Q?b5eLvz/uio6u+A84taW/QcUHn9TPH+hdzG+QQgcTu84kR1Yx6ADfWvV9y5Nl?= =?us-ascii?Q?yUC06Gk1YuDPcs3zm+1WgO10eosjtfkFAaH1YO3UU3lLsVlBhJeFY8LeUQ3r?= =?us-ascii?Q?93+PWL2XCkeHdhedP12znzXZi3jTYSeRE72nK1MYTSuAxLC8VjgQCVM1pGwN?= =?us-ascii?Q?Wotdq3T+pyu9XszpPrD8ysOKei7xeTHI9WWAz1vCh1eRiWjqKdf6Rj+po5ZM?= =?us-ascii?Q?UFxaecPt9KpEltaCud+vJYRPK+fjYXokAkaxaIHCrxI1QpLb4cG0SE/GyqzY?= =?us-ascii?Q?61teGFc6ySxAtOgNmw2TqP6Q1v2YYTdftY9nGJVc1259j90h1KBwLbgxh1Ib?= =?us-ascii?Q?4UBVu6VTgDjtSAMk4EQP0o39pgbp/llWDKm7W5HntY4kpwHRbY/VD8+bab4I?= =?us-ascii?Q?jgHu6+5WDfhsfF07AQejsyaOwsFTVZ1G9o0qhYHbDAW9tYRv4rrPFBoK5KNE?= =?us-ascii?Q?JMeg1ASMPU/wf/EBwJjKjuXI+rSxNPWueRedOIepJzTKCm/F7Qr61mx60n7w?= =?us-ascii?Q?fF39j2uJ7G0ml/+TQOqdCol7I2ptp0DQn5dEQj/nTAjM93zvoDJsFM+JQ3BF?= =?us-ascii?Q?4Q/zBX9vL723cc94uVEcyu6LP8ULceNS6QKcq1Sal644F3ajNKsdLO/twyrX?= =?us-ascii?Q?XUCqToUs+ijjzDnGEnOIfVmx4L8mJU5rc9h9Ct51cREbnimKi6qVqGDcr+kv?= =?us-ascii?Q?xeCn1h6X3FzWvvXX/iaUid2t0mgHqayqP+5OKR8p1DDmPZ3X5eJ3bKhuQiZb?= =?us-ascii?Q?iqjM+qTOHUKrNaRSqKNRM77f5M/mqmj1gz6pC2KU2BarOrxT/ZOvDvm42ej7?= =?us-ascii?Q?3SMhaFDKAmihr++JR4pKEoP3B8zp276UNx9g9+1yG0Amu6U048rry8FDBw6m?= =?us-ascii?Q?/y6R1TTsQjpHiJAc/HV+c89U2pTHDgTUJsEwQcbwYr6q+Tto/fT/yGPc50Az?= =?us-ascii?Q?O2WryjGkeEiN+5IGflrPvX3y5NM5ICY3ndzuTAwP5EUtHR59BJRWEHt4LUp7?= =?us-ascii?Q?I7GNuxerZEiWyXgR8ylETcpK9nR0Vi56Wx9lJmYJquiaF7lR/oKUbiIm+rZu?= =?us-ascii?Q?o5dxjgwrPmIfnPRMhCqv8ti9iV3AfqUqqkFl4+gtUxUH0ZgNUmK2ZS+VTt5q?= =?us-ascii?Q?pHI2ZeafBgHeG6Y6U5j8NZ7lVVOGDg7GS5qW0MgDt8jMQyt5ur1MTF/9u20v?= =?us-ascii?Q?U17avpIKv+k=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DM4PR10MB8218.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(1800799024)(7416014)(376014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?0zwUpeuK9Sd7Ps1zcZC2/DrIzuT2567WiLR43RWeyFsOT1Jx1l86cTP/IvvC?= =?us-ascii?Q?p23b9qYTTLgDJBFuUauiQM7gsdv4gRfhpxpjWqpKAtuzG15zezJkm1ZxUGX+?= =?us-ascii?Q?sAjhGqZ40R+fdgiwT1rnqD9myUzxHcDw5Gzjt2ec34MSHzxe2SkLuMUp+K2h?= =?us-ascii?Q?LZRvIGZDWa8his6CFmL+UDXaRX/zjDt4g05l67BJVWrqeKOYwvK6KNqeHWMY?= =?us-ascii?Q?tvPebq0BVZ153REUmax/cSNFztb8MqIIpqRZOJ75PySkWQqxm7q4o3YIYne1?= =?us-ascii?Q?taCK7B8sLd+wedYafVH70mZXew1luEOYzAtsR+nI5Sytx0BFlWl0nMxhqNst?= =?us-ascii?Q?2dST4YYeWPk2P31/n9iHuClgJpjLPnuVTsG/jsMbQLOx1uAmUap/Twl28cXO?= =?us-ascii?Q?yzn63ZmOA+gWdSF7l5p0j+HXDm5FSGlS6fIHbAuZDtL2sQJdf3m9WUp2g6fo?= =?us-ascii?Q?2fAokUDYBHaUE3nFo/akoOtD98fwQ7e1PVBlf1X2Q2A8q8g/6PrcXtr1xDWo?= =?us-ascii?Q?iXAEIYzF1X4tAwtj4vaQqv0pvsy/5h023NEG3DF9dsPoalvqj1mJAzZYRn1d?= =?us-ascii?Q?RruOxWgElCqsEhRD9SI6jwEp5UrZ8nfz6PWZdqnfpwoMXNE3EbHFSilnW/fk?= =?us-ascii?Q?HlJUtl33Vwo7hECtMIlz5ttKoBlgfvCgWbg1rKAzIPgSq8O46U6xxrvTJO/k?= =?us-ascii?Q?tGTSbE1a5RiFR+EMM+YZNQAtv/4I1i4iKGuvGr4J9ZPOaeoVBxI/IgSmvcTM?= =?us-ascii?Q?2mH+RV7PtRjQz2E7JBMRpi6Pugta/JINKjps0q2uFd90nsgxh/WG+sMf+MMU?= =?us-ascii?Q?fRgLgNYpABeXkFnZd7r3ScREA/NBzEw04nFuByeH6GNWsZELouLoDrZPu1cG?= =?us-ascii?Q?fY4zrSVZXCB4PaAxc3G1TMl1aeCoNeFd4qekHzD4wjLG+MiuR3Sj3O570Gqx?= =?us-ascii?Q?44Ygyood4tdJqWLdI+a8wNh79jMnG0aDIseGjxrt4Xzizz0FlB38fyQdz93S?= =?us-ascii?Q?XKL0BkC88remvVgu2xpsOXzSCmh+p86WVOQaFu1OFvUfbAUSuBiVGUXoAIq3?= =?us-ascii?Q?DZr13zp3gIXz8L2OlHMXRDwwvpWKhMs3SMaVl7uNQIEKZ8qPrJQKNd5ipcT/?= =?us-ascii?Q?NBbchgGj+wKJIhCsObhUPjIEpYb4bIFPLYdQf1MYc4YjZO6fFCcMohg/5Vl/?= =?us-ascii?Q?WyMqOe08ieKp7Sorp9WIhJmq8Pf+i2+lUa25o9ktEQhttrn05P3L533KSzYK?= =?us-ascii?Q?nq3haAmO8PWuHfuOP5i7C0+w+v+Jpl6C0YrBjpcmcUzBtgvCV5ljETQnONrq?= =?us-ascii?Q?qd9Nq7GELJHaahemoNNFLcnZb+6biufu3YqfqyhcFoVMsZelvXnvGzEEjq07?= =?us-ascii?Q?uNTjCkzpujxq/CLzP3fkjGIo1bg7Zo4vb+QhivrayBSus56Y0yAjeZqjmV4v?= =?us-ascii?Q?NbEO2DTvncfdOdeJe2lalqyl4lPGHCHr082NtBktu8B95iMjp/hcqW+CoVNF?= =?us-ascii?Q?oNdF3nFiX5EMwvQm7F7awp8gU1IXzaQgs/a2m2PMdsE8OtRErs8t1zEB9yUs?= =?us-ascii?Q?KCLSBg/mvLIeTBmwxZGOIlZesaaoAhvZjKzgw0CDf+khgJrsKO+JpTY1gG5J?= =?us-ascii?Q?Mg=3D=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: K5F8f550RB25NXdnARcUgBXGm4R/BkUaW97CZ+sFPaLir3cx3pWuZuEwGXttRfijZ/R9AKZ9xJGB5X/UNPwax7LR4iHE6udTVRxnJE/dXyjA5HZibca/nAN+I+sFo3nSsL5uysgYId/Gc+GyN/+j0EVRYyD72RHzeCu1fMjuFKaB6uokoTkTynai2AyD8TGsVcepmvQC+9GRPex+PUnMHD4YivI9Ry9pUGy/taUAYzbJtqD9nyBya1kw7JVxMf7x1LUV7KRAD1lQnCSZPavtKTPDmr43Ygv+vw8rxY2eReN0fvYaYxm2/5oYRUoKfuKbPHMFSd/mw+dvxPGrTwUG0SHFYJpzScTlLjPOd+0Sk1sadWOJV/ztFY3TKwFXn88GxajJphPaatuVZaI2aWdbtmyArrA/RFSS9qr4fh/VyARCXpOUu4JnkmFPYzMVuUn8csh1zzsCRU+vMBulnctn/+oONDsJ4nfBa9J4JqTAY/Y6ppI3cvba9JSAhTr7TSiFwNHpy02p50sCMFiODtSI1rzaIoBkGSBEQnHANt42st/WLkDEvEYlI9z4XfNyTLoKVDPD/G8A5muERMao9PVuHriq5sz4380bXR66LJpBwvQ= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 5232c242-db94-41de-27d9-08dd8ef2ff4c X-MS-Exchange-CrossTenant-AuthSource: DM4PR10MB8218.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 May 2025 12:14:07.3609 (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: 9lAFU8wmtX/jNUtC4Spw86paTZgFE0DOSKYEQgMzrcHeJ4dT4Aglw82ukzCCR7xY+frkfsGwGOBuM92PCg2Z9FncxA5xd/cL/9d5R5BMM0s= X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ0PR10MB4718 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1099,Hydra:6.0.736,FMLib:17.12.80.40 definitions=2025-05-09_04,2025-05-08_04,2025-02-21_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 bulkscore=0 mlxscore=0 spamscore=0 mlxlogscore=999 malwarescore=0 suspectscore=0 phishscore=0 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2504070000 definitions=main-2505090119 X-Authority-Analysis: v=2.4 cv=HOjDFptv c=1 sm=1 tr=0 ts=681df193 b=1 cx=c_pps a=e1sVV491RgrpLwSTMOnk8w==:117 a=e1sVV491RgrpLwSTMOnk8w==:17 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=wKuvFiaSGQ0qltdbU6+NXLB8nM8=:19 a=Ol13hO9ccFRV9qXi2t6ftBPywas=:19 a=xqWC_Br6kY4A:10 a=dt9VzEwgFbYA:10 a=GoEa3M9JfhUA:10 a=yPCof4ZbAAAA:8 a=VwQbUJbxAAAA:8 a=20KFwNOVAAAA:8 a=Kl9-pRb9PRCpSRKwHLEA:9 cc=ntf awl=host:14694 X-Proofpoint-GUID: VvzMBK-iDbXURab0k0PKeItmuIeBqIna X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwNTA5MDExOCBTYWx0ZWRfX5PtHo2xA/dKh dYs0p2rcaGHV9OkqLjeoSi5QTjjp4Vtu1Pfwyo7ksAv8KRraSU1TnE4W6Z7H01MB6GNfYxIaTJT 7S+coYzgQT5x4bmyZY0y2Nh56dhh5WTNhI+aMW/mleE9eFmf0AWfZDMlCkxU/qtuFVI8K+mNkEH iWAqNLy3SiZmBkymrlPyhzRMnnhIZ5USE+BqKQD8JZqmzPO3d2EoCZn2Z/1Y5YdCg2DAlQq90dQ gctGLoZpPGYvbtKxGGWmijkwoptzTuMxKxvcL1EniJ7g87SQ5OF9N9wcZzqsUqam6cpDb3zHbrl UPW5ZwQz5e7UXERLMYpxncIwO8CZ9Rw3qvv+iaBJzLw9zRQRgXXEdi6Buxo21vpD2D/ZKAL/36C HCHJFd/MXsWHwZFO0Q9kPNqh2BexObGkKhjv2sn4o4fnxWTIqJHIDcIiX+4xEM9QYY8PJ77A X-Proofpoint-ORIG-GUID: VvzMBK-iDbXURab0k0PKeItmuIeBqIna Content-Type: text/plain; charset="utf-8" Secretmem has a simple .mmap() hook which is easily converted to the new .mmap_prepare() callback. Importantly, it's a rare instance of an driver that manipulates a VMA which is mergeable (that is, not a VM_SPECIAL mapping) while also adjusting VMA flags which may adjust mergeability, meaning the retry merge logic might impact whether or not the VMA is merged. By using .mmap_prepare() there's no longer any need to retry the merge later as we can simply set the correct flags from the start. This change therefore allows us to remove the retry merge logic in a subsequent commit. Signed-off-by: Lorenzo Stoakes Acked-by: Mike Rapoport (Microsoft) Reviewed-by: David Hildenbrand Reviewed-by: Liam R. Howlett Reviewed-by: Suren Baghdasaryan Reviewed-by: Vlastimil Babka --- mm/secretmem.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/mm/secretmem.c b/mm/secretmem.c index 1b0a214ee558..589b26c2d553 100644 --- a/mm/secretmem.c +++ b/mm/secretmem.c @@ -120,18 +120,18 @@ static int secretmem_release(struct inode *inode, str= uct file *file) return 0; } =20 -static int secretmem_mmap(struct file *file, struct vm_area_struct *vma) +static int secretmem_mmap_prepare(struct vm_area_desc *desc) { - unsigned long len =3D vma->vm_end - vma->vm_start; + const unsigned long len =3D desc->end - desc->start; =20 - if ((vma->vm_flags & (VM_SHARED | VM_MAYSHARE)) =3D=3D 0) + if ((desc->vm_flags & (VM_SHARED | VM_MAYSHARE)) =3D=3D 0) return -EINVAL; =20 - if (!mlock_future_ok(vma->vm_mm, vma->vm_flags | VM_LOCKED, len)) + if (!mlock_future_ok(desc->mm, desc->vm_flags | VM_LOCKED, len)) return -EAGAIN; =20 - vm_flags_set(vma, VM_LOCKED | VM_DONTDUMP); - vma->vm_ops =3D &secretmem_vm_ops; + desc->vm_flags |=3D VM_LOCKED | VM_DONTDUMP; + desc->vm_ops =3D &secretmem_vm_ops; =20 return 0; } @@ -143,7 +143,7 @@ bool vma_is_secretmem(struct vm_area_struct *vma) =20 static const struct file_operations secretmem_fops =3D { .release =3D secretmem_release, - .mmap =3D secretmem_mmap, + .mmap_prepare =3D secretmem_mmap_prepare, }; =20 static int secretmem_migrate_folio(struct address_space *mapping, --=20 2.49.0 From nobody Mon Dec 15 21:50:44 2025 Received: from mx0a-00069f02.pphosted.com (mx0a-00069f02.pphosted.com [205.220.165.32]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id A23A527FD57; Fri, 9 May 2025 12:14:38 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=205.220.165.32 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746792880; cv=fail; b=CxwiUyXYYhSCtmm32RhNT1Z7j/dxa9Z7xAWwGaUnXXWvxURd4HWeOCG5HyfdojpLq4xQ0V3AG4jRU4DrSGMpENdmAcHY02tGn/O/RVg3BFUCvOlN65Wij5ni36D80AIOzmxcXEWQlzBHKLFwFY1BnX8AT7dACyjqlGQrk9ArASI= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746792880; c=relaxed/simple; bh=aAiIesE96qmQRPYDCuTa2Jy8MeqcbqXIZ0MO45lldl0=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=oJ92V0a64CXczWb+G6JuOqe9NTPVIZK8niBZFE7aKNiOCBugm2WtQPf0eHdTEzxyl3rB7Q7qokaJ21MwwucswrHHMSKN1qez4YuAyf/Pb+Ivp8P+zNZ9XgBOFZKJzRegYERG4JgkyMIrtqco1tLnSLZhr5NYWzIXKYjdBsvsA1g= 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=mx2RZyTL; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=ExKzX6/u; arc=fail smtp.client-ip=205.220.165.32 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oracle.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oracle.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=oracle.com header.i=@oracle.com header.b="mx2RZyTL"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="ExKzX6/u" Received: from pps.filterd (m0246617.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 549CDCUu016012; Fri, 9 May 2025 12:14:19 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=cc :content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s= corp-2025-04-25; bh=O2D1hIPsSKXKEaLR8PbL1FmgOm2df+18EtRbXAZxaXI=; b= mx2RZyTLSp0nrY2vN/Y/gwCnMNIUHUrNf0YKdXIGqVJTmPQExGCVXdGqT7xbkg0L fi6KEwz3CqD36NVwt6hxm+93MPuuh6XkEllg1CYMQhIyAKYe6JgyRnHTHiRH65nb A+d4hpVFU+dkjpeGbaTGPveTw78YR5/fmkKhK6rpmwV9feIzlp4RsUkwREqse1+X klUlhsYDxs9h1uWnnKzcYmOfjH/lI34H0u2X2QwSPEALSJyx4cmmPe/AKpbVqV/6 5lRF9MmFI2XMasyZLkBmrtdXv3utQfroiLKaaGwmFoUkvrE5VhFDEkEl274Mi0cK 1aQlZg1vY8nro7rdqv0vow== Received: from iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta02.appoci.oracle.com [147.154.18.20]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 46hhgjr04b-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 09 May 2025 12:14:19 +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 549BQ6DT007370; Fri, 9 May 2025 12:14:18 GMT Received: from ch5pr02cu005.outbound.protection.outlook.com (mail-northcentralusazlp17012055.outbound.protection.outlook.com [40.93.20.55]) by iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 46fmsbgtsw-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 09 May 2025 12:14:18 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=MtyWz6OOEHLOSXw08OktKEwuzILtPuot8W3o3Utqwa1eLXwvTEstn+2D4yZfKPDoCtNOH+49RRqNKHBI1d4NdgeimMztv5PExoX2sTWj4qCyUBHecU9kPWeesQpvqTHBoXt08ilRjeV0witV5Wygs0tWHe9Tnry6P/ATLegBm5MgwvM/22/WHftGK8RBBaMM66KqkakxXslgK/foCW5xJDNhtcpEi58gIYZgH/Y22isiVD/DP8amzPxrHWx8pGsu/u4/6IRoi4n7e1p2hHSPt2pR1j8BE1DbmMKNMTsb67iBlUDERdfa2fN1coK94Znb/Ar42lxCdR6ovhiVTaxaDQ== 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=O2D1hIPsSKXKEaLR8PbL1FmgOm2df+18EtRbXAZxaXI=; b=AfpC+bqTqLIBj81n3Mp3c032rzPyLwRAIbQKRKbyI0A04EwjvrtWty7aadK0tgF/iGdgAMFKJVGs/gLGweSakXvgjVnWLuQjQ+lRPy7la3X4Mu48u58sD4YVeHa8yOs6BTtUwXRxqQSuPfc5ecyRAsfLgLALCnQfjJQ7v9DAv6EKSvLuo4VEMHhBfpU6ErlwNJvd2sw5q9cf/gxnuGysmNveARnZqu4Z2sRMJjtJE+wytoeM/Xvpx04IQXwbkktu1oVa42xJUGvgALbz1QgK17jFrkVlxL/UC020hsIb1IhBc7zUFHH8s3JmoIPIuHirwA5XsMdZIORffTfB0vJjaw== 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=O2D1hIPsSKXKEaLR8PbL1FmgOm2df+18EtRbXAZxaXI=; b=ExKzX6/uJ6rgh+8+JEGHuHaDULs8J+DYsB6XfkZuqlGL3upRaM1Chw7wwXUW7xu/N3avn7p6sX6CL3azc25UUxQR+9xSFxUnau/1/ScvA36/mxf8crZGHFnzE/ucZ4miU3jJtGZoLVv2OzKYVy4jwm3QQDcFvdHm6kRz5kWlImg= Received: from DM4PR10MB8218.namprd10.prod.outlook.com (2603:10b6:8:1cc::16) by SJ0PR10MB4718.namprd10.prod.outlook.com (2603:10b6:a03:2dd::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8699.23; Fri, 9 May 2025 12:14:15 +0000 Received: from DM4PR10MB8218.namprd10.prod.outlook.com ([fe80::2650:55cf:2816:5f2]) by DM4PR10MB8218.namprd10.prod.outlook.com ([fe80::2650:55cf:2816:5f2%5]) with mapi id 15.20.8699.022; Fri, 9 May 2025 12:14:15 +0000 From: Lorenzo Stoakes To: Andrew Morton Cc: David Hildenbrand , "Liam R . Howlett" , Vlastimil Babka , Mike Rapoport , Suren Baghdasaryan , Michal Hocko , Jann Horn , Pedro Falcato , linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org, linux-mm@kvack.org, Alexander Viro , Christian Brauner , Jan Kara , Matthew Wilcox Subject: [PATCH v2 3/3] mm/vma: remove mmap() retry merge Date: Fri, 9 May 2025 13:13:36 +0100 Message-ID: X-Mailer: git-send-email 2.49.0 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: LO4P123CA0699.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:37b::6) 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_|SJ0PR10MB4718:EE_ X-MS-Office365-Filtering-Correlation-Id: 0a070e33-7271-41bf-5b83-08dd8ef30442 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|1800799024|7416014|376014; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?UtK6e/69+qm4tt6+7BlTJYuWmgoMiN+K/nDUopoHTzXcA5ThLln3hNlD89lm?= =?us-ascii?Q?3sgfX8nXDYFaJmf9k8BD+WMLLOljETuDDZXHActfLaMC5n4u5slfcyzAYdOm?= =?us-ascii?Q?0/sSIT4Ak43z1lD4nuKfTyxE8z0rdxLbALF5a/zxghMGH4AHcIbPuDa3whNS?= =?us-ascii?Q?ruMyxU/KZgeZDjhnYmlegwODuDJHjzQPa4FaFWuIxM55dEBj4Id4dpNKn67/?= =?us-ascii?Q?7B8nA3RhamYwAWM0WxUtCu3ghYce8QMg4SAdQzBYYpR+k93Cnjs+oZ0NVsM9?= =?us-ascii?Q?ILGngXSJtPfBIedOuxGYs+ZvfrvWIMtIEE0lrqnRHz+GbwkC3np1WeobyjH4?= =?us-ascii?Q?ka4OXanmkrM8mZ0DNn2g2vVmXeuDdUwmVYQrKGHGvq+F5Xghmo2f7ADhQz1W?= =?us-ascii?Q?rPE7kkNehuT+/+P/WqRSsA/WiVGuuLjAoWL+zzoc4BiTAWxrCgwiGD4Ug9lM?= =?us-ascii?Q?/9bnFr4eUBLLmU6gs9rnj6sW+yKjx/uwCi48HpxEYZam0X9dX3s4myzHSNHG?= =?us-ascii?Q?Rl70ojWvSfKjU6tjh2pr5MjjP7h00Y8br0AI8K+BrZ5usrBTEHxodKIvKmM4?= =?us-ascii?Q?w9KzYYnG1iF05s4Igu52AT47+S6udQ/448jTWK4QY9bkrMid8ADFZn3q7/QH?= =?us-ascii?Q?9OZLBqAg10MIxbhpk390s1tohdnftgMwkQ15I+L9KH9y7oH3WK8OKaU5o2Hj?= =?us-ascii?Q?Pk+tqGBK+y/gMI064GhG9AyBkY2yZa7QaI/8uZCKVzjiN42teA3qrNPliO9m?= =?us-ascii?Q?UMjxYHMXL/PlIqcczhdKJMWwcyZJY1kJDj3OLoICCcIIu+Jjg8Jne5x1poyb?= =?us-ascii?Q?QeH2NMCEVqWHPn9660YaYaF72KWVI1XkKjaSRXKplNnHUKU7NChuDBlafjqL?= =?us-ascii?Q?gUja89eKkzUTPlIrqFeDsHOPT9I0TzsFQXkS+d/mH81wcBKfa7m+SjXb9Die?= =?us-ascii?Q?t/PcBepvcal1NHsUqP6cdmYsg7VvelOi9tQAXDBcaessOUQY0G8ceJxksgTi?= =?us-ascii?Q?yWHkgILYkxI2TtkXOa65smMHf7CVwgp0eHHJ4qoseGEe74pSWSWj4IaFPQtj?= =?us-ascii?Q?32MDMXZYP/tywbRLdJfdk4pq/y9irOZ/YbcOWAi5zLfADp6BIAQ88xlyWu5M?= =?us-ascii?Q?GMTD1fkuGSysOAHAyoVL4ILEcm1GkH20tnjPSvxClQQ5Hx2qaZ2fSBZxV2sM?= =?us-ascii?Q?2zGwG5J9b1rSXHc0P1I2QTQggtIFSrtPMzNoVJDtU4zQngKx4KJdGD2hoFQY?= =?us-ascii?Q?HabFdxYXXfR5qzCNHQDyTHtWHEJghMy1n0v4E7nz2e1My75L+4F4FEGTTfgW?= =?us-ascii?Q?yZ62RYbGuONGDJyPPTilfbXKoPjvQN7aCx+cKiFIy7N25sPiITLE3lprdA2/?= =?us-ascii?Q?2HrWARxzGuGVCMdSHqiP9XdP/BZZxG+JF8xOYHyC9hf/FMQMDV8B+voL2GxL?= =?us-ascii?Q?/mongpYCYOY=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DM4PR10MB8218.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(1800799024)(7416014)(376014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?m3UEnfqvuYUTtyE9DqeuT378V5NToZFJ8HZCasaZzV8016FPb1foHgvx83cn?= =?us-ascii?Q?uI6+Qw7nXk7Yl81PAUUvelQYlXdNcHHEnr+wTL8VNfkuVTbUcF5AV9bI486C?= =?us-ascii?Q?gEIjy8V427OvdCfwaSZNzBjoPuC6+7sgE2cVzL3xgyucN3o5g6ZjkbHcCRW6?= =?us-ascii?Q?N66F/KRZ3NIu3pXEhrRm9pxgzBXqtq20VGNKgQA9C0N2JARPU892Tj+yVKyj?= =?us-ascii?Q?6nJQim8tXKe5OGQBEwCxoxvnOEgJ878pQTLD3gxUssNTSaozTYT9OmOWRQeM?= =?us-ascii?Q?xvL0KkRu3NLBjvdlhsSwRxmnKIUV4gNlrZyDFdY5rpbKauOORiHoMrAsMpB6?= =?us-ascii?Q?nA2DjULuVA/k3KqiZNxUykF2bV3ru4YOEh8ozY6q5a9sAnZG3ZE8kG1L2VbC?= =?us-ascii?Q?8j6q9dPzSvESAXIs+5jtTFHvJ1nsRXn+6bKu3qGMdiz+Y/Q7TQO0jzM++duy?= =?us-ascii?Q?u2BB4VcvoGPWfcGWkZIm20xZ3Cg4sqrnqQzZDafqSHtibU1vtGB4ZV/jgadA?= =?us-ascii?Q?kEDHy0vuJLpTGKnbUnu/flFO9ErQD5SfNsfIbYULiKBbrBRgtQesJf45Abh0?= =?us-ascii?Q?/4IWxnM3o63y7ze4oFEhtmBJRouaFqiLBjAbvbTDAbh1QaFkfR8M5Qt6Yc2B?= =?us-ascii?Q?Mx8Sqa5Wn5N+hpsYRkoXE6XO6Grp+cERLMHtoMsq8DjMAhGXr899wAIHUAC4?= =?us-ascii?Q?3A0yq/SrJer4wQwUm9eNEHiNopBbJ1v2YqeFkqrVngM+4b5vo4pVYc2p8qZe?= =?us-ascii?Q?om9WNqA0ZQa7SS517oqrFXXSc5z1pTflLwabym1STgGwu4nKy9PVyVLvvQly?= =?us-ascii?Q?Zbuom6f2Q43VQ8WSVwiAAuqJv3fggvdeXNLoDVz8V6ZmurrPSCAt7XgVmTHY?= =?us-ascii?Q?UoWARPLpAJ/F8k1HSQKD6nBecaHurT2/kXmTWjZAaATwldUMPUcAVo45y/yM?= =?us-ascii?Q?LM+9Gk9GDlt5cCVl2O1QtzckXKHz8kyUXvyCgf8hNTdL5WJIZ8o6NVaTXRKM?= =?us-ascii?Q?bQQMizDBGE1MuUP3tLIp8nfxBoXcBIRwkD0/+MHzKSuz1xsMekzEKXhw9SAr?= =?us-ascii?Q?CAZ7SOe78FE9pFsdNBB8vMYrKwpabaJK96R9QdORePs4TgxOBtVYwBoecAW0?= =?us-ascii?Q?jjosqTtZdz01ZHtKdiDDigmvPZclmmn9Bar7oxtxLmhaOmkDRknAEr1Grnl6?= =?us-ascii?Q?SJqfWfpZS8ndsy12BDkrohNyUuIcwWnL7247paU+l2YzkTHW3I/r6E7RKZDb?= =?us-ascii?Q?lDGf0aNQDN+9uK4lBVq6YpiQZf5roUpowD656zbB+tT656ia/SeKtvpEUBlt?= =?us-ascii?Q?mi9el7bZ9yQd0Yism3KF6OskfAgzlr1SYNfjKngmVtU/WLaBy5cwpRFFWb/5?= =?us-ascii?Q?B6QWVzzkib553BsGSln6z8Nqz7dDQRlbevtUxh6/rnCE+ZLgyF/4ASUI9QbU?= =?us-ascii?Q?KpOMVVPTzSnRlR37EQLsz9eK7iF0PXyvBi0fYLTLvNKjL15JJgXRstBb3QpK?= =?us-ascii?Q?WgqCr9rc33kZr63MT5sg3jjUaVksRwAPgy7inaS8XZqkC6/v8OhBl3AOw6K2?= =?us-ascii?Q?EGGstyd7yQvGS0E9tJHumjckB1Eqn45RCKqlZlc9bgd7Ap1ElKnlDFD5S5+n?= =?us-ascii?Q?AA=3D=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: /XZ2s6NMFXco0gfoJG59NxQJ8P4ti5QoNhAYFcYxQF3NS20Rf3xvWtTOzcEZ1gJpzY2ZVS2+l0BkngQiNRMbHeq08pLzaYVEAD4aT5wgVrguJs8MeCVvGXfIRJkrHDQ2IMRb9BT69m1iep/Lw2OMh7iUieqar6W2DtEBkXXQz4IV6SlINPchqzt+jV6/YdP6SrFJr991vBlc1AF076mDhIhrzbGa3riOTBmbBpShkJUb9PmH6L7j43EgQzGMWtOGHkpUDxS2MNqPHK0E6a5Qh67DFb38p0tPFHdAX+15tkFNN19xT8wK2uckQ4nROIfeyNbTdqlcEuhVp+s6uYR8vw2qblcQP4OECc5VAlMCX/J0cc6nw+tM2lQqgrbnusD2M+pLou2bQ14lnnKv27+gbbEINgco6ul87l/izSG+Ng+RG9Yc10LG2JJdbRDU7dXhV5HxOBp7cq/6xMEPBq4SHDnmwZfpknU0LnwBodcWs0w6mEa+krMOUbOznnCYvfzLuvGRw7Ji9MwhLMi5nmC8THrsePZ4jXkD6goYjFysvZJvCvJnvToGjjdtdFvplGw7YNgXcTuV0etPueh4k1M5ZeohDuFRXZ7suj5XZXSuVvQ= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 0a070e33-7271-41bf-5b83-08dd8ef30442 X-MS-Exchange-CrossTenant-AuthSource: DM4PR10MB8218.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 May 2025 12:14:15.6879 (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: IYLAlm65biQdeFtQ7O5dmN9dZGmAfsJfDI7e3JaGD6Fro+QRs+yjE9zEWBfm4QAn+dLZCeHv8UaIH0LRmjjqttvgc2mDbCtvjMOWEjsikQI= X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ0PR10MB4718 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1099,Hydra:6.0.736,FMLib:17.12.80.40 definitions=2025-05-09_04,2025-05-08_04,2025-02-21_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 bulkscore=0 mlxscore=0 spamscore=0 mlxlogscore=999 malwarescore=0 suspectscore=0 phishscore=0 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2504070000 definitions=main-2505090119 X-Authority-Analysis: v=2.4 cv=HOjDFptv c=1 sm=1 tr=0 ts=681df19b b=1 cx=c_pps a=e1sVV491RgrpLwSTMOnk8w==:117 a=e1sVV491RgrpLwSTMOnk8w==:17 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=wKuvFiaSGQ0qltdbU6+NXLB8nM8=:19 a=Ol13hO9ccFRV9qXi2t6ftBPywas=:19 a=xqWC_Br6kY4A:10 a=dt9VzEwgFbYA:10 a=GoEa3M9JfhUA:10 a=yPCof4ZbAAAA:8 a=20KFwNOVAAAA:8 a=KWrF3PiNL9PbMbJVJAMA:9 cc=ntf awl=host:14694 X-Proofpoint-GUID: G_ayZX7oU0OPlVP4HNueKPEEfo1pfV9s X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwNTA5MDExOCBTYWx0ZWRfX4qyYHUqsziFU CmozkbcOhiynrB+/LHgqfAJcxmoEQ6QZNr7Msux5Fp/hTtaOOeBuq0UtRE+oC84eUMa4AR5NJyy Sa5SRxq5cm1jbpVIDOCEpxz6bl9hEsr6BBlJ8eQCJTIs2vw9+/01644wsN88aUHIs+vgOBLTTux Zz/Ip/SVFwcIShjtAKFu3OlKQ07rwFp9ZVEVlkWiu58dkeOsUq1nPPTsIXEm4ouemUMrYn7lDGn NbtU1m95k/cBS4OXJEndWrsuqqmI7mrrsfuj44wcfd8SDizlMMgLi0SM0e8VpcUfkZKx84ZII4W mmgJS1B6UaGNPD6/S/G6vap8VMnQoZgWZxmqA6YUsfdFXufRJMke/grtYqFWdZSxYET8wAVn4Js C/Ts4twYDUGYGI7J0UTaeVCf7zCLqjwb9O/uymBKZZHUxCJWt8QKmkmr1AZ6bYRV2gicxwN7 X-Proofpoint-ORIG-GUID: G_ayZX7oU0OPlVP4HNueKPEEfo1pfV9s Content-Type: text/plain; charset="utf-8" We have now introduced a mechanism that obviates the need for a reattempted merge via the mmap_prepare() file hook, so eliminate this functionality altogether. The retry merge logic has been the cause of a great deal of complexity in the past and required a great deal of careful manoeuvring of code to ensure its continued and correct functionality. It has also recently been involved in an issue surrounding maple tree state, which again points to its problematic nature. We make it much easier to reason about mmap() logic by eliminating this and simply writing a VMA once. This also opens the doors to future optimisation and improvement in the mmap() logic. For any device or file system which encounters unwanted VMA fragmentation as a result of this change (that is, having not implemented .mmap_prepare hooks), the issue is easily resolvable by doing so. Signed-off-by: Lorenzo Stoakes Reviewed-by: David Hildenbrand Reviewed-by: Liam R. Howlett Reviewed-by: Suren Baghdasaryan Reviewed-by: Vlastimil Babka --- mm/vma.c | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/mm/vma.c b/mm/vma.c index 3f32e04bb6cc..3ff6cfbe3338 100644 --- a/mm/vma.c +++ b/mm/vma.c @@ -24,7 +24,6 @@ struct mmap_state { void *vm_private_data; =20 unsigned long charged; - bool retry_merge; =20 struct vm_area_struct *prev; struct vm_area_struct *next; @@ -2417,8 +2416,6 @@ static int __mmap_new_file_vma(struct mmap_state *map, !(map->flags & VM_MAYWRITE) && (vma->vm_flags & VM_MAYWRITE)); =20 - /* If the flags change (and are mergeable), let's retry later. */ - map->retry_merge =3D vma->vm_flags !=3D map->flags && !(vma->vm_flags & V= M_SPECIAL); map->flags =3D vma->vm_flags; =20 return 0; @@ -2622,17 +2619,6 @@ static unsigned long __mmap_region(struct file *file= , unsigned long addr, if (have_mmap_prepare) set_vma_user_defined_fields(vma, &map); =20 - /* If flags changed, we might be able to merge, so try again. */ - if (map.retry_merge) { - struct vm_area_struct *merged; - VMG_MMAP_STATE(vmg, &map, vma); - - vma_iter_config(map.vmi, map.addr, map.end); - merged =3D vma_merge_existing_range(&vmg); - if (merged) - vma =3D merged; - } - __mmap_complete(&map, vma); =20 return addr; --=20 2.49.0