From nobody Sun Feb 8 06:54:33 2026 Received: from mx0b-00069f02.pphosted.com (mx0b-00069f02.pphosted.com [205.220.177.32]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id D64B420F07E; Wed, 30 Apr 2025 20:00:14 +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=1746043216; cv=fail; b=gD/ZPzPjDMv9rkoBnImqrZCZx4Hd3i1dD1ZBQIFlL+CDL3AfbnK+I0y/ZGFBjjctsSrCh9VvCuyFyEEyOCnqUBJODGHidkApTZ+Zm118QVMY11ydnVTYhSfgifdu4C8K0njzt9qwBP6vc0LpQ38sArQg2q3mgqqx/uBsuVfqdn0= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746043216; c=relaxed/simple; bh=RxJSvcKdd/caP9KRvsAFtZEy3/tNhNjRQ6z2zhqo6m8=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=WJjMGvwwlnWneFM047ePqiec0YgdApoasu0QgF4WB+6v9oe5X1outSicDIoyNPtLpWqVmQviICvUPjbqNZJD1LXcvFYVi1I9CFRdS5jQ9H9m1eVW8bl17n8lN7EaS0YgnhKkreZCkiApS+E6FM57UbjH0K/7OHDH6WYOpbdzF2c= 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=CyWHi+E3; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=GOiWvtJw; 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="CyWHi+E3"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="GOiWvtJw" 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 53UHu5sG017293; Wed, 30 Apr 2025 19:59:58 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=cc :content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s= corp-2025-04-25; bh=OmQPY3QSds1O1QJKBLd0uNk+vb+5JphREDqX1bV8D3c=; b= CyWHi+E3W8+/oHBnZzQ19jz+lmA26EiF9g+Yq0TCPwbldYyFO0osWyRiPQ4ELdkw V+636wwTeSGdb008EBDGFbBRvRjZS8WzpfeoYp77llMOizDn9X2nqa9xygvyO1cQ h4ElpOtnmSm4EkcER0arsP3d2Zim1k/l3pmHxZLMQ1TbCYPLaqwxXS50zGWmDmVD yx+h8SC2xC4G9+0HXYa88thXzNkyO1/GlIwN4yZUguIqSYJiqUqfU5tMlfjlS7wE 08lmVW6i2qNwhaD+ohKiJOwhVNWFdRu3EiJ8iKijRyZs79IkXMh6gSXlZfwj8YmZ wZAq9X9jRY8USkX5RsrqXQ== Received: from iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta02.appoci.oracle.com [147.154.18.20]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 46b6uma0bu-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 30 Apr 2025 19:59:58 +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 53UJPCno035547; Wed, 30 Apr 2025 19:59:57 GMT Received: from cy4pr05cu001.outbound.protection.outlook.com (mail-westcentralusazlp17010004.outbound.protection.outlook.com [40.93.6.4]) by iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 468nxbj50n-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 30 Apr 2025 19:59:57 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=oCjYDFT+J0nBQGQGQmEC/2BFtj1eI43UKWc/fexsf/NNZKEETpwcfoy0QsJ70bHiEqfnUyBd8sMgoTGz94uT/QGjBDCXw2s++lO6TBZGKm/1IGr5/iQdY6ISe/FP/K5jD2EDJhjEBR2sUiVW18p/b9UZHrzjKDiVWN5xxjuoKY8xJxDgRFJ0fheYQpnDz/N9EXcPTa/hh1q1+tPBmWj+Kpm61QGxJb5Uwu8eIoz6ePjajeIwP/Qfi+DfxSe2WFA/j/wQP3KBxi9OrRLIcWwi6nj6wiOw/Hwxjg1YvuzbGiX31W7lLgmrk1bFVUodcuMcdE87JMwros05y5v3dufx2Q== 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=OmQPY3QSds1O1QJKBLd0uNk+vb+5JphREDqX1bV8D3c=; b=Acb02+99jwOo7EW/4zqfHYgjg5n0XrrozfY+8Gi6MmTbADon3CQPOZSLQPoE10LDEiGftUJvGIlRgV2PLDbxt5Ezx0csSvFdamgCAe+rARgHPMAJiJh94jsKnQn/cqQiXRNEKtZ3WQ4xv2UEfqrd/VFTKKo+tYQyJ73w7BUVjMuvRtNe0e2py4MS6wKyZ9oSjUx/XGut0T7LG6RJ30aNBODL+P32aJxu2jGeGCL9422RP9atL/4JABUml9jY/FtuiXJEmVm29FzTB4i4FWCtiLBgCjLlxW86wpBftT6AxCEPBEKVJVgk8XVEcX/fa1ozD3g1mFDtWKGnmQWbGn0zyQ== 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=OmQPY3QSds1O1QJKBLd0uNk+vb+5JphREDqX1bV8D3c=; b=GOiWvtJwzEZdTGvgnRqC5xpopZbVaEOqYgWKb9OXlAOkf2zp5wOsdLEfL64IfpC4nlIjr9BaNKXFIbqN3Rf15Mp7ilEm3LefefTNAIgfKxh1XwEx/HPo6bxTkrPTavQS3KtNViQpfmZH8Ei+Nfxpg5zAoCQWW+Q8vu6vgsotiwA= Received: from DM4PR10MB8218.namprd10.prod.outlook.com (2603:10b6:8:1cc::16) by SJ0PR10MB5629.namprd10.prod.outlook.com (2603:10b6:a03:3e2::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8699.19; Wed, 30 Apr 2025 19:59:54 +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.8678.028; Wed, 30 Apr 2025 19:59:54 +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: [RFC PATCH 1/3] mm: introduce new .mmap_proto() f_op callback Date: Wed, 30 Apr 2025 20:59:35 +0100 Message-ID: X-Mailer: git-send-email 2.49.0 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: LNXP123CA0006.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:d2::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_|SJ0PR10MB5629:EE_ X-MS-Office365-Filtering-Correlation-Id: 343a85a9-b761-4588-c7b5-08dd88219327 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|7416014|366016|1800799024; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?YRCD0YV70OeoqG3g20Kpoo9yX3GQgDctAi+/XaRMte2K8HlFLyONVsUUN4zj?= =?us-ascii?Q?dZy/XenmW1A7MsLkEv2RJQj6dvZ85BNsIr9Lu25QIEgKOI+UBo1o2CqQTAee?= =?us-ascii?Q?/ZQ4NC6xVj6CL/BqJkAq5a6QqTQsyF6R3T2cvgZRB+dfDU+9UpFUlw9vDlCn?= =?us-ascii?Q?LvUm+UX77W0uCJGx89tgwjBWtosdB2sJ4eyDOm0NfsSHBMJJZ6PuYxD9n59R?= =?us-ascii?Q?x8bszbMgXo4rAg5tMzQJnDBG1qkdfmch+QMuWSrime00cY3AzNcqDo7haca7?= =?us-ascii?Q?6r1ldzvpdkVWlvGZnQU7Hy3Cz3OOpF6BkOHf1epvDt/4gVRyDVWkUTqh+uBD?= =?us-ascii?Q?SRG0ld/1JtODOSp39OmYlyXMza/bg784n3kVFzp6z5MqdO+K67HmRByU1TED?= =?us-ascii?Q?YqOfGPZeAQ0bJXvHGU4m0qFHRY5cu0Kw+gRI6UTvPEs3MMZuUFIkZ4esM0VM?= =?us-ascii?Q?5Is3of7aiDQzDc0DIRvGgALV5e+6E+Hqj51guKBe8x1mmEmTHrbg9kfLpM29?= =?us-ascii?Q?0mX7Y7dF3cZ6qlxrRCMse24aXJiLPHjztcAzqYbEGE1P8YxyWaXSopMMzReG?= =?us-ascii?Q?lBJhCQD4Hz2A6Yc8fvZ+r6FtiIfMEkp9JnZ8Ep9QV+uPcNFRIKkiP8AjV3OD?= =?us-ascii?Q?ezfxAiTQqGRU73S5cz5VbPirXAHA55hPSTbWOommix/JyEy+4aL4R45DovS6?= =?us-ascii?Q?gFhF5AXUteSDkTXyuE3cxJOlF429XrrOWtBJQEImrhPMMVdGPSRxC/rrH1fC?= =?us-ascii?Q?0XRvQavYowqJeSv96+cxBGAv21mfZrWh1dZjZTDr017K+xrX5eFXlOa9bnIj?= =?us-ascii?Q?enVux0UnyKoSPGDb5Xjygeop2+Gr3gc+FUWaLjasqqfHOhaPVEZDgCTlXINZ?= =?us-ascii?Q?cZ0nUfn94QvLibe47Me5Y+D6OCP4p3hr8whE2scNdff9QNHJiww37l4Ksi6i?= =?us-ascii?Q?BktyubCPMHw1JFjzkLqKXnTv/65tA8m8ogO7ak/cy2i4FvkX8qV06X+Pcwpk?= =?us-ascii?Q?u4hrHwZCsSTAEpfPrKrQIm0/tKDRGO35PwQxQtQCE9YEypS9Mr+DKCA9Gd5r?= =?us-ascii?Q?x9TGaBLpLxBBDQ3bK4hK8X4sNpKoSEeQJUI2xyukQUQ8S2T1AfCG1FPJCWyl?= =?us-ascii?Q?JzTH5Ewu82S3E2GX2RKlnko/ATN1D5UTSvQO96wmcd4qXh+qo0HhaZCwjH8x?= =?us-ascii?Q?fSaWBtmMv2z+spJdytblPQOTfVEKUhBfdaEPyPyJESnaO9Mgs0InHbnETztb?= =?us-ascii?Q?M6b49i5uU8Rl0GEMur5LglrlGuKalDfU72MIulixZIDKfz5d9N+pgCkGg6HV?= =?us-ascii?Q?XYu8UufaLn/DLBPil62hKXG0bXYyXmhUVY083rTCvdY1styn7Z6Ged/+xKXS?= =?us-ascii?Q?w5EFPRZu4Ct376N7x4o/eB+5WhoE9Bvj85S6/izXGrM1MhLfzw=3D=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DM4PR10MB8218.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(7416014)(366016)(1800799024);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?oF0CRpv8kjcnPKKaewhb1jrohv1QoihTDJ/UHB30o/flfMNEbEsmHDvpKddR?= =?us-ascii?Q?BWYYaQreB93NBJGqnluPZJjWks6nAVyuMUnYMc8Zk74wwaCE/uWpYQvf2TlR?= =?us-ascii?Q?aGI1Yhkih6ioLh4een0EnvkjYMu2S3A5sOD9esBrZ1E77n/WnAESdU2viQAG?= =?us-ascii?Q?VMDgaWKe2wNwE0TeKlgnqu2T95vE3KJhQzEt5REzN7JnCzjQzT3GxoIW49fD?= =?us-ascii?Q?Da6vbJd1nq3XbxSxMxxyMdO0UKrrk7mAUWwQIDk/IJJcHf7UhxHKctWciZ6K?= =?us-ascii?Q?iBPH3ryqD7ajTRVDNcdg9w1oxrNz7wHL9PlRFrQrrHE8nsX+aYzqdlurxXhE?= =?us-ascii?Q?0pkwfyorn4zIx7rozPRWmPMdvDBQ2YZUmrf5uYkWTn54oWDAMbdJ/HULUVB+?= =?us-ascii?Q?vg9Xx/xUmHwgtKdspEkQz7b0B256+grYG7D00E5oF7lnZ/vTg++51ejcyzhq?= =?us-ascii?Q?jmVK4F0qjtZ3/c/xm2uMa9X0afbkVGJrBLZoFdN1wjUpeDuMWnL52p9MRHMQ?= =?us-ascii?Q?wZyssokqAOOse8iJXLU3E2KJMVZA4acZTY2uqE3LwcMybOUiw9P+2mn9CcoW?= =?us-ascii?Q?jOr46iilUUZvElgdFt32V511ehNckMRGYYWTRNE3OJfLQ1ONnvTkKjmVdUP5?= =?us-ascii?Q?PF8NsNZGh9xsJyjo/xHIsZEohuPun5iWs0Haf9ERxFEglx8O03cjOYgkwqks?= =?us-ascii?Q?1vSirOeBmyvX6AjcJbTMx+8k/dtD2c3TXKCVheItzQ3gf+5/BbtFn/ag4dTa?= =?us-ascii?Q?ISvfMc55bT4valLozMlX1XmMQxw4mxzcr9LSjmO2axtpxOO1sqRNGt1rbQg9?= =?us-ascii?Q?SNOWepCCd+IOyxBfXyqyRUqYPsspkifVZ3ZrC5cR93bhQbjX0ICbO+8+Cwl2?= =?us-ascii?Q?wPDAxIKve+lB70BNkJGvuCcH90Sk23Q4z+R2yel8EdiPAo8rJRtNnapu9/4+?= =?us-ascii?Q?Q5yU+w1Zluiic0jztZm2TKEienIKrDsrL6mJTKK1J1MXVR19MEJfF9nAERSl?= =?us-ascii?Q?oAvDF/6mtr6bmLHlA9ezD/9F9GS+GGa+GhnVYgUg3EcpHd5YWlnSLEDMMpRe?= =?us-ascii?Q?sVcDPoDYpOZb5oZQILAB/LGphY4Qinns2HG2K8O5AjWkPg/+RsRGiMDet4AU?= =?us-ascii?Q?DFf4up0hkt2/OwSvN9V87CXkLfnElj2gyN2p+tO6uHSvrHX7yBGf2wm6czDL?= =?us-ascii?Q?BVjlMTxZcVV2d9de5ayuk+31QR9qLb0mEcJNtjm2qFgr2EiFoXb5o5THkjFu?= =?us-ascii?Q?gjBz5xl/FWe0Hku3CO8Mu+GrM/I1ewNziRrFaJKvQ4/byXw9V2JAkeVQEO66?= =?us-ascii?Q?1WAsA0uxBM6DLLcExVucn4tXKFOh9rq01veCrtz/4lizIzbunpArpbH4hUoF?= =?us-ascii?Q?oXpam1wSG3kXMqjfLjTGWQ3KoasGimTKFjU/OGj78COGC/gLru7GpH+XWq8Y?= =?us-ascii?Q?MTOGq0ikmbmnSOhtuep8voi1xjDzfAVXIBovp7fHN+bSWh9Lnx25LL8zeClD?= =?us-ascii?Q?WMyudHjeDIFzVscLU3O6nk+uOB+2qRNRRjZCiYHLyd+XC8ErqEA23nfLzNRw?= =?us-ascii?Q?vd/Cg5+3xmv6R2zVhCmpVv8yNhKtnmhvDbrBe4yjTyWRswgLXqSZfAuhiUjc?= =?us-ascii?Q?5g=3D=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: ffDbsPueToPO7L69tF6dz7Uwn7GwMUqYt7Bpvxt+Z/Uu4jTPLudyyrHUZce28lmnnAbkqTP0YLbJGmGF7heHFzX/18Nk62etdEwuoCtTU28tNKmaAMhQEziuILGugoNt9RIKrgMSL2ZegZWvdgFS902y14KXeKnzW6gnRX0pjx8J7VEGdYDpPXDwa0KUE6MzypUYCwQAp8gA8Pq2KDGG1V6G45RHP4oCYpOAb2X1I0YyR6DWyG8PLOYs3cgkhnC6VBVJYiuR2rR8lvmrD0CyLLYndOiF6JohNzbr6C0/T9yfnwB812V7XdZiVMLERWmyuMCKEkyOXA8x7uFweGaSZytaX2REq1fjarm+EQtljJI5Bf8Fx/oT1A2GrOMAFGyEmKyemAJD7Yyyob2JUj7O+16qQBpINsS+CZ0HE56iLsXuUQBWnvfmt8Kp5HE2Fxnk8iy9J0abgn0wbtBtLIXNLGJJqeUvvXEsIJTBj8JAaw+o7NnuLomPAqUQx0ANllU+dlVEG1d7Xd5Eto1C8e9H5bAcK81C8450tbVzhm5INE7NbjZ40HvKGsEcqFl0aVtC+LpXVMMQdRyXB1n8jflQTXJYnu3BBjxFpCj1efvux10= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 343a85a9-b761-4588-c7b5-08dd88219327 X-MS-Exchange-CrossTenant-AuthSource: DM4PR10MB8218.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Apr 2025 19:59:54.2601 (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: U3Td2nOqpj1yv0TkOlLUyigpI3iv48kih9ROHv9Sbq5JLWI4GmlnidFjuflt5JYgTrqssdeDNQYAnxSFMptV9rXATX/b4YxNoo7M2wYL1xE= X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ0PR10MB5629 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-04-30_06,2025-04-24_02,2025-02-21_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 mlxlogscore=999 phishscore=0 suspectscore=0 mlxscore=0 malwarescore=0 adultscore=0 spamscore=0 bulkscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2504070000 definitions=main-2504300146 X-Authority-Analysis: v=2.4 cv=dfSA3WXe c=1 sm=1 tr=0 ts=6812813e 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=XR8D0OoHHMoA:10 a=GoEa3M9JfhUA:10 a=yPCof4ZbAAAA:8 a=bBcQKemid6v3KLeQvokA:9 cc=ntf awl=host:14638 X-Proofpoint-GUID: IINubwoUxVu6XHYBlLR9X9x27nFkpsKi X-Proofpoint-ORIG-GUID: IINubwoUxVu6XHYBlLR9X9x27nFkpsKi X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwNDMwMDE0NSBTYWx0ZWRfX7cnoU+2CRZCY 3mgdf2MiSg//wgdlDQd5lhGVaqJAZW/S3m8Klzhs/idIogo4W+TYMOwdy2XiaXgAKynqf4VARmY 8ZeVqIBMWm2exsFiHo3s3CN8WL3d2JvN4dIw5Cy64onuVyb2gMLIghkt0Av37T0g9w8tqq95NS9 JivRxB25vqsnW2XZ0sldP0+n+uNSBEUtdumlsRkDv/fyBEDFc7ZkYZKT129YubpxuzjZJyaA5Np R+ZOXJ9sOoJlDsDCYZAPytTorAxNTREPOI0zgZJEOr4QC1R3QW/puum76UmWVaToomcM7Cm5UYW 79iNjbAZoYtKd+IT7k3FMm4JwzpiucXJg8clGP7qnPQZX8LRkliIYKVAPwvve2xRVewTH11G+da 7Wi3UH+2VLTYC1NCNN/pvUmOHjTCXG1M1Z9MAogYvfNPG8VvTvMuWUn750Xvj6uoB4oWHY58 Message-ID: <20250430195935.b0iCtuJl1WOkMAKx2kXoFFHXjvszU_TW_gI-BSncXPc@z> 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_proto() 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. Update vma userland test stubs to account for changes. Signed-off-by: Lorenzo Stoakes --- include/linux/fs.h | 7 +++ include/linux/mm_types.h | 24 +++++++++ mm/memory.c | 3 +- mm/mmap.c | 2 +- mm/vma.c | 87 +++++++++++++++++++++++++++++++- tools/testing/vma/vma_internal.h | 38 ++++++++++++++ 6 files changed, 158 insertions(+), 3 deletions(-) diff --git a/include/linux/fs.h b/include/linux/fs.h index 016b0fe1536e..f8ccdf5419fc 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_proto)(struct vma_proto *); } __randomize_layout; =20 /* Supports async buffered reads */ @@ -2243,6 +2244,12 @@ static inline int call_mmap(struct file *file, struc= t vm_area_struct *vma) return file->f_op->mmap(file, vma); } =20 +/* Does the file have an .mmap() hook? */ +static inline bool file_has_mmap_hook(struct file *file) +{ + return file->f_op->mmap || file->f_op->mmap_proto; +} + 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..b21d01efc541 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 prototype VMA that is about to be mmap()'ed. Drivers may ch= oose + * to manipulate non-const fields, which will cause those fields to be upd= ated + * in the resultant VMA. + * + * Helper functions are not required for manipulating any field. + */ +struct vma_proto { + /* 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 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..98a20565825b 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_proto: %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_proto : 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..411309c7b235 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_mmap_hook(file)) return -ENODEV; if (vm_flags & (VM_GROWSDOWN|VM_GROWSUP)) return -EINVAL; diff --git a/mm/vma.c b/mm/vma.c index 1f2634b29568..76bd3a67ce0f 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_proto(). */ + 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_) \ @@ -2384,7 +2390,17 @@ static int __mmap_new_file_vma(struct mmap_state *ma= p, struct vma_iterator *vmi =3D map->vmi; int error; =20 + VM_WARN_ON(!file_has_mmap_hook(map->file)); + vma->vm_file =3D get_file(map->file); + + /* + * The caller might only define .mmap_proto(), in which case we have + * nothing further to do. + */ + if (!map->file->f_op->mmap) + return 0; + error =3D mmap_file(vma->vm_file, vma); if (error) { fput(vma->vm_file); @@ -2441,7 +2457,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 +2544,69 @@ static void __mmap_complete(struct mmap_state *map, = struct vm_area_struct *vma) vma_set_page_prot(vma); } =20 +/* Does the driver backing this implement an .mmap_proto() hook? */ +static bool have_mmap_proto_hook(struct mmap_state *map) +{ + struct file *file =3D map->file; + + return file && file->f_op->mmap_proto; +} + +/* + * Invoke the f_op->mmap_proto() 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_proto(struct mmap_state *map) +{ + int err; + const struct file_operations *f_op =3D map->file->f_op; + struct vma_proto proto =3D { + .mm =3D map->mm, + .start =3D map->addr, + .end =3D map->end, + + .pgoff =3D map->pgoff, + .file =3D map->file, + .flags =3D map->flags, + }; + + /* Invoke the hook. */ + err =3D f_op->mmap_proto(&proto); + if (err) + return err; + + /* Update fields permitted to be changed. */ + map->pgoff =3D proto.pgoff; + map->file =3D proto.file; + map->flags =3D proto.flags; + map->page_prot =3D proto.page_prot; + /* User-defined fields. */ + map->vm_ops =3D proto.vm_ops; + map->vm_private_data =3D proto.private_data; + + return 0; +} + +static void set_vma_user_defined_fields(struct vm_area_struct *vma, + struct mmap_state *map) +{ + /* + * If the .mmap() handler set these, that takes precedent (indicated by + * the vma fields being non-empty). + */ + if (map->vm_ops && vma->vm_ops =3D=3D &vma_dummy_vm_ops) + vma->vm_ops =3D map->vm_ops; + if (!vma->vm_private_data) + 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) @@ -2537,8 +2616,11 @@ static unsigned long __mmap_region(struct file *file= , unsigned long addr, int error; VMA_ITERATOR(vmi, mm, addr); MMAP_STATE(map, mm, &vmi, addr, len, pgoff, vm_flags, file); + bool have_proto =3D have_mmap_proto_hook(&map); =20 error =3D __mmap_prepare(&map, uf); + if (!error && have_proto) + error =3D call_proto(&map); if (error) goto abort_munmap; =20 @@ -2556,6 +2638,9 @@ static unsigned long __mmap_region(struct file *file,= unsigned long addr, goto unacct_error; } =20 + if (have_proto) + 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..56a49d455949 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 prototype VMA that is about to be mmap()'ed. Drivers may ch= oose + * to manipulate non-const fields, which will cause those fields to be upd= ated + * in the resultant VMA. + * + * Helper functions are not required for manipulating any field. + */ +struct vma_proto { + /* 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 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_proto)(struct vma_proto *); +}; + struct file { struct address_space *f_mapping; + const struct file_operations *f_op; }; =20 #define VMA_LOCK_OFFSET 0x40000000 @@ -1405,4 +1437,10 @@ static inline void free_anon_vma_name(struct vm_area= _struct *vma) (void)vma; } =20 +/* Does the file have an .mmap() hook? */ +static inline bool file_has_mmap_hook(struct file *file) +{ + return file->f_op->mmap || file->f_op->mmap_proto; +} + #endif /* __MM_VMA_INTERNAL_H */ --=20 2.49.0 From nobody Sun Feb 8 06:54:33 2026 Received: from mx0a-00069f02.pphosted.com (mx0a-00069f02.pphosted.com [205.220.165.32]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id AC8BA283FD1; Wed, 30 Apr 2025 20:00:18 +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=1746043220; cv=fail; b=Zhdt9byOVrCOpqZyqO0xDl1w8Axw5Pw5JnwU/z73mxcbDIQfQxtknZmBxQZz1ZxSl8Uirw5ALjBdDi9/HP2f2MSLb4/Wp0QFoO2mMr3W+70k3J+iyRzkwPMz1eTP2fZAHoOTGR94AA0e6xCzG4jMpHhZ0XafRxiOGkjn9SYL2ak= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746043220; c=relaxed/simple; bh=ag840OWJ74pDTOnxviG1+PHbJZvJTBNbBMFdFvvOTFw=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=MzCJzB6LG2WzYCI500gkasL194Way2dh3k5SibtdDH6kqMPsr2BwK7sJOWrYAyUegE9a5EmkUwn4Gat5lmb+j1jDnMVp8KwdA3CAkszyLbuu2u4z3fEp47CZzTxX/n6oIsCTFYdx88wzMzD2bLUG64lT3WHss6QVUelfbTDaZOc= 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=EniMQwkz; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=XWQwjsD0; 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="EniMQwkz"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="XWQwjsD0" Received: from pps.filterd (m0246627.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 53UHu0mv028536; Wed, 30 Apr 2025 20:00:01 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=cc :content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s= corp-2025-04-25; bh=gfV7rSXUTNGqd5Is+eYqmCiCyC2f1SwBgKzwZfgphZ4=; b= EniMQwkzY12N2A4FK072oaV3/HE1GYuzOW5p5G5HfwA6NdmMXxMysQmnIRFd8yCS xKslqbPJIHJIHHIjRZ2JqcN91wIG9Q0Nd9hpg7aYEvvHTCsmQ23O9YAdvs0N1i4e vic8V0ykX0d5b027QZLHPgx9VtagQYuUtVj9SH8wTiMGZPX4WaLfJGtKXjlCgdLX UZD3Z4jI0dRMGmPS4PHyLovNIGhYIf0VN4kxiE57ee2W81g+G8HomiNuNhpY9Rgr lwuYOn0HSU3SDwfgtgq+yaend43xEEEVRcQ2qKhaiFfpIQvpNi5Wy9TFtYxPKk4K StHn9pxNAv4SPeQ8RiT2pQ== Received: from iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta01.appoci.oracle.com [130.35.100.223]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 46b6uqj250-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 30 Apr 2025 20:00:01 +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 53UIrmJC001349; Wed, 30 Apr 2025 19:59:59 GMT Received: from cy4pr05cu001.outbound.protection.outlook.com (mail-westcentralusazlp17010006.outbound.protection.outlook.com [40.93.6.6]) by iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 468nxbs59b-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 30 Apr 2025 19:59:59 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=PURgYsZnUyol25MbFb2rCmf/PK/YAwllQ4BgeY+qa6Jbe0XIV5QPJisxfA+gKPVcPolQ4x2kqdU+Zgl/eXbN/3ha2N/Dv4dUch9UPTqEcyZORecyi6cgSC9KmknnMs63xzHznELwuIh7pqr4BwYENCnPfbZoli3iAMIUk4k5Uc6Ic5T0tVBYtio3iPkmArTuzs1tdVlB/VG6z+4rIhH44/UWp0AiFsFi2C5fmXMsprenK4z0PGYGlW7wJ8rJD556ywUJ15SQgwrjY8zALR0HS9fvxjLJtlNnDsxwKoBCQz0bDRqvLNbbI0ZJ7pDXMbbNYWWtKAOaec3lytI4bJOMUQ== 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=gfV7rSXUTNGqd5Is+eYqmCiCyC2f1SwBgKzwZfgphZ4=; b=sqph+SDRRd0imWpnCPmBe8Py6AyWgBJyvotJpPB52XfWfqjCF8vzCR0Fos/+cLgiDY2dUHOQg0d7Sirle8CciugQeAIjGJrb1+9fIcA8TK8MDOPuohqdL+l6IDnd0zy6NHdbsVlgJOTqDbp7XIx8VFqVXqFM2npXTVQf0zRdDB2cv9u/1urdo821sb7yYFk3jooFfIjqZsqgSXBjxaAWxdcK97CFXVwrI3/vc93Nxy7bVvfEz6gO+4HYsewtb5dB9TDPLjzX27aSlmPwmlJKL6OiMB0Z8/5Qv1YGondjRSqyxVYou3hZ9zWK5Un27HnxukpygTS0Dm1NS5mhK43mQQ== 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=gfV7rSXUTNGqd5Is+eYqmCiCyC2f1SwBgKzwZfgphZ4=; b=XWQwjsD0hNRbUujWX1V8k5w+fvgTerxY9MBeBtZy4N2ebGj87G6UuquhYPKS5gduC+bo54agLpme3te51g4BZNT9Vy+YaQZf8BlmrScbF1Y8C9alAOdB89wmTtz3tMTIdZlKHFCN8GlHAolJrp8lWr8e3DE+VUFoUsHcOzNAuzc= Received: from DM4PR10MB8218.namprd10.prod.outlook.com (2603:10b6:8:1cc::16) by SJ0PR10MB5629.namprd10.prod.outlook.com (2603:10b6:a03:3e2::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8699.19; Wed, 30 Apr 2025 19:59: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.8678.028; Wed, 30 Apr 2025 19:59:56 +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: [RFC PATCH 2/3] mm: secretmem: convert to .mmap_proto() hook Date: Wed, 30 Apr 2025 20:59:36 +0100 Message-ID: <7bd9f0abd33677faa7d9aaeabede8d310f361a16.1746040540.git.lorenzo.stoakes@oracle.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: LO4P265CA0133.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:2c4::8) To DM4PR10MB8218.namprd10.prod.outlook.com (2603:10b6:8:1cc::16) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DM4PR10MB8218:EE_|SJ0PR10MB5629:EE_ X-MS-Office365-Filtering-Correlation-Id: d1a61cee-5b4e-4a71-92df-08dd882194a6 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|7416014|366016|1800799024; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?eel92Ts98sWvITci5N7UwkSiBtDr5NvkcEXLYOxW19WMwtNlAPHnoqEHBilO?= =?us-ascii?Q?j7I5oy4ia8Kdr/tUN41Xx8tvQ632MlBI7VOSaD2pze+zlaLkxG3BXhTQokw2?= =?us-ascii?Q?uU9viFMQj48Wg0QURxQeSenQp3KtdHz13RBMHhIU+nO9yJJ3M3DMEZbtHXEL?= =?us-ascii?Q?JLU2ebo+1Lb2EE/RPyE8iApahhZ1/hbUNwNrcDYkFJMd2ZagRMcOklOzkvfT?= =?us-ascii?Q?qMxskb4mqFhWtI69PmdZBQ6UZRZSazCrckPCE2FyXAdcKr7IpL65hMCU8hBd?= =?us-ascii?Q?cLU15aV7opBuqsjvw+9PBFNCCpcGp9uWM0IZPx4NcO60gC8SvaH4dsJcyV53?= =?us-ascii?Q?51wJYp/8M9Pw05OyBzVf/IjTJJY+NO9irWfoHYRxo2hRt7XyxX6BiCW+T2Rg?= =?us-ascii?Q?RS5K+r7jt58Hyr0UvN7Zgh0SdvghrrpJyA4DNTEZq2SZj9cORRY9mNSXobA5?= =?us-ascii?Q?s/2aTsjlLD85mKiEB45ZstxklFbxlK1dFve3/GjJXdIRXV4vYo+rDB94z+Wf?= =?us-ascii?Q?FCrq1IXI1sbcDYMysRGXWbCWdge+OGHeJRQ5yN0BXXDvw3sv58cXfF8KptOO?= =?us-ascii?Q?L0xaYrkSBLJqakF1TSvxJG56vau9pEttGsJe6rSsgdxl0Ds7efNvj8Yg5xpU?= =?us-ascii?Q?k7fPy00ZpKC2wKi0F+83p5G58Lv79SSktd455v32Uywa3q+cFwvKQupibmCd?= =?us-ascii?Q?zZIaBFrRjT/qh2g0wTu0OBw1Wg/W/jhdYbBADhM0h9/Km04iKjb4Sb5qci3V?= =?us-ascii?Q?JX858aQoqzEJ3t4RdCO3NRZN8gruV0EF8pdr+avGqQlQU58MOtv0Ub0IDspb?= =?us-ascii?Q?B7pt/K1bNqBvSHGhTJOWWtk2sxcgWwU8flRRJiBHoa9xH7Y4ZVI7A/b43BEH?= =?us-ascii?Q?mWImmDPuK6Rb84DM+OOE81qfgs8oxL9qP876FqsrdrTz2HnLDxu4jSiCnkGy?= =?us-ascii?Q?PWvKfjTxOStWlAsp+yD59phw0QsDL0Lk6d6UnzC63IbHsYLDAy9I6Ang2Tak?= =?us-ascii?Q?4GcfcnJ8nrhKtShoUmbCAu/oty6/FpEyHRGSwnqluG2Y+4T2ItArGUUsE/jB?= =?us-ascii?Q?2RVoVBd4jq/B6IjjC5qfZlEu1mSFdgMg4INs9JCO8aH2yuU6LA2GMnKx/UJp?= =?us-ascii?Q?HoWzBG34BsEqc5kEokspo4hQ2YK2QSuKn0420pyR+vU01kT8Ql1wl4vo2/kO?= =?us-ascii?Q?HtDT8AukNit3AE+cNkhmPlV2xnsp3goFvPUZAn8EV/1KwHO6H73k8dqRILnf?= =?us-ascii?Q?5mwYKmqexqqocddl6fNRokEJEAxJ7xoJ/iT2JAWT+UK0k0FFU6BNP4Wq2QmE?= =?us-ascii?Q?ySM2daWG2uIIHyqmY2XP0lkhH/6S5TuYnj6hb1A6qqTajGMCu4raO+aceXh1?= =?us-ascii?Q?ccUhwJasoHNI5/QgJaYwkmYugoXg+ylH5W+YwglOFOAbALj77IfwyTiQyAjA?= =?us-ascii?Q?5+TidanD7TY=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)(376014)(7416014)(366016)(1800799024);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?Lp7cMe0xNo2E4+dVT6YP4PUyK9/n+/iANywwpyJGk+TleGnzz+QfPAttlXf8?= =?us-ascii?Q?Oj96qS2irX4cRaBKFuMYJV3bt7JjrmEYfjP8qfCiqd+OGkiDyR+Bs+VYcBOl?= =?us-ascii?Q?16FhxFxoeIDQOE+veb1q9Zm+9SocCMPo3p8sWBw0uZ8KmuK9KnoaHhyunOfg?= =?us-ascii?Q?UUmK9sPXFGfQaY6VoAe+zgEECLKsE2hgywe0lPqcSaMAUtn8+qHmd5hTUiIH?= =?us-ascii?Q?L/3htfVL7HW6DKBpEqqkiNgqqQwVu9ZUkVXKaoFL8cRI1PhZ6ppE7w+KIK3T?= =?us-ascii?Q?uM49XGTTtv6noHfo4BRswMG3/staNEp5PdE0yDPZNfWVBYuvkOjEdHBmUmKV?= =?us-ascii?Q?Dlj8HMxNFjuMJboaWxNdroU21dRS5Jem1/vXVeOiSfCU4x4ey/EgtDr5B9yM?= =?us-ascii?Q?JfxguVVJc2/DyqN5mPNaZDIGmNy8fyQ6vSDO0810aXb5tv/mWKs1FUgUMI/R?= =?us-ascii?Q?WZFNctzmX0uguH3ZeNLodhoMXZQ3pr2L2IH05YpVyxbwkm42ZOC1L5kbitKW?= =?us-ascii?Q?0AQGqbhEbEiE7xdjPE76XPuuDH/18n5I+Ds02oY/Di54GJGzrU5eYLtapuvb?= =?us-ascii?Q?E2hCKBjnJhUQdD66w5fgyll7YgsLBjjPakYrvp0jkYtU4QmU4i/0jSqzrCwg?= =?us-ascii?Q?afPJPP9x7mAqJWATkqH7+gspRAqzbrbSCQi42vkkJw+891fFmqEbTgMdeiLM?= =?us-ascii?Q?Y9Tmx96tusVjnhhRADGitBXHUjz7c5z1QzT+qj3qYKQueQ+MxGwGF1uddfNx?= =?us-ascii?Q?t1PK1Fco/JxAcAvo34uEIpoRsOQZde/iQZhoIpXgSwZPcTMHcC77XMWI0quP?= =?us-ascii?Q?MEQdGtvCBeYKyMySZ09sNQ+1pMN3zhoFWTay9bg3Z9gf+RNKDrVAQsvtJhoj?= =?us-ascii?Q?LqKv9T59BMN1wuasjfbR+xTbXNJRfbDydvBM+AlrQIUosE3Apbu1uLhwNaw9?= =?us-ascii?Q?INXQtBtECX6CkeA74Lp+D0tXaHHx6swjIHZbtWP928E+giU7UJ5QZwmFWFAu?= =?us-ascii?Q?H4sxvt3vKnLmq1UXv+5n5YojqkjcKVp8LpYKab8ybt3y84PMbD3johVLM3gB?= =?us-ascii?Q?JAIas6yoP4EGfEDPHuG9KOUfIM405NaEU4J3qJNtG5a7HJWv3jaMnE9YLlIE?= =?us-ascii?Q?jFtaD2rsCFFkk3KqfQYaANKfZ9ahggTprStBNqH7f/scDHERdN8/C+BUS6IQ?= =?us-ascii?Q?UHXngvgIMRS1Qc88GIk4FW5ZRLCgx7cP3cWmk5U0DeHyYbkIcSGYBWQ0F2+z?= =?us-ascii?Q?WagKYYX4d7EkPi7rSSGnXdiSFsEnXZxr3XoQDAM4CWwls5irJ02vqf7WhTNA?= =?us-ascii?Q?XKColtUJMA6eZ6R+51qC4YfSXIo5LSXGWMII8/Ty2V8TxivxdAGc1TGp7YQx?= =?us-ascii?Q?+jBMGWUFr1n3lSDvVoiGD53YD2ILiW69KX/oFRfoLtuy2sblmw7zq7Gxo6WM?= =?us-ascii?Q?l5SNUKN/6myN0Hd57I/zs4yPQNVPze4HoYB8b73bBgmcw/LFizuhNe/VD9Ru?= =?us-ascii?Q?6FshjKj3MGRM4dd6jdXa7990SEC41o7T7rr8jridIzlrET+4d/4TDWOdccmA?= =?us-ascii?Q?55HlWUM9tdMo98BtXANn3mbMKpNSsvGXGarWfZDDyw2W082zn6BdiFN31nHb?= =?us-ascii?Q?pw=3D=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: Co26LQGltvrBRux/u+pvZ/SRsRNYiAf+idh6g6F8evJEyfPw4VPi7DepO1HZPhXK5QUClY4JqTqA+5ir5pR51X1zZ9Y84OzVCryQF8nUwvbjCNEsSfn9yn+D3uMRGn2vxF/zXY0TU2LJ1gQDBjjLZemqiYPIg2RQ0AdyorwEBKR60b4hmBPpP9cA/Eg2JaYH4NaXHk6oQCSUkXAgvpoll72f0IpN5PMxLqWWIqJimHO9iAfOxnhPWTuWpl/vO3uVnK6zUODD7A+TaF+/vDgJv8SBO/N8ChCND8XsJuJV1W72HIUlur5F8AWLvyo+6kVFGyKeQ1KyzZDO4OtVZxZkC2Qek72S3Wgk5xS8w0Znieqn0rdu7hFr613+WnxavGogbeEEpEfYMmQ2bMAqob3tEBfCzWNKR0NwYllAcqMMdj8JP7cVn6R7SC+eky3CvO4KyDqPV4wqMXznQvn9TJXEuWU26MTwyKuYpiTiy3I9NLawY9VCPF9n0e4BwkdmRnXHkMRUsD8YoAg6rxwYi1Dl2ApENdJI5xDdc2XgSswcg6+zGrlFxlqC+6XCEVZXuUlSRV+1I1a+mnVD4rHME0aiSDBunJbqToBi8xsX8UaTI0o= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: d1a61cee-5b4e-4a71-92df-08dd882194a6 X-MS-Exchange-CrossTenant-AuthSource: DM4PR10MB8218.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Apr 2025 19:59:56.6670 (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: Q04bdaZubpz6ZTcMgachW86QcJ2Bv8yTdBDMQklPalqVGfTopwzMPGSdK04kNAlDLouMfdfqGf6InqbyExkrzw7uP1bgoqAJFdQq4x28HT4= X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ0PR10MB5629 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-04-30_06,2025-04-24_02,2025-02-21_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 mlxscore=0 spamscore=0 bulkscore=0 mlxlogscore=999 adultscore=0 suspectscore=0 malwarescore=0 phishscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2504070000 definitions=main-2504300146 X-Proofpoint-ORIG-GUID: OsOohCeyhA9f39m6TcF14hs9sRA0hA3j X-Authority-Analysis: v=2.4 cv=Vq8jA/2n c=1 sm=1 tr=0 ts=68128141 b=1 cx=c_pps a=zPCbziy225d3KhSqZt3L1A==:117 a=zPCbziy225d3KhSqZt3L1A==:17 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=wKuvFiaSGQ0qltdbU6+NXLB8nM8=:19 a=Ol13hO9ccFRV9qXi2t6ftBPywas=:19 a=xqWC_Br6kY4A:10 a=XR8D0OoHHMoA:10 a=GoEa3M9JfhUA:10 a=yPCof4ZbAAAA:8 a=eMrKcSYToJjtSuUrl74A:9 cc=ntf awl=host:13129 X-Proofpoint-GUID: OsOohCeyhA9f39m6TcF14hs9sRA0hA3j X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwNDMwMDE0NiBTYWx0ZWRfX41u5SUKnX7ZM 2YqxWoLsKUnoOiLxeNcuih+k7UCQnR8Y5LDuM47YV+PqSTQ84p29Hjq77BtTteK2DClOhQn5/zY N9J/1LsO5i9zWFJBSrk/bQSWmLDQSJGjAjqfcdM6vYWJVYrqt9FBjOqBSRWdadYdyvkqU21PBJ8 gRHYmTlWMzq7dPNxtVb/q3OZuYqWNUTU2O012xKRZQDPdk2S3cvLMWtYGky93AlGl4KWuSBv7rA 0oeKBMrv0rnpXhEc20q1ZTgPpgcjhUO9bXBCDaJXz9jc6MrY09QmLHx/fLBW14eIs5Qp390cNWH IG5fGG/yGQH0LZJH0FLWTBe2Ek8SXckVIewRcUmjPKeOOkid46x9ksjWy7hfsxf+MBrIazIWhPm yH+y4/6f194+dHIIoH00qgtSv1khep3w9NveI7lt7DsG0NZQ4t/hgN30GDZfDX+bwMaW/6kI Message-ID: <20250430195936.tG9GwxFgQ4MqT1aegROFedhhl8F3GLbgDGeJz7oYmEo@z> Content-Type: text/plain; charset="utf-8" Secretmem has a simple .mmap() hook which is easily converted to the new .mmap_proto() callback. In addition, importantly, it's a rare instance of a mergeable VMA mapping which adjusts parameters which affect merge compatibility. By using the .mmap_proto() callback there's no longer any need to retry the merge later as we can simply set the correct flags from the start. Signed-off-by: Lorenzo Stoakes --- mm/secretmem.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/mm/secretmem.c b/mm/secretmem.c index 1b0a214ee558..64fc0890a28b 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_proto(struct vma_proto *proto) { - unsigned long len =3D vma->vm_end - vma->vm_start; + unsigned long len =3D proto->end - proto->start; =20 - if ((vma->vm_flags & (VM_SHARED | VM_MAYSHARE)) =3D=3D 0) + if ((proto->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(proto->mm, proto->flags | VM_LOCKED, len)) return -EAGAIN; =20 - vm_flags_set(vma, VM_LOCKED | VM_DONTDUMP); - vma->vm_ops =3D &secretmem_vm_ops; + proto->flags |=3D VM_LOCKED | VM_DONTDUMP; + proto->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_proto =3D secretmem_mmap_proto, }; =20 static int secretmem_migrate_folio(struct address_space *mapping, --=20 2.49.0 From nobody Sun Feb 8 06:54:33 2026 Received: from mx0a-00069f02.pphosted.com (mx0a-00069f02.pphosted.com [205.220.165.32]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 5B3B427A46F; Wed, 30 Apr 2025 20:00:21 +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=1746043223; cv=fail; b=njtI+7I1r1mNb7K05o+JHLrSCXo/SIk/Px8uBSBWr1lmIwWmTMhC4GNYlBpkaN1E2WBkSCkFDdf9UZxnvA4dBaJ7SF8iAnPsbSILHe2bGFNJhHoFh3tg7/VRyyY6NDBn6sOSP7aNbkCBMaCicy3darpueh77gFkQKd37+CkXMrg= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746043223; c=relaxed/simple; bh=jo0/0aIT/XugcDN6/phBLgpySvGT+UWgLpe2A/UQmDM=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=ugPQMDlPZ7QxIoi/UDMDOYmQHJG7lNGvcUFg0c/UBcopxjVUe2lgdB3+aOmMSmW1DuzpkgJw4pmxYrXYKcnZmctciKe8EXoM3Vv1niYBIBOmGgZWL0fSL6jj0BTunY/LDj1WG9MExF8aK3o/zy8ToPVQwwOpoN9ElwBNOeXApVY= 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=YgUY4MU+; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=AN5q0jEZ; 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="YgUY4MU+"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="AN5q0jEZ" Received: from pps.filterd (m0246629.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 53UHttEM008802; Wed, 30 Apr 2025 20:00:04 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=cc :content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s= corp-2025-04-25; bh=/I/HV1cnAxwHYKohd0J7clXbAg05cRUgE8nyzc4Lvms=; b= YgUY4MU+93qTGggnC1xgWXZLFRtwgTGJhSjNicO3nxBHKeGgNOGxm2EwBc0EttTz tFF53uwaV/olpqouwPrHaV1CRy1d+fwjN3YViN9uSVS8/kAhayN4fwX58U9j4YcQ eNF5DvVQ1sFw6ZA+zabb/y5n4ODbAeN7TzQXEH8oLkTZEqdIl5JLHtWobZyinycc teaOwyC8i+3FzeKFttzOpuNJTLQ5Tqribo0MJ66reGOxO8XlXgm3CPg+OylRKIdH HKDBXmqAmPxrLNN+MJ9nNozOmdbjO9lAFAKv10Rk62lhck4C935T6z5w3e2kKOdw +HRJqJMr4V16HG84spMK6Q== Received: from phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta02.appoci.oracle.com [147.154.114.232]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 46b6uta19f-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 30 Apr 2025 20:00:03 +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 53UJtLZn033518; Wed, 30 Apr 2025 20:00:03 GMT Received: from cy4pr05cu001.outbound.protection.outlook.com (mail-westcentralusazlp17010006.outbound.protection.outlook.com [40.93.6.6]) by phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 468nxbsguy-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 30 Apr 2025 20:00:03 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=AsdCKb/ZAjXb2s3cU+pZGHjIMHA3uJvAmbmR3+fEQPZx/vu1HEh6kIN8NrOd//OwMwBDTqIGfnSPzy9kMjl24Pd4rP55fTtFfGcJ9CuEX32gUUruXkAw1NyMhX7E/GjYETfJg1XceZHBrbeabviqVInm2PocKIm8vfE/PLo98ld7znG/Z9Tj8vNhEysMze8fQOXgelDfY7qII2TBwNOny6AHBhReZxGPBWDLy44InvgvKJ1xSEuLQroT7Ewy+AyzO1531ejALnwZWrjJo6/uT8nZKfylOgI1SasuAklGLW8Cg41JNxMHgsv2Y+L6sw0C5XBh+r1Be/DlsLuxqFo+FA== 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=/I/HV1cnAxwHYKohd0J7clXbAg05cRUgE8nyzc4Lvms=; b=Ma4qIdd8zDQWypWgcLTCv5s27HDRzEdDDE/GxFRC3rlHfx+guQATZA2ooc8jybYmmauHwe62FOwi/sG5QJ2z4jwls5iYG96zZ1bUTjrDtrQEd5CV2pJGCN2JvK6iiw5/39oS6pNhSduaUtYs0VB+0BB1A95oRCyLdWWlQc1B+3x0QuMQ+LFMH0cidXDB4J31npnkSsJJ25t8AE1C2PPGGh7plaVdwDXm0HqadV/Gx9jh37K17qiFPjAf6/M9nuHVxLZ3U8pQD94r0mKoJQOM+IelC2hB25FwaY9ga7jdqSirltO6ntrh2gGl5gMgM5GBgm0fqcN1ewifxvkFvCYPkw== 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=/I/HV1cnAxwHYKohd0J7clXbAg05cRUgE8nyzc4Lvms=; b=AN5q0jEZIrgHpGbP72c7yNlaXKfy/za0GwngimfB82QPpMchOaqXt623CXrbGqNp4LTRZ7SDS5GoMhQnF4sp7DYM6/9362NIds9Y/41lHnyghWMWLUmLvqwiWDwQ/8cERer9AbjwjHev1/bz7pHTr4zEeH5n4ADMrYJwd7w3L3E= Received: from DM4PR10MB8218.namprd10.prod.outlook.com (2603:10b6:8:1cc::16) by SJ0PR10MB5629.namprd10.prod.outlook.com (2603:10b6:a03:3e2::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8699.19; Wed, 30 Apr 2025 19:59: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.8678.028; Wed, 30 Apr 2025 19:59:59 +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: [RFC PATCH 3/3] mm/vma: remove mmap() retry merge Date: Wed, 30 Apr 2025 20:59:37 +0100 Message-ID: X-Mailer: git-send-email 2.49.0 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: LO6P265CA0010.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:339::7) 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_|SJ0PR10MB5629:EE_ X-MS-Office365-Filtering-Correlation-Id: 041c0e10-212d-44c5-be31-08dd8821962c X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|7416014|366016|1800799024; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?Q6T58HZVQbE2Egh57CIGZrCwW2zMl/cINwdAJs0peOs1oozaYvWoJXwbnaGd?= =?us-ascii?Q?RG9gZxDeLD5ea8CpNQUCS/jRg3vJheL6Jgwj8kvpqN38fW0YgHb4KPkGSHXi?= =?us-ascii?Q?toOqBbQnJVbvLtEgRLth1q63qq/HyLNdlJZVPbm3GlENgHtLw0G9AuNsF83D?= =?us-ascii?Q?HaYbban6tb03aC5GHt1UlrcfiAHmtBXDZIr99lDXEGPMibbLhqWhx6eixLSU?= =?us-ascii?Q?/onqTLVEB597AmTJThmDqv+FFxr/B5AP9a/8/QpR2QNBFiN7M/So7rPXmnPL?= =?us-ascii?Q?05b01RiunNJD/DEydj6BeNrEZGa/+6q/U38g6wIDmwu0b/oWRq1/aWrSzMzm?= =?us-ascii?Q?Ql0n2K0HIIzUN0shQ9mmSuvaI55tGnoQdLIL63igTLX4xXOZxdnxvChIvmUA?= =?us-ascii?Q?vrK+N6UBuB0MiabvogYmsA/VCl9iJfDr9xaLe2wcfSWuw8I8nTUOIHaSPT4f?= =?us-ascii?Q?jtgtwBZAO7cqwaO8trMsebCCSOxSLhSzG9NkYgC3yktSXKTv3+4wjMiEnvPz?= =?us-ascii?Q?m/MgS69te1jvC/2ZulTMV8on8xJCYQtltOX5X7snMHDfEPMCR5gUmeof1ouI?= =?us-ascii?Q?IeyJKfpW0XCHipKqQ4TI09HCtYXhUY9pI/uk5d9uBancpv1fCYP3+QYLnOvX?= =?us-ascii?Q?0VmVk1BJhZqnySR4rgDQUDHoGmvaMTmCy+FRCrIhmtfwq0RiV8GXI+xbGB8u?= =?us-ascii?Q?4Jv0DPsLGScIMMKCQ/XskcPWyHPEKftZX36a8AC57XRkIcgQFhbnNovFLtAs?= =?us-ascii?Q?BVm9aLraFeJMMxjaB1912YUyHK4M3smYo7Rv2AtE9JEQyUiDdlsB+gOYEaqQ?= =?us-ascii?Q?ZzAM9a9+woEotQ8K/ZcT5ufvWta9Go+vLhR3BwqrSUjIdCw3FMJjQhJrIxKh?= =?us-ascii?Q?6wLjxiqi6+Rd1PZrVVHnrfMWXmOrX/b0HYPBMo1pjXRzE/Uavqju33ukeKyy?= =?us-ascii?Q?pVEHSvmHzcKnW6F5hhtJNaL+H/lj23m1EYVZxNOZD+rX2IsKJQLf7p5Bsc5G?= =?us-ascii?Q?k+WI2PnXj8q5RV9LKVGhrkCq+Q/rZKziiJflczpnOSG2wgjXoEjIhbhSwvTf?= =?us-ascii?Q?Z6Oj6STKBPaWg2AJInnLLX1XnrEqkzGF7AXfxTA89PKqwqRBU6dd88KkvBV8?= =?us-ascii?Q?Ni8DSluITF/2YtK//uwa5hcDGA7zcW63j/LOBDFk+MhKTxDnZxUglOe0cZ7V?= =?us-ascii?Q?4f9XuUL4nmnwdKhq1Z1+sqPH6RBujgFgH2HJtoMrwDDPGQcDh6FiYq/yTB4C?= =?us-ascii?Q?VqHBc3cZFoCOBqiG+q5Kma9htVRwDWJzKBB9bM3XTl+OJm+KFBLr8VsdG5DX?= =?us-ascii?Q?zSPlhxDSaqU91wOakcK4AeVy7g+tcI0rLAmF8LdDc7GW6EJcZKDlx6eakM8R?= =?us-ascii?Q?tCTWitkpcZKoUR+yWtntXT8+wX3cFxA7NslqxARBmG2L8c0WtA5BEF3G6LvQ?= =?us-ascii?Q?owpqtsnzCx8=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)(376014)(7416014)(366016)(1800799024);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?chjx1wACKY3gw+Y+0NXb/xqO2IQeQ2WJh/oBgJsarGvU5yEBv5neGyl5qD/P?= =?us-ascii?Q?p4VZBysLBGAq8zv+JhsbpKJycjZAmxKjXodJwbswRdFxJfqx6AgNR4/PmcqJ?= =?us-ascii?Q?m/r0IkLIXj3u9m0OIZRLjY62bogmBvF4OXVgpF69dblbQCzTIJTpLJ/P3F8L?= =?us-ascii?Q?P+ygkPXO/tQLSSeP1K+NJUh/YzEu0Bvlf7C+FjiL/iFBn19ArxYsEGNPYDfJ?= =?us-ascii?Q?+i0H0h94vZDjpsuXjtBueuVC08WjJXOINoXOZCh66XxGADYjnj304EHucE0V?= =?us-ascii?Q?473HhWtmqUubWzVu/l92JYADX43OIspn5E+3CILooWn/SG2zRWsmXJj+id8O?= =?us-ascii?Q?JHPT0NHwo9h0h4quATdpqpguJj/r/gReyszb3Gj/lC3mhipDEyegAULEwz2q?= =?us-ascii?Q?GTR6ikmPwnC4in2lcGdt6Csl73g8OMCSYItsWJQhVSkBw8OUR5Ogufeul7BU?= =?us-ascii?Q?DVeMhE6kfpL968/PLT4zki6CspnbvKF3GxS6xp6OuphlKdQjC62x3JTAHIXJ?= =?us-ascii?Q?PplgyPPtW3+qSLXQeScqSZyI0GnZPLmW1WbOhOwpcOk7/tJ0jLfbs5AkY0hT?= =?us-ascii?Q?Frd805JloEG7l314eQpLXoJD5xRQcdzA3bLuErg1TZ1uJW4ljPepcJevb7FP?= =?us-ascii?Q?fdlgDeIRfODc3JX9wEN/hXZEoCuxKnz76FiGU09ofbzjtfSSiB62EgYJduwL?= =?us-ascii?Q?QIk+2zuqoc8vJgfQMWjjfkysRGdr7p98LkoOgKqgSclk641vySpcog1n/8jV?= =?us-ascii?Q?12zqVsbUCqcmyPimMRDJRVsH0urdJfSJVUfWx7sl/u+lH88uXeow0vf+j2ml?= =?us-ascii?Q?EJWGQOSC/L/V2Lizpsr6OkgVgFBu6pD165QjOGeFa67VwglkaNZc3uI47tSY?= =?us-ascii?Q?sbck2aaKxXlALAc8Ia9RpR7kso8/z3Ag2ktBnH3ThDAYVAURru+NBeu0hH+U?= =?us-ascii?Q?4wmMpVqHOxBGLMdAz5HFncEEZbkMhkEL9O8TB5fkN2vZnLuZwHJdTBbQ5ZlX?= =?us-ascii?Q?4XqiXzzYcb5Lobd1DjED0d7T48VNDhiGk46vUOX/BhYX8V1W5Vgcpzw416Od?= =?us-ascii?Q?Th6oTgjMSKhIENxjHAmaXv9v46AWhUm/O1GYFQsddXDao7jV4XLrJQRTtqpu?= =?us-ascii?Q?H26G4w5jJLers9zXxlGzsVtQmG5UbXBxbXVjnK0FKMyRTkMbd/739/0URg6L?= =?us-ascii?Q?6HXpMJ5zdGXZ9f+T4NYXre4FL5lgxSB5vuRyacXKF6OaLx563JGojidSF0a1?= =?us-ascii?Q?lK1V490zTOx2olkAmaFYH7OL8DranUJPGRhNCqXlkwi09bkxuaGVSWX/DtTZ?= =?us-ascii?Q?1UagsYZ/FIB+1mqAICnO1bc71FITe/tiIGG+hqHIpKkmOLoDV7siYslHLt7X?= =?us-ascii?Q?jXZc6Atz4PK2+uQ3CB5cPhygOy5+WGpKlCpUs5Ljq6DXnAPrZuDOhLmO7xfY?= =?us-ascii?Q?ecUI7krbS8+FQfJ4DOgWBqAkHsFZd+pPtoK6RBaqJVkvN7eQgKPmzXPyDVsc?= =?us-ascii?Q?vOrNHJIBSzqcC1f7jlDYeDYw4Wl0VYNydg5wqxiCILriYSNNZpUXG1YvB+ax?= =?us-ascii?Q?3EAQ7upCn6BvKrWGwPmQXPDtbHTOC0+jEmnlH+RCmYlpg2ORZMpx1J448gbO?= =?us-ascii?Q?zw=3D=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: DZXLI5mlDoOi0f8lbCBTLY1XfbtqdjhxIGIDK6Y6imlJxWaqeof5pL7cDwcYdQTY0YX7azRfubA8VI8je2EfjFW+wVWg1snFk7ibB4DZ9+z363TtxJK3Lg0RFoC/3fldnpymAQp4iJVEfcwU7r7G9IhO5oCgoQWHQyMIlpKFX6RU+MJVENbrezSPt9j1lCs+qp8e3g+1lG3HdO0BfKk4bV7pB49zDHizhxQuyXcrwdjyv9q6jWQ8yOr7UUC/PQPq32zKlD8NjJOLWa93YqMK7PafIkw12duMa/af1nDBicGVER8BE40j6mLGgZ/Au0UyLZtibMHB1uHBjW7hHNTlzUxcmaLGQu8Y9KgJ/s+0Y1Vj6PI9u1wS/J514xalsxs5zM8bbymIHtao+Jy0x9/GEDEjz2nZFMPfWvQlHMMtJOiSWr79U4x9MqGYBlFqB0L8znCNTHjNNxpdclLqcl20u27l/CyqoxGWDKG03SdHKc4IuwBCyQCCNW/GkAorDNf1RT8X3G1DParCfo+W9pMLmRVBzJdbq5DI3LSwkFj0WdBHNOZehwRJU2GmYSV99YoBTac7Hu07pTkAQIMnmW87zESTpdKiR2c/1nnGPYEPsKo= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 041c0e10-212d-44c5-be31-08dd8821962c X-MS-Exchange-CrossTenant-AuthSource: DM4PR10MB8218.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Apr 2025 19:59:59.2195 (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: USSwzum8QxSmDIdQuxbsbQnqHmcwUesziNiAAq/oOu9kk0zOCGnX0RliGAZ7DeIrLgo3zdrOuggKg/TtsmpsOz6Glv6Svxk6WIrbOJHcJ48= X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ0PR10MB5629 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-04-30_06,2025-04-24_02,2025-02-21_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 mlxlogscore=999 adultscore=0 malwarescore=0 mlxscore=0 bulkscore=0 phishscore=0 spamscore=0 suspectscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2504070000 definitions=main-2504300146 X-Proofpoint-GUID: DCyUSUOCadg4aovaEH7MvkbqKGpP6Dry X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwNDMwMDE0NiBTYWx0ZWRfXxfFzXd9/96k/ rDXqknLnqBJo6Kj9B5R88uzOKsvbmtFi391OsW53Ndi39EoWoEMOnmxWtZDUIVM5jlXEMCk5zJ0 LhcwdDUW1QLtpR3exW5aJ1eBNE24CgxnWBvJzFY5Uu2gWMZf7oG9t8dnSWnGukRetqJgRAAs5tT ke58wlmCRhFw8OTU/f/h+QgLng8XGXAY6q5Cf2pgEaoiGoOJMG1qeN8zBRo2b2UPTPKas7BYhgX kFVfPsQ6HIbNP338r6OCS+cCIezQzcNX0bWi96IWoSDz/jLcyyPCDU6t9FsZF3r2sq+X9vhDHob fTiwv/lpy8Bwqb/Li3RCQTfpLOahD+Ao2CEySKThLxwD5mgxBpdQNw0Y0ru5X/9Wt9DrqMcchGy n7UfgTRTheIB9eQuz1lqZI1oVTQlwwatqwoDY0DOf5nom8ZRtbyNvL2eZPhgtDyVCWmAcC/A X-Authority-Analysis: v=2.4 cv=ZuHtK87G c=1 sm=1 tr=0 ts=68128144 cx=c_pps a=OOZaFjgC48PWsiFpTAqLcw==:117 a=OOZaFjgC48PWsiFpTAqLcw==:17 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=wKuvFiaSGQ0qltdbU6+NXLB8nM8=:19 a=Ol13hO9ccFRV9qXi2t6ftBPywas=:19 a=xqWC_Br6kY4A:10 a=XR8D0OoHHMoA:10 a=GoEa3M9JfhUA:10 a=yPCof4ZbAAAA:8 a=KWrF3PiNL9PbMbJVJAMA:9 X-Proofpoint-ORIG-GUID: DCyUSUOCadg4aovaEH7MvkbqKGpP6Dry Message-ID: <20250430195937.l2ozacC8x4PEYsttHWws4hHv_l1LdiUdbB__lEwg1Mg@z> Content-Type: text/plain; charset="utf-8" We have now introduced a mechanism that obviates the need for a reattempted merge via the f_op->mmap_proto() 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_proto hooks), the issue is easily resolvable by doing so. Signed-off-by: Lorenzo Stoakes --- mm/vma.c | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/mm/vma.c b/mm/vma.c index 76bd3a67ce0f..40c98f88472e 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; @@ -2423,8 +2422,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; @@ -2641,17 +2638,6 @@ static unsigned long __mmap_region(struct file *file= , unsigned long addr, if (have_proto) 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