From nobody Tue Dec 16 08:58:36 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 1951528ECD8; Wed, 21 May 2025 18:21:07 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=205.220.165.32 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1747851669; cv=fail; b=h94uJak+DSXAlnJtOJkTfVQFYxCfJ2pstauhHJzpViponnwE0BeP/GNd2seI+HMrO/eDJhKfcBDQaMic7UJCYoVxzW/AHC+A6wWARcut7JsNkiHdffM9d+F/XEWwqExQCdupHc1LEi7DcemvvooK7IjZBCyxqeQT8jH9pYpNmLE= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1747851669; c=relaxed/simple; bh=Noy+JZjIxGqzh7DeML3jFpEdmxKBRcaOZVsuNZDi8Kg=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=WEgEh1+MW2jiDL8bbYIXSKyKkMjdS16xNNvbVyCG6T+9CrRQsCwQaC5AxMRq6Z3ArL0XIFyTL4r2brBUEpsBeQofCcC0oXRNTTVDrpOD2D1FwuHhcxiNXisawp3vl5Nrx5vHXh0K8g9meC2hAf7oaFzG7i94nQ0g/wq0a2D2CDg= 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=JR4+GhlK; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=lOZL4cL2; 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="JR4+GhlK"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="lOZL4cL2" Received: from pps.filterd (m0333521.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 54LHri2b013601; Wed, 21 May 2025 18:20:48 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=a3zHwt0ULv4DFPZByY1aMK7Qim8V4qyWhhHxBBjQ6m4=; b= JR4+GhlK2Dhd96vJyFVqQqhPzg0cJKAAIy1fuxI1LwmiMsmvFpOpbvreXpzBe/n2 nwvbxw2+9echoJYCEvQ19Epvs17NzzZ0b2Ll936L0FDmz4psbxyFN036KEU+GW6a SOVT7vtdNNbxMB/pY+6Y7y83pJO1LMSbwsVhyqfIXSACCiaCJPgppYFuOt3v8TKv 9gGWDmUWVuDvdf4NYNiMgc94jWY3HHlUn/Pkv0gH63ai5AOPqciH0U177JrS8rHm e1afcMrEC78xRwIwigmMPuAbfx6jZWbj4ICzJw1UvsRN4Nwrhb6ziODLr8CelfS2 K770uJGmUzcafDMcI9hu6g== Received: from iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta03.appoci.oracle.com [130.35.103.27]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 46skmc81q9-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 21 May 2025 18:20:48 +0000 (GMT) Received: from pps.filterd (iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (8.18.1.2/8.18.1.2) with ESMTP id 54LH0Ccx020240; Wed, 21 May 2025 18:20:46 GMT Received: from dm5pr21cu001.outbound.protection.outlook.com (mail-centralusazon11011018.outbound.protection.outlook.com [52.101.62.18]) by iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 46rweu799g-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 21 May 2025 18:20:46 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=mMZnT3J0h8nPHwuqJN1uWSfj0Nb5qc6F3WQ0GH3PJ8BZNWlrWQMjKwJUzqay9hCz/2+41hSDJkhPSRG65gRswtFzGYSqDQj7sk19y/pXqpwNV6QBV/mFU7HU60clt/GCFWekjvttjpsz+YEQdo4jF1CXSjioKhCnOYa5+a/VAxLVV7wKrE+QYg2XTSR+IOhX9MPX9lcNkvpU5eQ5P36JZkXKhTL0ihWK8RILfA+4a6D/XlVB3BGR0IEmjTH0ZayF2ev1NxwtcPG5wT0EQVKHgDqcnKGaQqC+M2a7TXEkohh7Rm7HW9R3k69MhfhHPq+OmPoJ7esVOc6WczkepKWZ2Q== 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=a3zHwt0ULv4DFPZByY1aMK7Qim8V4qyWhhHxBBjQ6m4=; b=cefizs3zi+Vdu1+kA57Ci9/P1ixFjRsQJrT8vrXTm+GRaqyVG2pGpCPSKdYbvjnZfZRKNBhYs4EpLFWyvjPAwWgIcU2vzj5pJZWfl9AxMYxKG/mo+TPehtIPEupzZEs6HllqMFsC+nm98boN51Zy7an93KYoqX/m8pfjULz36mzLYwcKZx+227LGK7TVkUTchfjzOhjn1WAPQDsjEII/95gXUap7paGron6z44nxUu2EUS19vWWm+nH5zh63UF5TfW8B4Y77Av7+fY03knDZYkxF1AaQ29a0PO0k65wUGa+PcCHv/eBnmh4dX2WANe7W6z0naWtPKSpLmunKe+r5Xg== 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=a3zHwt0ULv4DFPZByY1aMK7Qim8V4qyWhhHxBBjQ6m4=; b=lOZL4cL2B8ZMP5ZAEY99RUyiawHNGhl1Zcpv9Qeir6UsUPyat7Y7U9qZmIYegvsHYqwF31tolMj2JXg02FL1Xkz2f7wnuFioTggk0wic7U3LySyaGPtTbsfRyk82uhMPTAD4aPlAzqG7ro5LT5ZxMjDy7NPAvjKgDVU8eZ81TsY= Received: from DM4PR10MB8218.namprd10.prod.outlook.com (2603:10b6:8:1cc::16) by IA0PR10MB6697.namprd10.prod.outlook.com (2603:10b6:208:443::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8746.30; Wed, 21 May 2025 18:20:42 +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.8746.030; Wed, 21 May 2025 18:20:42 +0000 From: Lorenzo Stoakes To: Andrew Morton Cc: Alexander Viro , Christian Brauner , Jan Kara , "Liam R . Howlett" , Vlastimil Babka , Jann Horn , Pedro Falcato , David Hildenbrand , Xu Xin , Chengming Zhou , linux-mm@kvack.org, linux-kernel@vger.kernel.org, linux-fsdevel@vger.kernel.org, Stefan Roesch Subject: [PATCH v2 1/4] mm: ksm: have KSM VMA checks not require a VMA pointer Date: Wed, 21 May 2025 19:20:28 +0100 Message-ID: X-Mailer: git-send-email 2.49.0 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: LO4P265CA0313.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:390::15) To DM4PR10MB8218.namprd10.prod.outlook.com (2603:10b6:8:1cc::16) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DM4PR10MB8218:EE_|IA0PR10MB6697:EE_ X-MS-Office365-Filtering-Correlation-Id: 7021fa97-4990-4dbf-5bd1-08dd9894327e X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|376014|1800799024|7416014; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?IiqBRiLbsfBboAulR5sRHXxsWBMJI+tFY+GlQtm80nuSEgUoqJYznFLE1E/K?= =?us-ascii?Q?Jh8t4BOJ/f8OlMzOC691rKS0IQEgNxtzZ+rZtzzN4LWaK18bj8YVE+axv1om?= =?us-ascii?Q?vW/xvAO7S6X/YBwJ7rOOtMe/cmUaj53ag13q8IL9DeYzo2vngM0JxkAzp43M?= =?us-ascii?Q?jkIk9xfXgCmZ91m358QZ6WKLyvT1Yjh2ohPkdEbhx0eFN+TKeBDG7DfN0WFe?= =?us-ascii?Q?sPLFAAfs/wbTiYr8f3Kvcmb3YHGXZWj+QSWpRb6MsHDxwqaR61O9NPQXKsdh?= =?us-ascii?Q?o/i9M/9MIKE3wR5ExZo7MtquGhkcJFLbn24YS2W/ow0PUdOywndqQ4QCvHT9?= =?us-ascii?Q?NU2axq4/o1LCF/uRpdK+2QCv1c3AEQCaU7hHl3QmJ2KJALv4lXOxxLMjN7rG?= =?us-ascii?Q?T0Ux7yL3GCqOLVDNe1MyOMZ7mQ9w4bYYGDr8nFD4T6tqrqG/kD73+ONACe2g?= =?us-ascii?Q?uNE2USeOL2D2D5on62gV4AKsQ9sQ3A2CT+v+NiY2HN6eLOQwJdOX4Teflo1p?= =?us-ascii?Q?al9acNB0wcbijP3OuYaZhdHsm4K9V6jqRWY30q2Z3EHpo1F7uPI4YQfpjwyd?= =?us-ascii?Q?2bDuMt8+D89s+thuG/6Cxu7+nU2yD42GyNXqV42aEZo42MPuCwcHWUXRAd4s?= =?us-ascii?Q?v7UeHHuzG7Egmsma6mIMmpT9TQofmsN7PxDOsVMF93yGmIchm8aEMwjEAXl1?= =?us-ascii?Q?zTgyA7QKGD/JRscTG1GlsFBrqqe0oasR0OkdhQy3VhCSuGmM9ICLLTPhkzX3?= =?us-ascii?Q?y0aCDPzbpIaeZAl5hxgLwQreilT65UQ0tUmnOheSofpOjIoXna68nqmkLim3?= =?us-ascii?Q?wdMP/zKgtLlmgxm1EFbsB+EHHlmgKVUK8QGcbyiVF2CihWvXJb26DC4eqs/l?= =?us-ascii?Q?mU9Hl3Sh8m0XRnT2WWy8wlgPCnQsUziolkR14yFoyqYD5yMuqVM9kvDBslM0?= =?us-ascii?Q?Q8Wj08d6SzFVMa4hpW9a0nCu0RHgYLaOHsZ10342nFGusyQXcGP9oRQin1NG?= =?us-ascii?Q?fztVmLoO2gJxFmUhiC+TlZ/a2w8flUhX8zlUbQ8gXDLxBlFzN8GXj+9tYCTS?= =?us-ascii?Q?+yjLaTqnxFn5fFfKf1JAB9wZZeAY4aPz2XuPJGKChPDQcInTrlwUX8fUtwzJ?= =?us-ascii?Q?f3uU2dDzDoZzMhk8CrrqvLLgd2PZbIjwSHeKJYqo1MkVb1bBQP1YcKke8P7N?= =?us-ascii?Q?MTckltCsgpMHKeweq2CQQuZCCMBnRQRqt5RyDViHIw6lMKHtEgZ/Cd3slQXw?= =?us-ascii?Q?v8xJ13opymvv1hOhJwCDxGcgr0onx74/IBGDplcj6CKLig7R/D6sC21vnrtW?= =?us-ascii?Q?CmqZitFsFYiXh6LgIzjcyfiwEVGDux83Rz7+Bo/SgFj/RhPh0PihaRsRny8F?= =?us-ascii?Q?qb9tTz5F9yON2f6GVC2UJtZCxsq4HvlgDtMuoOsJ06Q2x8PkP2k9qKe13qZv?= =?us-ascii?Q?inClArl2olg=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)(376014)(1800799024)(7416014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?r2q1cWCZsXW+dJYfaL5L908sMmHE6J7LBPX6BUx38jzgCtvs3EeOsNeWsVsX?= =?us-ascii?Q?mPuCXSgIUSUEGvpicTpuUso6LBFBmJ5wVSVdUUXKwPGQ30aImcYTYp9yjDn+?= =?us-ascii?Q?FZB8xgSIaYk91uyOSa55FS/l9q8dkEO7ffZ3R8G+io/vr4RzMW0pOFdXmImv?= =?us-ascii?Q?V5SQgF436OzCqP7YbHiDvQnUpVCtpOuAs2YULKHZ4q9aZh9JkO9Bwy0lpqGf?= =?us-ascii?Q?9C2RI9d2uxCWe/rjqTm/0wdRMt07ZIiKPb+0UUzmkAUUlGaxnmkqvWz7zmmo?= =?us-ascii?Q?vZ0DhAm5beldPm4zbaXtkb712/oVeq4XBO9stpAnOqb4vBr9gDrxcLFiaR0n?= =?us-ascii?Q?1vdAOJCc8GbCR3OnJqkXAPcYQJ+bN12YTXOf8wCZ+QMU9Vm/xEoArBCmRvTP?= =?us-ascii?Q?+ic+jHlhUuGWhwODBYJnRJhMbP+mLu6XllbK8AIN+h00Y3mPEPgx9OONhFk4?= =?us-ascii?Q?YH30YdVSMQY5aSYO7SbsRN38b3fP7v2IZYV3G3TUAlEx/hoNk7XZqEokZoxq?= =?us-ascii?Q?lteLZ82N1851ehHDkIU8v0O0TTOLm8cyr84UId28FftlEXiVJSaK10i2LK6Y?= =?us-ascii?Q?fU0fWzy1GNo95EdV7yNETgHi7FT6j6xCOE1I3Jpfy2gKZ8pmkxoxnqhhgkpA?= =?us-ascii?Q?51FiQKNK0ZJoOMJsVs8O0KU8ddZ8KynNEj0GPIqf2puE/B0N4+r77In9BD0P?= =?us-ascii?Q?s7Ks5Dd0BeFkgO4WDiMTVKOyNtfDtBCzftGkR2+6dSjxjxaP8+TihhnwrZyW?= =?us-ascii?Q?fanBBioo8QV+ki4o+Y2BlQn+pphpyCPDwth+b+MTygXuOl680oz4D7fB5ogM?= =?us-ascii?Q?864JHb0uzt2ChevDCv2CE9tgWrSIStsWuVEDs5poSDqfY6ikEQdeQutKEptG?= =?us-ascii?Q?S1vuc9GZY5KugfEbrzwgEUIJ5HNOT+4UC/8eseVnJpTkl3fEna7WfftGHwmj?= =?us-ascii?Q?Uu7vui0nT/kE/+V3Se26QKKuTflbQNkYJPDEQOSDP7tB486i5THzpltgRkiw?= =?us-ascii?Q?RILMO/B60wcXKJ0PtFv5hUrySc2CKUatOMy9lMwwhR6jrzEPCacZnh1HqBNE?= =?us-ascii?Q?A3P6raahoyzBCog0aYKbmptSg1rSlAkbczEHdgOJFZgXv1zEy2TdC7mVhHfa?= =?us-ascii?Q?XdKi30RNtSeIdFKwELG4iNg5To5AtkStHY3IL6/QkLwQGXN/2o/ScImYrYhu?= =?us-ascii?Q?PvA8OpF8mII3b5TJSqoQh7rovKhgYJWVP1tz2vOV0+GcUOJxVUUJBCsacgYJ?= =?us-ascii?Q?R9hogItstItGS+4bkuwiAQYthaAo6ijrb0ep1Lqr+AzT/bip6Jffi841MaVY?= =?us-ascii?Q?SyWSAVhmk2SIPnL23pIijmvRiEIHu+Mh07Gk26ApLArWGDuwISJKR2VOwPx9?= =?us-ascii?Q?2C7APwoKNzcKSuro9PB527076aNfRpluUVXclHLIyKQJh9whJfVT3sAouqSD?= =?us-ascii?Q?+1pDxJq+D5cABxxhkjlR5LmTvBCgY4y36HR8hywSy1MgztbN5Ss8/zv9ek5Q?= =?us-ascii?Q?V/kWCq3rqbu4+C4BmG6AVIVyRuJlOOCTvuVjZ/LIy/UO1Wnb7HVZmp6rfhxw?= =?us-ascii?Q?q0/O1m3EGGDYIOVplnioZmgnE6GCzm+pQosuIF+SnEwSquNQWiuFx5Ku7OsH?= =?us-ascii?Q?/g=3D=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: pZ1fI/c5mxwyG4c5iLqoqG71/vnJfam+LBw802bPiSoWqcjo9FKca2UPkNIcj2mLbTKJXXa/egRljEfp0c6gfnE3N7F+qeSRppJyXF362SI14bzgAqcIoDnENEWzqfLMmcp+aGY4itJhmO6dBE5cM/yCh8lzot7uBLhw1ZRLdbYJWObL1Qrs+6wApLfP/zMt/DLSWSOcwwLVNtS99dwoxV896WOnu93U4vu/PFpCjy8sugHGux1tjC+dVHmF2vUw9lJHHdFX8vUmXeIvEZbaGDHYT8A4JuzjK71LzepgbfAzF4r9GhbSpJq6v4uUxpKzNzgoUSXFsi7c3FOzGOVyG+BBv2CSWf7Q7AssSI0KAiQHYGeodvgYdrl6Ix3h8x0KHWlC+1LKOOX56Z8c7RSSirvQ7mMLL/467Mj1zqN7+mWM9MRlqTIncGTC9QK6BxMetyt4UollyWzfKDd1BskxHOj3jzgtgKy3IXE2620T2OS7GYz+faO+rWH2HegGN9hoZByrrbECYloL7rwlj1tXv98JECaHARqc32ROvE+QRaTTWAmtGAQpmD7bgCRPO2eJVfVNA7OuN26T71v00kueQGqXrJ04UpZIN/AMC+ZEvlU= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 7021fa97-4990-4dbf-5bd1-08dd9894327e X-MS-Exchange-CrossTenant-AuthSource: DM4PR10MB8218.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 May 2025 18:20:42.6920 (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: 9jS1Kcwa492Zowo+c0EP3D8lRCkh3O4Jb7Y9MM1+VRNZvXFJWb1rE1e1WSWkkGkq4qF00+jMASvM8b+O+wUUvl5Xy1Ubti6bA8sUcOXu92E= X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA0PR10MB6697 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-21_06,2025-05-20_03,2025-03-28_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 mlxlogscore=999 adultscore=0 phishscore=0 spamscore=0 bulkscore=0 suspectscore=0 mlxscore=0 malwarescore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2505160000 definitions=main-2505210181 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwNTIxMDE4MSBTYWx0ZWRfX4kfAAslYSRGw zOgJf895UmiwHJ3PLZT05tdds7TfL6DNP1B+m0oKJxidmqg7YzrjKMRZGkQE0JqjP6rewBSgPKa VtFs/6ofUsHoiOA91xUUjZNcOJixM809WkFZUFJ/uI53Hw2IBRenAV/Ts8PDL/bx2Cr6dlW/BeO gaXcT8NeY0qZwdgEzOCL8e2KnbrIjSWc/UFY7oOBy1OLvTUPNf81Le5sVgIx7U3vI2DW2wnG5UX bLi12kwKU13aTLaYUunmP3ti5qNQD+GEbdNWT60Ftu6jOWjuuZ70SsRwwlPFfxBTlpjD83ZkWwu 5NyhoYlrTYLM6/iDCuD0V+DuY7kV/Bk/1ouUq+9+L2AKTz9E691qviOzopSQNyW+/AHS0LQfnu1 WpLYlM2pYbe07NsB4Xwl+dYt+b8Y/c7Zf3m90G0r0DgguN4S5zeRujIfAAZd7ZeGb++me1BM X-Authority-Analysis: v=2.4 cv=B5650PtM c=1 sm=1 tr=0 ts=682e1980 b=1 cx=c_pps a=qoll8+KPOyaMroiJ2sR5sw==:117 a=qoll8+KPOyaMroiJ2sR5sw==: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=lOzPg2vIf24U1BXouUEA:9 cc=ntf awl=host:13207 X-Proofpoint-ORIG-GUID: PJz_GS3aD607VDtcgv-EuPGSyxwTtg3e X-Proofpoint-GUID: PJz_GS3aD607VDtcgv-EuPGSyxwTtg3e Content-Type: text/plain; charset="utf-8" In subsequent commits we are going to determine KSM eligibility prior to a VMA being constructed, at which point we will of course not yet have access to a VMA pointer. It is trivial to boil down the check logic to be parameterised on mm_struct, file and VMA flags, so do so. As a part of this change, additionally expose and use file_is_dax() to determine whether a file is being mapped under a DAX inode. Signed-off-by: Lorenzo Stoakes Acked-by: David Hildenbrand Reviewed-by: Chengming Zhou Reviewed-by: Liam R. Howlett Reviewed-by: Vlastimil Babka Reviewed-by: Xu Xin --- include/linux/fs.h | 7 ++++++- mm/ksm.c | 32 ++++++++++++++++++++------------ 2 files changed, 26 insertions(+), 13 deletions(-) diff --git a/include/linux/fs.h b/include/linux/fs.h index 09c8495dacdb..e1397e2b55ea 100644 --- a/include/linux/fs.h +++ b/include/linux/fs.h @@ -3691,9 +3691,14 @@ void setattr_copy(struct mnt_idmap *, struct inode *= inode, =20 extern int file_update_time(struct file *file); =20 +static inline bool file_is_dax(const struct file *file) +{ + return file && IS_DAX(file->f_mapping->host); +} + static inline bool vma_is_dax(const struct vm_area_struct *vma) { - return vma->vm_file && IS_DAX(vma->vm_file->f_mapping->host); + return file_is_dax(vma->vm_file); } =20 static inline bool vma_is_fsdax(struct vm_area_struct *vma) diff --git a/mm/ksm.c b/mm/ksm.c index 8583fb91ef13..08d486f188ff 100644 --- a/mm/ksm.c +++ b/mm/ksm.c @@ -677,28 +677,33 @@ static int break_ksm(struct vm_area_struct *vma, unsi= gned long addr, bool lock_v return (ret & VM_FAULT_OOM) ? -ENOMEM : 0; } =20 -static bool vma_ksm_compatible(struct vm_area_struct *vma) +static bool ksm_compatible(const struct file *file, vm_flags_t vm_flags) { - if (vma->vm_flags & (VM_SHARED | VM_MAYSHARE | VM_PFNMAP | - VM_IO | VM_DONTEXPAND | VM_HUGETLB | - VM_MIXEDMAP| VM_DROPPABLE)) + if (vm_flags & (VM_SHARED | VM_MAYSHARE | VM_PFNMAP | + VM_IO | VM_DONTEXPAND | VM_HUGETLB | + VM_MIXEDMAP | VM_DROPPABLE)) return false; /* just ignore the advice */ =20 - if (vma_is_dax(vma)) + if (file_is_dax(file)) return false; =20 #ifdef VM_SAO - if (vma->vm_flags & VM_SAO) + if (vm_flags & VM_SAO) return false; #endif #ifdef VM_SPARC_ADI - if (vma->vm_flags & VM_SPARC_ADI) + if (vm_flags & VM_SPARC_ADI) return false; #endif =20 return true; } =20 +static bool vma_ksm_compatible(struct vm_area_struct *vma) +{ + return ksm_compatible(vma->vm_file, vma->vm_flags); +} + static struct vm_area_struct *find_mergeable_vma(struct mm_struct *mm, unsigned long addr) { @@ -2696,14 +2701,17 @@ static int ksm_scan_thread(void *nothing) return 0; } =20 -static void __ksm_add_vma(struct vm_area_struct *vma) +static bool __ksm_should_add_vma(const struct file *file, vm_flags_t vm_fl= ags) { - unsigned long vm_flags =3D vma->vm_flags; - if (vm_flags & VM_MERGEABLE) - return; + return false; + + return ksm_compatible(file, vm_flags); +} =20 - if (vma_ksm_compatible(vma)) +static void __ksm_add_vma(struct vm_area_struct *vma) +{ + if (__ksm_should_add_vma(vma->vm_file, vma->vm_flags)) vm_flags_set(vma, VM_MERGEABLE); } =20 --=20 2.49.0 From nobody Tue Dec 16 08:58:36 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 707CB28150D; Wed, 21 May 2025 18:21:07 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=205.220.165.32 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1747851669; cv=fail; b=Erjq86kOlu0h5oujqUN2tAzqitPtU3Gref/U/iTEwEelO/CumSUuCotnSyV4qhaZxva2nZZCgatwJFnujciuM1s7WAcz4xW+wDwca9skbUlGpdJ/NdsXIbCgEd35qIaRz2UUG5DymzRNAgcIl7n0qazJs0viCMhOlxZDrDVeb80= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1747851669; c=relaxed/simple; bh=mp2OhxLGvVXcM/6MVvKacFapZlIWu7TbmHnppfPFrbI=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=EGovjw3kFYoqngwpG6jqWoe2ZvJNoDjCloiVPM3STLjpI8BopnQTx+Ttt4u/MW74BcqZFgQG5E9rad6CwnCgmmpRLtM9kv12hp+k2hW20di26gG1kTXzRU0p8hHkabGIhlUKTodSRFaUthVxT9IiuS61gem4EOH+tSkeF/6R940= 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=Yql/xyZm; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=e9lQPk4D; 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="Yql/xyZm"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="e9lQPk4D" 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 54LHvclB001822; Wed, 21 May 2025 18:20:49 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=cc :content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s= corp-2025-04-25; bh=myHVESGAs2Q+QmGmRywK8+GqSrnmHrOa3IxaRAMpgR4=; b= Yql/xyZm2SKptHTSERVZMHVFDmrKHKxHq5CQCPY2stibQlw/pHRIDlMRrqPehAQX Ju4FBR48OlUd4RW3K8opvTHre02N7TLPAsBE6UgBtEnL1iTdHeI8aMasHgT/TULW sx1bES5kfrHqPeeFNOAuIVs1Ta1QTS8SFZk0OnhkRNb3/qVQ/I5VHnRyrNI8tmTg 8/zyUzUvElhFihsI0a3fmgUHhYdMXcDMDN6DO4Bzfc/mV3saAslxTvSvUG+itQfr 2eREABf54/eagT/iEWCvmlBPorhvTEecHA6hmxcQm9A5Msk7aXBHGrY0NJ53fPyC J0Qp2grx9gEqRKlSlBTJKA== Received: from iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta03.appoci.oracle.com [130.35.103.27]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 46skp901cd-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 21 May 2025 18:20:48 +0000 (GMT) Received: from pps.filterd (iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (8.18.1.2/8.18.1.2) with ESMTP id 54LH0Cd0020240; Wed, 21 May 2025 18:20:47 GMT Received: from dm5pr21cu001.outbound.protection.outlook.com (mail-centralusazon11011018.outbound.protection.outlook.com [52.101.62.18]) by iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 46rweu799g-2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 21 May 2025 18:20:47 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=GVF+I/W+410hjDX1f8bolCiOwMfRnSJ5/3cnu77oTMCeYAep6N1uhhkD+3hjGhcpO0PC9NQzLJL87Qzc0gVZUayVuXcvRfrF6tdVAiSyTw4wVpg2fhYzyuoIKzzwEZb9gnofBSDn+8k39IBntXKnLiR8ha1QjNfsF44TecaGt/LGHemZUQ4ZD+xMh+C8naOCcoRijEAWt6auXr2wZnaokLt5UdfVLs6pG1KbMhTq0l3tgofNasVH2cDwVtVk+gkBT6dq3YVIM+hXgxECEN2S5sz7tnk9M5emP/DREsTNho0C4xFWFNKCpTkj8WkqstGOC+JqK0b1tyCJVxSFoAZ5+g== 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=myHVESGAs2Q+QmGmRywK8+GqSrnmHrOa3IxaRAMpgR4=; b=V4Sqr4QCuUabF2btaadp4LVEIDaqKDlmc9AvP3VyZ7r+MFaOASYRZlfPguN8kDGdmIIP6uSlukJpL2Tjkj1Qg11kvhYYJw7mHK09WC9R/rPCRQ8vW9CyDMeKoH2EcxzpOuGaQCqPzrHBB7bw7vmqUSMJcidqiYxUy03OnaBgAsTqCZX9Qr3mKqBBEmKIGXqG28gqauVF1wKyHJmvY8nUoeqMsw/9spntO/xQ4IO1if380kckgA37fvpovyoFC3LqW9w15Vmm5gCr7lonSp/YrsH+ckoV24bW7IFwBMF2HdaHApfFWtJnRre6MpZfnd07E+U3i8yH+Np1o6HFQB07bg== 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=myHVESGAs2Q+QmGmRywK8+GqSrnmHrOa3IxaRAMpgR4=; b=e9lQPk4D04mhtScMtXKMep6fUi66AKjlpU2GEiBt2zMruVGsw34o2Kevc9baT8g+IzC9/EyvJGPN400DAzNnk2CzBFrNY4vTo63rykZyiSzUL55X/CdGbHRuHaFskqbCM+t7pfohQ7sgyUMbHZrvLYhv9p8157QrnEYf8v8YCME= Received: from DM4PR10MB8218.namprd10.prod.outlook.com (2603:10b6:8:1cc::16) by IA0PR10MB6697.namprd10.prod.outlook.com (2603:10b6:208:443::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8746.30; Wed, 21 May 2025 18:20:45 +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.8746.030; Wed, 21 May 2025 18:20:45 +0000 From: Lorenzo Stoakes To: Andrew Morton Cc: Alexander Viro , Christian Brauner , Jan Kara , "Liam R . Howlett" , Vlastimil Babka , Jann Horn , Pedro Falcato , David Hildenbrand , Xu Xin , Chengming Zhou , linux-mm@kvack.org, linux-kernel@vger.kernel.org, linux-fsdevel@vger.kernel.org, Stefan Roesch Subject: [PATCH v2 2/4] mm: ksm: refer to special VMAs via VM_SPECIAL in ksm_compatible() Date: Wed, 21 May 2025 19:20:29 +0100 Message-ID: X-Mailer: git-send-email 2.49.0 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: LO2P265CA0315.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:a4::15) To DM4PR10MB8218.namprd10.prod.outlook.com (2603:10b6:8:1cc::16) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DM4PR10MB8218:EE_|IA0PR10MB6697:EE_ X-MS-Office365-Filtering-Correlation-Id: 852cbd07-8179-480d-33a3-08dd989433e3 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|376014|1800799024|7416014; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?VJ8yAloB2rX3UscCVpbcCwgMpSQJT93n9LIqx2h270M+CetQNqFDlz+uqcsh?= =?us-ascii?Q?HNLapR9BzeegoJZXSHgOdFqIpjGpXWxxVRxsQHrJply+08auR5XgxOhARbdL?= =?us-ascii?Q?j5oZ4GaCkppa3HyvN95jwnmUiSDBWHh/4Z8GHeJxwJiCbB2oiGZl50UINtdJ?= =?us-ascii?Q?NZ4KhIudEjh1+pWBLbf7MNL0zhCuTXtAPD/44RtGQ94rChvYKzXJDmkwoqE4?= =?us-ascii?Q?TEqmq2vdcqf1wddO+DhnMhaiRg8sgPF6xHSeneOoTGgcAXIRpOpQPXbF56uS?= =?us-ascii?Q?50vfN4tUavGbA6mL8mZTkZi0sYNPhU9qJK9NnKPDEUvo5OZhSl+5IXxWflq8?= =?us-ascii?Q?1BWu35aSJ5/rYWFA/EnZAPX6W0dovNMVd8ALOICxmOjqj2m8K/nMK7Mn9FQ/?= =?us-ascii?Q?vlMpiwg7k/2o8yof0Cen5hfc/hpiWm5pZvvstV6wFSWyME/GaZABsWfihq0C?= =?us-ascii?Q?yn0m8BMETDZnW/ZTjmy/JhVD0xyTj21TpY3EfvVH0yVFPQpGQprjoEVTipH7?= =?us-ascii?Q?iQq0OdTHoPLKa7H9nIdIgYxBeel24kphnkVWIzXOL2yry9EnRhkiJKB2c/aX?= =?us-ascii?Q?weZv2nEl/dq31lDWO+CeN/KBGXhdasNFeMOG8YuEnBmrnv6quQKx/7kQXZiE?= =?us-ascii?Q?5E6sUx1evxs1G+upccaH8TBjHiQstPa7ZeUKZ+ZpfgO3ypw3rj+jxy5/Rvs+?= =?us-ascii?Q?kBtcxecbXP+rDlbFYQx3tEgN8qAUZTjDrr7WUHI0GoDg8G06FtP4GCi+t2Yq?= =?us-ascii?Q?D8hOxZawQI6l7OFT9NSqQhA9t6xiYh7eyeP9+0nLJi2tdzdGQeuufu1ckFJ/?= =?us-ascii?Q?Lq3DVdKGuq0LLUo5CEe0bNNRwO5u//NI1M07Rqqs8vZmE4SAF9+nI/W5/bPs?= =?us-ascii?Q?mK8ob5YNpDN5H0EM262aZLA5mhVqfYfytcfYSI+wSSSUOAyWZQObZeCi+GcG?= =?us-ascii?Q?UD70HfsDHS3RDOTrFrl4WYN0wtfn1C6GOgQtGa2h5OKJsKBMAvEoHqJHWo/2?= =?us-ascii?Q?qMZg9rqwi/spwIxSqhlkNaSzUQWM8nVDi9QgAWHtBq+caugZYauox+2CsDbK?= =?us-ascii?Q?41gu0FOpjFM4+fVJhuv7akcQRz+tWUCY+Mtng/YXC0mUaFKFGxBUYBt47qQd?= =?us-ascii?Q?bUYdRZz+QpJK4K9xhtCNmsgRWItJXMMp84XL9fHUptShPWypGsNZTJ/QZxDs?= =?us-ascii?Q?OOZkBSXgWRrRGjgk3ttfQPrwCQH++Cc+x6OKDUFXA5fv4cfXWOe97Dkz/7ev?= =?us-ascii?Q?j9gCbngAJ7Hs1RS7HPb7DZ17AjPg79gQ/bF2X5flnQadMluG3S7zdENN2T3Z?= =?us-ascii?Q?+mXPfSNUfcZ7BByZ0qPRwJYIdWV5vQG0ps0Th97jXFEXC0SJFCMVB7q7J2oT?= =?us-ascii?Q?t+Q8NzRDf03Yu1rwns+NZ8u1AK6emOTbbinHPYp0pgfnloTiVQ=3D=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DM4PR10MB8218.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(376014)(1800799024)(7416014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?yGNlkcOBqYczX6+mbWA7Q4yjGfRWJUp8OViTk6m1ZuOzX4/8KBlfBgCaDJVB?= =?us-ascii?Q?cdxClFqTW8ilm0MLhkLdqG3PgQ+c52sY1ebIR7V2pVL0/JcaCc8plN+WoTCV?= =?us-ascii?Q?9LQlSglOSY/xYHH3sLapZdINqMpkxO66PPeCpEZjDcdpPxThrSIQ+ypNWo07?= =?us-ascii?Q?L4PMybSeGsLg4aAg8JGL+nAvoYhX5NQS5NhkdWKNBwW5rmwNsgHtv2prtPjE?= =?us-ascii?Q?YRxRJnq2ZspGycbwwgS+9RrCZQp5MkVyQczkgT2rzPYTuu2uJFKTMrwyDCOb?= =?us-ascii?Q?m9fpRGFVFnlRLfxQGUvywMjn7/ryuSYTwFulB0b35jF++Ywp7uuul2Gyeujg?= =?us-ascii?Q?pXlpysNBx7w73y6vDtnLy/XTFP57dRHG+HbtOAbykGdM+UvVvcCcjxlVYpCt?= =?us-ascii?Q?wKiBY2jo8CIXc62Zjn4vy6f7aIYovPM17ozdp8U5lX1cQPYlzGf12gJCNbBA?= =?us-ascii?Q?pf4pqjNwVNvLFs7UBnnaIMNF8kby3WUXHoNqZPWkltUUFtlIFJGpEpUwW+dn?= =?us-ascii?Q?KKG+WpPYy79iwwqMbu3A/nmxeEg1FgBYCFM8+4zg02eL8dgBJnfPP+T+xmwt?= =?us-ascii?Q?hdHZ1pFIbCIZK4k4BAJQn+OpgzekAFY5gmvuSCaQS5fnYZVN77IgTsrmXjcj?= =?us-ascii?Q?HWvxlCyCP9fDO6Jtki2hUdEWaMgxNFxYHFVjLWeqqvWhNMgtjSDXCou1Uwmf?= =?us-ascii?Q?rltobOxYJYr2ZFCJcLeoaGFWsJNKnwJpM1BVGUn5kBpNpi99FiUSf/vwuk73?= =?us-ascii?Q?R01dT5pCmvdLZ0eQp3TJglaxIvmXQ9JUkNT47kSzV1vV7z9ETfagO9rI/P2x?= =?us-ascii?Q?1vY6bfl18Fj7DI8YtoHuNMmpwD7N2P1QUeMNefORM5l+oGUqFKSEZi+Y+rWO?= =?us-ascii?Q?Yck/ymeGTCUEtNL09jOXi01+FSzmiALboml5bPMFA99IwF8d08EjT+1MsvHR?= =?us-ascii?Q?/4sxxji4j97qzrrIkYlbKlIRODu0BdOCOF3Bj0MzpTvjLPCSnr4Pz9J3vMZX?= =?us-ascii?Q?w0akyk3SGzhSE1CBXHQY1xkN24vdzT83+sjAZ8HKKCZ3eheFrElgDWmxYxud?= =?us-ascii?Q?7ooD2/3QZSMEWWSPjN+73ZM6JuDDf4bRZPTOu5yP7rtCq8unZb954JbGmmcP?= =?us-ascii?Q?gXXED/kl71E8zUN/vrbaucqOEOd9qZMyTLd8gWGVVwWbwjOVFP8x8F39p/dn?= =?us-ascii?Q?2AHOM2RTp7l0ubkVZ40HqFsx649/9p1jq5bSi74zRHW2csXajPSDh+UKZdYY?= =?us-ascii?Q?mfq6ogbvkf4dGXQBMhaqcBikPM4rEdZmQrKVCHSY/hpOob0V7gyLo2D3KZKa?= =?us-ascii?Q?TIIDvXiKnNa93Td9kutS/XDhr9+kToO4Ta7FQSq1nxm6Zs5e6K8L+BeAQj07?= =?us-ascii?Q?eZN14PGn+/1b+vdUXfaC9xUCYh2nrRljcUG9W1qO2udwTflGjWslxz/WY8IP?= =?us-ascii?Q?RSlb2iYJsonvYSa3ljBeUDitvcj899UFRM868lpkskr7Olkw4qsIAsJ5LNfh?= =?us-ascii?Q?bvHnNtFUzmCiDPcwuv/qVOj66KcoSb0eDCqQWhjTjhGYdD+tvGo6TidP1n+k?= =?us-ascii?Q?0XwWlIU8P6WRl3CfxQtjTRmUyuH98F9rn/bjOIZWMEG1h47fNWeKmyBOcFlk?= =?us-ascii?Q?tw=3D=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: 101Jf269yIn/RnCv6pI0Xma8Admavtd84GQD67ZDerT1vFDXBsWqPeuUBC7i1MH+Cya6h/DbxEnUWg8eiD/FM54a9X9U1Eo/H4SZHglymF/SS+EQx+iSsXYWRq6MCAWoVNETX65Z8gRAMkWTBj2SaF3YipmMQT/5l3xigQY70Ro3DDJJMXdQYo5LabR5RsUDmYq/EboV/Eoq2zFyZIGZENM8PKXkKTBRJpvO/I00QDH8kzZ6vqtH5MbxzU+i5TzZ1j/fsxO7BnFlzVeF//XRdK+TeM4suKzXP0R93gp7eOCtaSwWYjT7LCzdCuXI1Av9G+H878oGZQ+D9Z87KT0SECEaN7Qb4Mufwxoe9xN8mnw2JXL9EP1Gv/+r7TImvPKB8xiibFcnd4U/Ua2FwrEgtBFkB+0PLiBJzP0n7b0/pOn3bY4ka7s+Si6eHf23wj46V321+Yt36O/4CRd1bj7bhfnUg0IgEAZb6qfhRuOK2uYJh/ccK89q1QqnHT7EVKEQvnmBKRYCKFg/w3sQcvWM05DN+kGBQ/SSg5+E0/PMTpZRfpdUAxc1eZd+4DZZrZ1bgBn2HKKMB9jhUpKCbP5KuBtoRY+Jcc5ruWq/xAmUiZU= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 852cbd07-8179-480d-33a3-08dd989433e3 X-MS-Exchange-CrossTenant-AuthSource: DM4PR10MB8218.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 May 2025 18:20:45.0386 (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: a06wIXi85nAM6CiKvlF5w1J3/V1ui48Lllxw14Fffl60w88FkK7sIccJ7KqELiROXCrTHXtPty3fWtw2BeqC9yWH9Byknu+G4SBFjrW9uAY= X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA0PR10MB6697 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-21_06,2025-05-20_03,2025-03-28_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 mlxlogscore=999 adultscore=0 phishscore=0 spamscore=0 bulkscore=0 suspectscore=0 mlxscore=0 malwarescore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2505160000 definitions=main-2505210181 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwNTIxMDE4MSBTYWx0ZWRfXxREUh99JCTR8 M8+UmXhgDP520e1CmXk7FahOGgev5RHGHXH4s+p6jAWjUnGU10xfSDZfSXYEp0VpPodUekRSO+c K+0Q3zdRKSqBEqBxy7KWZ4/eRXcfR1sReWpXrxkwzi5BQ97O14mApckHY+kwI6rjgeZf2t0GZzj jrBiz+X58jT8kGGjmB/GHN/LP+ANjSHM+DoKH+7eY0305oCX/FYP8k4bGnQbCjL00/R6+QVMgPQ jxWozozxDizzraNQzE+cRvhEluoNTkU9tp7jBcUaIWTp4sZV3p+Dnd765vVtkTDd1SBqPSlobao IGbyEpPGKnAUVXR1jYE3Q3hMWjCMyMPnbRcQwtC5SHuVg/rDfwg6B6IrZ7Y4Q2eY6nulJksAEtE xZqF72+v7YvGeTsh7s3ySSY2UUb1mxVQ2sbXLVVwh8WVTq+tfp7NuDS2AEB4JvJhHDRREp+V X-Authority-Analysis: v=2.4 cv=TaCWtQQh c=1 sm=1 tr=0 ts=682e1980 b=1 cx=c_pps a=qoll8+KPOyaMroiJ2sR5sw==:117 a=qoll8+KPOyaMroiJ2sR5sw==: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=lnN364MPqBXgp6w5Ec4A:9 cc=ntf awl=host:13207 X-Proofpoint-ORIG-GUID: AD9YAcCKl0Odw3FUv31pzwqYKiw7VSKf X-Proofpoint-GUID: AD9YAcCKl0Odw3FUv31pzwqYKiw7VSKf Content-Type: text/plain; charset="utf-8" There's no need to spell out all the special cases, also doing it this way makes it absolutely clear that we preclude unmergeable VMAs in general, and puts the other excluded flags in stark and clear contrast. Signed-off-by: Lorenzo Stoakes Acked-by: David Hildenbrand Reviewed-by: Chengming Zhou Reviewed-by: Liam R. Howlett Reviewed-by: Vlastimil Babka Reviewed-by: Xu Xin --- mm/ksm.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/mm/ksm.c b/mm/ksm.c index 08d486f188ff..d0c763abd499 100644 --- a/mm/ksm.c +++ b/mm/ksm.c @@ -679,9 +679,8 @@ static int break_ksm(struct vm_area_struct *vma, unsign= ed long addr, bool lock_v =20 static bool ksm_compatible(const struct file *file, vm_flags_t vm_flags) { - if (vm_flags & (VM_SHARED | VM_MAYSHARE | VM_PFNMAP | - VM_IO | VM_DONTEXPAND | VM_HUGETLB | - VM_MIXEDMAP | VM_DROPPABLE)) + if (vm_flags & (VM_SHARED | VM_MAYSHARE | VM_SPECIAL | + VM_HUGETLB | VM_DROPPABLE)) return false; /* just ignore the advice */ =20 if (file_is_dax(file)) --=20 2.49.0 From nobody Tue Dec 16 08:58:36 2025 Received: from mx0b-00069f02.pphosted.com (mx0b-00069f02.pphosted.com [205.220.177.32]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 089D328EA7C; Wed, 21 May 2025 18:21:07 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=205.220.177.32 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1747851670; cv=fail; b=eoY1UVD6QIaKRFqgmLcZ4mD4E5xDtSorMNNp8T+HpBQ0wjHhu9ViG7BTR3ggss4xP15X6SAie0f5z05BHaM4TPswOadzhVdsGmXS/XxxI5yWOjb65v+YLOPZB49/hTuegCT9tSBduI6AQaD0UYbeuF15gIwpdSvb2MZD2Sv1eWQ= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1747851670; c=relaxed/simple; bh=Pt8H8ktigzCvBd6V3OTiV2b0tq4sUSqM8argS0OUpMQ=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=s4PmRc048FOGrqtXIWQoKXKlKf1p+Kf9bFY/LVDPU8J0FEZzV5V+86iDor2gop/O7xnOYMmGKxhQB8x4/mUY3GPgv/kz4GgEfoDkuw9ZRYpcyBpnyDvKUVAAow1P4cDrXWdPSkZB6cSqY57mf+WkzS7wIygizjeGO7CjFRZ/ozQ= 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=luMna/DA; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=wy6550QG; 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="luMna/DA"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="wy6550QG" Received: from pps.filterd (m0333520.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 54LIBx6j014607; Wed, 21 May 2025 18:20:51 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=FkisJEkO1oXOWT5s6JEr8l6FkKoaEUoqC+gHLyLzmgs=; b= luMna/DAzV2aNofcUE1e7QJZaoMEcNbCxGsTcDaTPTPWAMrGieJ0cXDomoJxIzte x0i1NenfpVRnHCz4AXwtHcmfGzlY2yVGERaXqqkAltkhcP6tdCiobKPKxe5YwHcy vvF2dlM5bezkejTcXkGtTNVqrFVnLB8zKJrMhj459NaIONR1EeZqltLwnvUWIR33 eaMvTkTY0lYQC5TtLH9G5mDcYiUxJMVSq8wFPZQTvihuaGTOwwn19meYS6whsY// j+yX5dEbNqmFeGmHsh09z2v24TUdebvW3BypFukkZllC9NQMFHZrbB4z74Txz8G4 d7A2pkHT4vQb3AZyNvFgsA== Received: from phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta01.appoci.oracle.com [138.1.114.2]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 46skw6r11u-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 21 May 2025 18:20:51 +0000 (GMT) Received: from pps.filterd (phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com [127.0.0.1]) by phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com (8.18.1.2/8.18.1.2) with ESMTP id 54LHE6GD032152; Wed, 21 May 2025 18:20:50 GMT Received: from dm1pr04cu001.outbound.protection.outlook.com (mail-centralusazon11010043.outbound.protection.outlook.com [52.101.61.43]) by phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 46rwemq9q8-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 21 May 2025 18:20:50 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=KULjCjbJMqQSA0jfTLq2SE2q7Bmm/2XqooYY2REpuKqF9xTFJN+YkQDvVA9ggRcAG61gZHtms2D6hCoj57KyoID7MYe6I+Vii7vShfDD+TGozK34j5/3gt8O750MMEm+Ys9wlUGrTOd61KP+8VoFHcrzME0I4PvsjXDkJBRUlPxGvXFaP6DwLn0iqMYTSmOjMXFy8CYeKJp8OhwQaFYn+pDjf1VwXKbBjYXTBDcXvXnS6v9hd3NVmVkAO/LPNtgVksiy0MMTFB0+0URJJ1cY43eko6r5JEBnnD7ojUsdzkRJO4VkzJdC4br8lFw+z/yOqsSXmANFs/bQilLObSZiNQ== 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=FkisJEkO1oXOWT5s6JEr8l6FkKoaEUoqC+gHLyLzmgs=; b=NOam7NycuC0+Qmwx0y+GXysC4n87dNQFZqeZlp9zZizTmTuBd+93z8XPqc9z1jZXcCeOBal8U6d92sUwd57Du3E3SDnx4CUN4YceLlgmb528yGNCRG42GPXb5qr5WkfVZtO/MbHtrveZ9t3hr8hgyImtznFCmIMnmA62KpNO9CaEQXyoQ6G51OQGtsNd6IBmNWfces9x3t9v2loFQmU6rUE5MCkEC16lgJSG92dXPYXniI+iS0MXjv0tMCzd/O0HcQHq2IE1N4Yia+u3Qs+EEWuXCvxnUR/w8A49SKiLyKY+50QEl1J4cSpaBTofc+9DOr1l7PHM2JdCO731pn8tGA== 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=FkisJEkO1oXOWT5s6JEr8l6FkKoaEUoqC+gHLyLzmgs=; b=wy6550QGvrAAT3YGSWNrdz3eMskRlOoSiluj/sIfsxivtNmCuZRZ01jQni+T3Aw+PPkeqh+UlYg75VkRT801IzMOKbHjcKSNXj1kqC+axCkn/at0o0EARMk00U5FtapSeL+Ug7iAONwEhmwJvX1ACU7ihdRJypKM7dZOVI2CZKY= Received: from DM4PR10MB8218.namprd10.prod.outlook.com (2603:10b6:8:1cc::16) by IA0PR10MB6697.namprd10.prod.outlook.com (2603:10b6:208:443::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8746.30; Wed, 21 May 2025 18:20:47 +0000 Received: from DM4PR10MB8218.namprd10.prod.outlook.com ([fe80::2650:55cf:2816:5f2]) by DM4PR10MB8218.namprd10.prod.outlook.com ([fe80::2650:55cf:2816:5f2%5]) with mapi id 15.20.8746.030; Wed, 21 May 2025 18:20:47 +0000 From: Lorenzo Stoakes To: Andrew Morton Cc: Alexander Viro , Christian Brauner , Jan Kara , "Liam R . Howlett" , Vlastimil Babka , Jann Horn , Pedro Falcato , David Hildenbrand , Xu Xin , Chengming Zhou , linux-mm@kvack.org, linux-kernel@vger.kernel.org, linux-fsdevel@vger.kernel.org, Stefan Roesch Subject: [PATCH v2 3/4] mm: prevent KSM from completely breaking VMA merging Date: Wed, 21 May 2025 19:20:30 +0100 Message-ID: <6057647abfceb672fa932ad7fb1b5b69bdab0fc7.1747844463.git.lorenzo.stoakes@oracle.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: LNXP123CA0009.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:d2::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_|IA0PR10MB6697:EE_ X-MS-Office365-Filtering-Correlation-Id: cb6e87f4-f05e-40b9-d3c9-08dd98943553 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|376014|1800799024|7416014; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?3j00Y5UBtFgYXPzMiYH/f2VmAXYIZ7gnMUpA2iH4gSZ1YFBzDgd7AHDaqRKQ?= =?us-ascii?Q?/Bbc/BZWm7d0V6I6/khnZ6wH8r6qLjCrdIeQF/JdEosaeojqd6tIVAD+h+WW?= =?us-ascii?Q?hwSzfYAjZVDhdvxLkPpdVxAU7CJOnsjN3FrLnDjueq2IFmoN73Y2HcCQzqWM?= =?us-ascii?Q?ixUtiIZkyOfU/5qgKAx+FIZUlCeUYrCEDUwK50XMlJKuwRBnSl2pGrpnIJ0p?= =?us-ascii?Q?QZlDRYQUt+DrJ4KazPbhfglIa7ek3XWfeAzYCw27DAki3NObVKcydqDYbQZT?= =?us-ascii?Q?eSlgvNbRNRMJSWa6ya9yyCfq55mkww6hnNlQG96pH3J//X4R1GyocWePmNP3?= =?us-ascii?Q?ji4WaR6Q8lAEH49WU2+pOqpZzC3hDyMJ6A3bRHPRG4gO6AzRMXfpdQe4y4s1?= =?us-ascii?Q?jFouuZDTzqAj8r/okPjqwaNt7Ph48yvdBpkdEzgZ7jww3qzDSIJiFTRDCLgV?= =?us-ascii?Q?HMSw6zf8uP/Ea14yR7AViNeVUHM7V6FkwjofDy7GGOQ9h27kZEeVotXr5J8W?= =?us-ascii?Q?XSA7cRc9X6sQZdddkweylXui5grYvwpTVUud0pDMZNwp2PLOMMKizZeZGoFf?= =?us-ascii?Q?D52jRqOdki7Rbe9u3QWxr2t56GMV2fzQP2jYrsA4h8hmjQL8Sbnx2A0Q+Ukn?= =?us-ascii?Q?MpIQnP9nwLBMLI3DY8+uMEB7JH+an6M5iCRlMi7iqg4mGmwJN0TMe2g8F1cG?= =?us-ascii?Q?E8ZUNunzt3+XwG19LB2Qp8mjAVIKGIB565W5FmSILpdyyx2n0WElIwPs0vJu?= =?us-ascii?Q?Hdy9bKNufWVWIDZpNPtTyW45NvfnuPoDozLVVFIfDqzCoDAg5Sa7LockiYjJ?= =?us-ascii?Q?/nxXBBkCSm7eeq8h/xRh9dMUBXCCND8TLjA6mj+Iw2+4B++KShv1oiJdpPFA?= =?us-ascii?Q?2OVG/xzI86SvocB8Zl4NVE+Itvo2Yts0poZ3Pl1G7xseMyZKyKalar2X1gFg?= =?us-ascii?Q?PrZzTmQtAWKJAFHWgK/fqIs2+1jxyH5oMXFAjegcHjqXb0i+W9JBigKQgj4S?= =?us-ascii?Q?Ew0rgJIxFjYY1Adq321SRm9fQljYsnJizck6NjNyaPwXTls6frG9196+LGCj?= =?us-ascii?Q?sPwwYlthWmM6nnwQSMX+QnPzd3Yym/tHwyA5eB7ZjVvBriiHUY3SpjgSV6AX?= =?us-ascii?Q?VpZR5BJmJkH9AQU3ZRhVy7KZ5uQ63jC1V1Z9L10NgVM4C5qtHhnnbImy+GON?= =?us-ascii?Q?ZDLu1O2FGvPYYb8mXVpz/OSmb1ZnIWpVKTzHP0JUYIGCE9J/BYM44moDmrTr?= =?us-ascii?Q?F8XM+aELpv9oxBFtTRsUvVCPw0myASv3hlWkqgj6FEL90hjYQBF9qIbduc2T?= =?us-ascii?Q?qToWAn/c6PRh+Iawy4VvpeOhP5j5b64yNpR3SQg/JZTq7Iin9oJndeK2oD/A?= =?us-ascii?Q?xekjSVJutpOPXSGZw4Qqc52Ko5LhmA5ydb4h3amMQa/6sPZw9ov+G3X41OD1?= =?us-ascii?Q?cG/15Z7J4t4=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)(376014)(1800799024)(7416014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?NVyqdMJ/+nGZAXqc+j3DiPCG5/VAgnqSdbbro0qPqyqIrQXPzeARbWhLoAba?= =?us-ascii?Q?XMlLytCELaGTpD67t+H9ULbYyAmVG57G46gjUQewSXuw31skKV6MaHcBleZn?= =?us-ascii?Q?9Z2M1nYrI3P6E6HWXVLq7ChosZcT3K1/LuQiGJPmNNxQPh856pApjl5kG62Q?= =?us-ascii?Q?sxIqfz9HuErrzHkuRi/SMEJzWw3pbONjb02qEhi3kmIBThICjEosHtLIjcxK?= =?us-ascii?Q?Zt24dknatyVxQnYDJCVmKgSnha60UeXpYVIpD3s9gOKDTLEgLMeG4wezyO0A?= =?us-ascii?Q?/bbbYBD1V9IfswLueSdyQE4Vqr2AaoSN8bV2jxzntPKyQJ7V8GSdvJCEal2X?= =?us-ascii?Q?4SvdWhegBiUKJ86PAsaK/8mAMLqCedla4y5kZ2WC+M2QIrXAWapkd2Lw2lwJ?= =?us-ascii?Q?OOG3rxevQwPUVSsBqM4GR9Lu5ckm9/ZgyL/dmtVPbZSMxPpZkQYiJ4wX6gxa?= =?us-ascii?Q?6M7MzEcTIAts16WD8DMAk5UkFSdtqodTLCjc5o+ZmFYl7PBXrMjR1pM+2hjz?= =?us-ascii?Q?dH8Scg/fJygMS89/PQ7hFSTFmhrrEC65CSCjlFhiY9fhoRwiu4HNb2FxHGm5?= =?us-ascii?Q?JTzyIJCl0hPF12b61xC7B+Zbq8m7Yf8ZmzHswx2m5D/pFoQPrUsv+Nk3BrcW?= =?us-ascii?Q?u0R3uB0P4SnFDvk1fH8vjeYb+Lq+sG3KLbLeeRXKb+3NHGvEfsH/7ZTJ4Liv?= =?us-ascii?Q?AhfSCxzf7qUMSMOIiBDcneadnfpoPsB0M/czUXtYL5j/q8AdBHO7OQKuRu5N?= =?us-ascii?Q?H/X7MvSF+3SnL1JNZrF4+YWEJq+rXtS9ri96az1+NTMuJugembByOno5Z6ol?= =?us-ascii?Q?WhNUQMEf5OQFtj1eLGFKlk93IJHGfhMnH1fqBb2cQVeZB6L1IbHQM/0IjZT0?= =?us-ascii?Q?rbo7fCMxsEMU4mHVfYRTLLSJdC/S3KgpisncDpZKHuppzsoRPxf3ZcAC/d2S?= =?us-ascii?Q?lILmTwYZ9wVU4jC2CSfmyQowoSKJxeKMpuWN6Mb3aErWGyoQLhEozCTLXuVW?= =?us-ascii?Q?VuDZJXRrIw4vY4BSo3G4GfJBxR4TCAU93y2evPpvhwRstcj6i7iA0AVhBHjV?= =?us-ascii?Q?PAH7MftPxRzWOFLBTs88bOFGpdD2V4K7wPJUVmR9m0dYq/+bsFtZSAwZBF5r?= =?us-ascii?Q?Ijj/VZzLj9dmt0BcEPVrJWfBAYCcl8+aOuiCNDlrv6NRi/RsxpLYk+cKB+Bh?= =?us-ascii?Q?nrLFOYN+InxyDblo9x72CyET4TzuOUcs36kkE2G03ivG4mKvdIgxxbhQ1q0V?= =?us-ascii?Q?diGy5yyJBg/lHUq+MkycWQhVFuO9ODa4iS/3rY5gLn59VfqKLLFkzFNMQ2Xl?= =?us-ascii?Q?PrHhU8f7iDytPX+F06gpkiBPaUula6kYOLBnSr4UjYnxtEyiIH+m0+c+AgSE?= =?us-ascii?Q?NIcQuplyVReLmVpvlMYzv6HnJD/yVT3IErVkvMYFCGg/J7h4g/eWsEOS0Lje?= =?us-ascii?Q?Ja8UoVT/alGzDAm+jqqOXoxGjiqa6wO+0u0CdfudcpI/Rr4PNiy1JwX8hV5H?= =?us-ascii?Q?RmgaRPfFQmozFMmL/3YJdgMv35vDed2bqaZBU8ufShq8N/Sn6Z2EGF1ceZmb?= =?us-ascii?Q?xiNg9R9OsYpd0Cx4BX6phyu5+WaD+Ixz8yjR7CvGy2784o8Fa7cT7LKTYuqt?= =?us-ascii?Q?Tw=3D=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: Qja3Vv4bFxWZbYO9cS9Y/liFxbQp9su1ghe8YRXEQivqx3RjimsoxaEMFTek09CaoaNC0tI8lpPuaY3tAgdHlyWFdOXMS7XSn0aQEKwcr9YD0CetH36dXdFD7R/iM076SYmnwmfsVJymqYdcayEYwiP1k1NgrPhMZ66+zm6eH1N1F2bBFZaVCVquQeB/NQvJH9lslofpNvB6U5q+lJq9SYFk9j+gZThrIyyrFs8Yy66Q77gzwYnvnA4QLZrBKN5CknzQOR8aA26kSd8mUkW0olymLFMk7dpINjM31UdSFLSkviUOswd0xoVV61cOpoOYrJTyrRHgaslqWhNbzjoARrlao/cwNvn49jPxraG6gzt35DK589m2w7m/zj/vM1ik/I+GLY4N7n3vZ4Ey/sIevxCoEY9ML7Si3+xNpdSS8+RevaCR6KAJcsP2TFnynZs0xvzxCZ3LBlGmuuo9cUojd4WnVbK7HxSXJjK23WB3fZ5z/Sm+DPUYA9LSEOFLU8vwp9TLaf183/TBGelgOVSdYSHH6RXzKcGt4D4yuetODM5Of4e5lrc8afKFNFhLLVqXcC8GIw23jXpoPhOCbIWUHz+F0bRnpP6oUMNddho91Nw= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: cb6e87f4-f05e-40b9-d3c9-08dd98943553 X-MS-Exchange-CrossTenant-AuthSource: DM4PR10MB8218.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 May 2025 18:20:47.4427 (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: l2T11bnlbv4qhR3vdzUiBmknmx+47cFU9Jqzhn5ipXcLmrvJLKNtyAE5XKzg5hcdbPaLWC73AUhzcDOkOovX3JVf2czGz2oxYmHavo9nnrM= X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA0PR10MB6697 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-21_06,2025-05-20_03,2025-03-28_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 spamscore=0 mlxlogscore=999 suspectscore=0 phishscore=0 mlxscore=0 malwarescore=0 adultscore=0 bulkscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2505160000 definitions=main-2505210181 X-Proofpoint-ORIG-GUID: JZr4R_vzXTX-TLNbZyNnhHcQtmdxiDwf X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwNTIxMDE4MCBTYWx0ZWRfX6XKee7+Umn9W wBE16lrF55GFsXJar8NZ5fL4BqvCfEEUeagRxPnCmApjw4C1fXRQKWMtKsk+r4VgstmD5A8vrAB 69Cyemg/EJ0t31E7c9wdAxSJTUpA+25Z4lFElhp+hvM+197b7xC/GK4JLHBUc9eqiXaBdngrjvE T6UaMlZh5r4ylFz0y1GLdwj60+oLtbBRKJC+AR2lyByMAwYasX9DyM2COgWHDp4nlwi0DFnz8t/ duZ4gkXDBQCIuo+epCIwPsOzgazYZb29pilvo4EbEagDCLAnLbdxPWM0gFqqG9QEacR6cDd3X4U DBxVK8xhkbOyxGkyuhtfPvqRmNt0H2gqPKSxYtIa4Yq6gcY5bG8t+cgrKE4BX3PKcu+8NnPSi9A Njbl2wXoVnny89GKQUj+WsZnAbi896KYgoN0XfYUqdWKaAXdYK5gV58eMNYIDHLJv+Rl5CBE X-Proofpoint-GUID: JZr4R_vzXTX-TLNbZyNnhHcQtmdxiDwf X-Authority-Analysis: v=2.4 cv=IoYecK/g c=1 sm=1 tr=0 ts=682e1983 cx=c_pps a=XiAAW1AwiKB2Y8Wsi+sD2Q==:117 a=XiAAW1AwiKB2Y8Wsi+sD2Q==: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=rPgcKIkS7eLJc_CnTLkA:9 Content-Type: text/plain; charset="utf-8" If a user wishes to enable KSM mergeability for an entire process and all fork/exec'd processes that come after it, they use the prctl() PR_SET_MEMORY_MERGE operation. This defaults all newly mapped VMAs to have the VM_MERGEABLE VMA flag set (in order to indicate they are KSM mergeable), as well as setting this flag for all existing VMAs. However it also entirely and completely breaks VMA merging for the process and all forked (and fork/exec'd) processes. This is because when a new mapping is proposed, the flags specified will never have VM_MERGEABLE set. However all adjacent VMAs will already have VM_MERGEABLE set, rendering VMAs unmergeable by default. To work around this, we try to set the VM_MERGEABLE flag prior to attempting a merge. In the case of brk() this can always be done. However on mmap() things are more complicated - while KSM is not supported for file-backed mappings, it is supported for MAP_PRIVATE file-backed mappings. And these mappings may have deprecated .mmap() callbacks specified which could, in theory, adjust flags and thus KSM eligiblity. This is unlikely to cause an issue on merge, as any adjacent file-backed mappings would already have the same post-.mmap() callback attributes, and thus would naturally not be merged. But for the purposes of establishing a VMA as KSM-eligible (as well as initially scanning the VMA), this is potentially very problematic. So we check to determine whether this at all possible. If not, we set VM_MERGEABLE prior to the merge attempt on mmap(), otherwise we retain the previous behaviour. When .mmap_prepare() is more widely used, we can remove this precaution. While this doesn't quite cover all cases, it covers a great many (all anonymous memory, for instance), meaning we should already see a significant improvement in VMA mergeability. Since, when it comes to file-backed mappings (other than shmem) we are really only interested in MAP_PRIVATE mappings which have an available anon page by default. Therefore, the VM_SPECIAL restriction makes less sense for KSM. In a future series we therefore intend to remove this limitation, which ought to simplify this implementation. However it makes sense to defer doing so until a later stage so we can first address this mergeability issue. Signed-off-by: Lorenzo Stoakes Fixes: d7597f59d1d3 ("mm: add new api to enable ksm per process") # please = no backport! Reviewed-by: Chengming Zhou Acked-by: David Hildenbrand Reviewed-by: Liam R. Howlett --- include/linux/ksm.h | 8 +++++--- mm/ksm.c | 18 +++++++++++------ mm/vma.c | 49 +++++++++++++++++++++++++++++++++++++++++++-- 3 files changed, 64 insertions(+), 11 deletions(-) diff --git a/include/linux/ksm.h b/include/linux/ksm.h index d73095b5cd96..51787f0b0208 100644 --- a/include/linux/ksm.h +++ b/include/linux/ksm.h @@ -17,8 +17,8 @@ #ifdef CONFIG_KSM int ksm_madvise(struct vm_area_struct *vma, unsigned long start, unsigned long end, int advice, unsigned long *vm_flags); - -void ksm_add_vma(struct vm_area_struct *vma); +vm_flags_t ksm_vma_flags(const struct mm_struct *mm, const struct file *fi= le, + vm_flags_t vm_flags); int ksm_enable_merge_any(struct mm_struct *mm); int ksm_disable_merge_any(struct mm_struct *mm); int ksm_disable(struct mm_struct *mm); @@ -97,8 +97,10 @@ bool ksm_process_mergeable(struct mm_struct *mm); #else /* !CONFIG_KSM */ -static inline void ksm_add_vma(struct vm_area_struct *vma) +static inline vm_flags_t ksm_vma_flags(const struct mm_struct *mm, + const struct file *file, vm_flags_t vm_flags) { + return vm_flags; } static inline int ksm_disable(struct mm_struct *mm) diff --git a/mm/ksm.c b/mm/ksm.c index d0c763abd499..18b3690bb69a 100644 --- a/mm/ksm.c +++ b/mm/ksm.c @@ -2731,16 +2731,22 @@ static int __ksm_del_vma(struct vm_area_struct *vma) return 0; } /** - * ksm_add_vma - Mark vma as mergeable if compatible + * ksm_vma_flags - Update VMA flags to mark as mergeable if compatible * - * @vma: Pointer to vma + * @mm: Proposed VMA's mm_struct + * @file: Proposed VMA's file-backed mapping, if any. + * @vm_flags: Proposed VMA"s flags. + * + * Returns: @vm_flags possibly updated to mark mergeable. */ -void ksm_add_vma(struct vm_area_struct *vma) +vm_flags_t ksm_vma_flags(const struct mm_struct *mm, const struct file *fi= le, + vm_flags_t vm_flags) { - struct mm_struct *mm =3D vma->vm_mm; + if (test_bit(MMF_VM_MERGE_ANY, &mm->flags) && + __ksm_should_add_vma(file, vm_flags)) + vm_flags |=3D VM_MERGEABLE; - if (test_bit(MMF_VM_MERGE_ANY, &mm->flags)) - __ksm_add_vma(vma); + return vm_flags; } static void ksm_add_vmas(struct mm_struct *mm) diff --git a/mm/vma.c b/mm/vma.c index 3ff6cfbe3338..5bebe55ea737 100644 --- a/mm/vma.c +++ b/mm/vma.c @@ -2482,7 +2482,6 @@ static int __mmap_new_vma(struct mmap_state *map, str= uct vm_area_struct **vmap) */ if (!vma_is_anonymous(vma)) khugepaged_enter_vma(vma, map->flags); - ksm_add_vma(vma); *vmap =3D vma; return 0; @@ -2585,6 +2584,45 @@ static void set_vma_user_defined_fields(struct vm_ar= ea_struct *vma, vma->vm_private_data =3D map->vm_private_data; } +static void update_ksm_flags(struct mmap_state *map) +{ + map->flags =3D ksm_vma_flags(map->mm, map->file, map->flags); +} + +/* + * Are we guaranteed no driver can change state such as to preclude KSM me= rging? + * If so, let's set the KSM mergeable flag early so we don't break VMA mer= ging. + * + * This is applicable when PR_SET_MEMORY_MERGE has been set on the mm_stru= ct via + * prctl() causing newly mapped VMAs to have the KSM mergeable VMA flag se= t. + * + * If this is not the case, then we set the flag after considering mergeab= ility, + * which will prevent mergeability as, when PR_SET_MEMORY_MERGE is set, a = new + * VMA will not have the KSM mergeability VMA flag set, but all other VMAs= will, + * preventing any merge. + */ +static bool can_set_ksm_flags_early(struct mmap_state *map) +{ + struct file *file =3D map->file; + + /* Anonymous mappings have no driver which can change them. */ + if (!file) + return true; + + /* shmem is safe. */ + if (shmem_file(file)) + return true; + + /* + * If .mmap_prepare() is specified, then the driver will have already + * manipulated state prior to updating KSM flags. + */ + if (file->f_op->mmap_prepare) + return true; + + return false; +} + 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) @@ -2595,6 +2633,7 @@ static unsigned long __mmap_region(struct file *file,= unsigned long addr, 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); + bool check_ksm_early =3D can_set_ksm_flags_early(&map); error =3D __mmap_prepare(&map, uf); if (!error && have_mmap_prepare) @@ -2602,6 +2641,9 @@ static unsigned long __mmap_region(struct file *file,= unsigned long addr, if (error) goto abort_munmap; + if (check_ksm_early) + update_ksm_flags(&map); + /* Attempt to merge with adjacent VMAs... */ if (map.prev || map.next) { VMG_MMAP_STATE(vmg, &map, /* vma =3D */ NULL); @@ -2611,6 +2653,9 @@ static unsigned long __mmap_region(struct file *file,= unsigned long addr, /* ...but if we can't, allocate a new VMA. */ if (!vma) { + if (!check_ksm_early) + update_ksm_flags(&map); + error =3D __mmap_new_vma(&map, &vma); if (error) goto unacct_error; @@ -2713,6 +2758,7 @@ int do_brk_flags(struct vma_iterator *vmi, struct vm_= area_struct *vma, * Note: This happens *after* clearing old mappings in some code paths. */ flags |=3D VM_DATA_DEFAULT_FLAGS | VM_ACCOUNT | mm->def_flags; + flags =3D ksm_vma_flags(mm, NULL, flags); if (!may_expand_vm(mm, flags, len >> PAGE_SHIFT)) return -ENOMEM; @@ -2756,7 +2802,6 @@ int do_brk_flags(struct vma_iterator *vmi, struct vm_= area_struct *vma, mm->map_count++; validate_mm(mm); - ksm_add_vma(vma); out: perf_event_mmap(vma); mm->total_vm +=3D len >> PAGE_SHIFT; -- 2.49.0 From nobody Tue Dec 16 08:58:36 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 0435928F93B; Wed, 21 May 2025 18:21:11 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=205.220.165.32 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1747851673; cv=fail; b=UbzkFTgGUbheH/ZGn379mDQqxRfa/8G/4Io/74hNDIWy2QEpcDHYr6ZpmlU7Cl+f+R9NveHP3Gb0GMmlRlSoN/nELSwmstof0SNNWrOglNDBBiO5bjVVRP5XifF5d2pFKgPu4VUWsW9cnpg2hBx1k2BIjCqdUi3w2sV39jLHbwU= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1747851673; c=relaxed/simple; bh=ngm2/ZpxfWckNSaa/SkGY9g8uxcpQVHPVE2yUF6Y0X8=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=ugrpvqVRFUL0wi2mPJquClfdRJd2Ji/1t8tK5Rk4yXy4uOiN0idb2OEiEOMyCpfVYxpt64uzybK82KKsvPOA6uvGhGkwKhrJCO2uX04oilMU1X0uh0G7GBmQ2vVX6eZzDHKWkAKaz+mk2OLyIV5hHQRvG7fNRrCWs8+tIMzD3Sk= 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=HVSY4aus; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=kezP9yDl; 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="HVSY4aus"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="kezP9yDl" 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 54LGuqE9013246; Wed, 21 May 2025 18:20:53 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=cc :content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s= corp-2025-04-25; bh=Z/MWt8fKSWc/VhnmpoGSQF3TNUvvFWhQLq+O2BAiICw=; b= HVSY4aussMRLdkvKqHCAHd2AaArcVD4wsvL5Iu5P0MlsyhN5O0vUDJV+bDSN4hPn ZzKxoA5yL6qhtjXCTtMkEk4nvQSf0VQJP/wT3VgweP18Rq/JLXfeCvwGLm+sSCWA UiyvHs1j9U8GqoUKuM2nF4H2AUa/GERWVEIPxWaqfR7KSzYQEXUTAAXCX1uMgEfR WRIK1qC7kJOHz8p8VVeKiJsFXTO1UOeSv6I6OPANfiEABKXmPveQBe1lsxVKHPgV BXbA5e6JEPMqlukOJuea5ZkhryqDwGoh+3wuI0RgL+2vsVqjsdvcLVGSspd3v/qz jAd2Auym6g1pBCzsFBb/Nw== Received: from phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta03.appoci.oracle.com [138.1.37.129]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 46sjc2r8qe-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 21 May 2025 18:20:53 +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 54LGqjXZ033596; Wed, 21 May 2025 18:20:52 GMT Received: from bl2pr02cu003.outbound.protection.outlook.com (mail-eastusazon11010012.outbound.protection.outlook.com [52.101.51.12]) by phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 46rwenq3u6-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 21 May 2025 18:20:52 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=oG+QmwtEX9ma5qYYDuGPtYjztKdyJzOz3L7JmPYz2VrOSds1P9m1WEagN9lcVaE9i2R0rxTk84is1vDH1gX22A70Z0sgR8R3o2rqId6HoA9azdvluGrqC/Ap56XBby475swipxrwcJoepw9T9G6OgLiVtMc4mz3d3vvSOQSqGKH9FOZ7I2GdQwG/R4xbF0DSXDCFcspAto2tf5yEruN7b9jvLIc+YXAiAoFPLXs0h2GgRfUckGxTnsCkBqOxVhWnVHJKqT+kMNB2eFTYpnywwv9iTA27BmXO7l615R8/ymB59pMduQFCqq6yfQWSxfmj96+G09o55MhzXmaD62BNAg== 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=Z/MWt8fKSWc/VhnmpoGSQF3TNUvvFWhQLq+O2BAiICw=; b=csr1zJpu+gd3Nvm0ryKPNW+YRSXV6RyHw3Pe+EV4nP6acBR+H9rObwkJnQ1AvJAX3Y5qOAYUHhhoyRbeBYMWgcus6JwX/UbmJ1x37BC3m4/mxC54D8LeYt3M9fOLmScdHuiBEe6lLR51hyqMq97zL/e+QhVOZh4a4tAkyX4/8D3c5oZ09hv/oiCbtM1bfObApuFvLW6PzFjZdikYXdiAS0/rgUhtLT3ibUR5HsZ8QWASSAE/PcYWHL7dpzRBwL2havOy51E2z6iftjP+XPpNxqkFwahjiG872QFgm3H6eTKlwhCkzUfHwhhSamytypcLdLwsWn2P+HZDDJoFVplzfg== 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=Z/MWt8fKSWc/VhnmpoGSQF3TNUvvFWhQLq+O2BAiICw=; b=kezP9yDlKKOOcDr+YoQYHZhL34Ed2v45U8WD5pN/GpB88pyEljJZeGnZaJeLA342Zu4PLOIT3hup+MEIZYpHEDU8UeBZO10oq589AH3CP4qqlCp7uk8CBjJC7HMPCdjymocQFQal5VxCTtA72j1YUg0TVs354wnecaEPYl6w2/M= Received: from DM4PR10MB8218.namprd10.prod.outlook.com (2603:10b6:8:1cc::16) by IA0PR10MB6697.namprd10.prod.outlook.com (2603:10b6:208:443::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8746.30; Wed, 21 May 2025 18:20:49 +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.8746.030; Wed, 21 May 2025 18:20:49 +0000 From: Lorenzo Stoakes To: Andrew Morton Cc: Alexander Viro , Christian Brauner , Jan Kara , "Liam R . Howlett" , Vlastimil Babka , Jann Horn , Pedro Falcato , David Hildenbrand , Xu Xin , Chengming Zhou , linux-mm@kvack.org, linux-kernel@vger.kernel.org, linux-fsdevel@vger.kernel.org, Stefan Roesch Subject: [PATCH v2 4/4] tools/testing/selftests: add VMA merge tests for KSM merge Date: Wed, 21 May 2025 19:20:31 +0100 Message-ID: X-Mailer: git-send-email 2.49.0 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: LO4P123CA0570.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:276::14) To DM4PR10MB8218.namprd10.prod.outlook.com (2603:10b6:8:1cc::16) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DM4PR10MB8218:EE_|IA0PR10MB6697:EE_ X-MS-Office365-Filtering-Correlation-Id: fffdf48b-9033-4c8d-2cec-08dd9894369c X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|376014|1800799024|7416014; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?diu2c5l01Y5Nvc+428OoYx+Hg9QEAi2iX/uotsqz95N9v84PyR6rMIWwbpU8?= =?us-ascii?Q?3+K54b0eQkJfNpxTAXnLhwzg4RGa5FtDhD8XvRmT/c4+YoqUec9+QIis37UY?= =?us-ascii?Q?oFjQ5AdlC2Gj+uEzLaW6WeY2tXmCB4AL2eLjhUV5zDJik58v8uxF7Z7fSB1i?= =?us-ascii?Q?11cIWI2KTBguEyUsY/N6FPrnMCp/10Rl6QqaYUIAgJB5utRQWjw+7/ScCgVw?= =?us-ascii?Q?6PqIem+hBAEfSzmAR1P4KtspBQ/eIGCL6fntXyAQonr/6skG6fcvt92ysrLE?= =?us-ascii?Q?zT+WUqdQO8zqTTDy8y2UwIFiblxjLScWSBnrqe9Pn2hJA0Hzg4s2gf138LEv?= =?us-ascii?Q?d3PZBJpDF7hx4duC/EqPCppVVVoRRB1FlXfXqB5d7LW21oz5/0uRGrRW0prz?= =?us-ascii?Q?B9mSsk/XBi0/A25oVAJjwoK2UwOUGxDFcQPPD0FSzS+1pJvvps+diOCapCdH?= =?us-ascii?Q?LjB9FOdKhhug8cDuG0cvvWHlnMPApQ0BDUwkrOQ+r1ZgXGiWHD4nY+AhdJV6?= =?us-ascii?Q?al8w3AzxkoXzc2UnmGax33+tlKhopDpx9ikxmucw0K/mmW5j16SDthUxiva9?= =?us-ascii?Q?aGzW57N8zv+cI7RzE0/2pntVDJ8pR+K9H5REDRIJZevHYpXYpbI9aGo7E056?= =?us-ascii?Q?vZsgbsOUJFzkFe32XqYzzkD2fGK/VK+W095IIhAuSucEo7IYxnEerlPTPPcz?= =?us-ascii?Q?2Mnfe2m+ZwAgMGRbucxGUjl5Qqjhp3PVejdvZvQbheJ6kCGPLWN1u7fFf/CI?= =?us-ascii?Q?eEg/X0j8QojWjKcJ6RSpc+M3OTG9xKd8Kp/Jxzb2GXrBvhg1wWGJJIGRg7F4?= =?us-ascii?Q?KWfZ4/JyZX1AUB8n8l0cMDKrmZyjwZ5yD5vn5iVriK/hhwUsfXHA3oULUMhw?= =?us-ascii?Q?cD0/N2dbCEm/zWdjmUwkljp3nCOBUeJB6KOCdXlCIe4f6nmREOyXuUnpSCPg?= =?us-ascii?Q?NttYNuxymW9Afb7oW6VRtTo+svSGNlj+yJ1Bw47F1ruOKzcAPr9vYXrLdtyA?= =?us-ascii?Q?eQfOOGMJzJ49zlDYC/cpWOEmSbycGQKHEtSRViBFthQI+JyPDhXN6I9/9AJy?= =?us-ascii?Q?ROXLwZ8BGxk/wRomZUrJfSQAM5SGi9UV2BX2pogiNX7qKfSmir1LDMZHPzj7?= =?us-ascii?Q?9pryDujl5gLd61NyoJS6LavcSyLk2DxFpu7Y1G49WMBHBAhffBSz3g8bNhdY?= =?us-ascii?Q?sjHXQ+pLMR8viz/xNtLHnfPLFO2T6ig6ZE3F8/3sdn0OyGhyXX1OP79g5P0z?= =?us-ascii?Q?94Gvp/jZ+9Hcd7YbJRItRLtVdvbuWBvVIKnCMCY/q3249qRW3ZrF/RKU+dwg?= =?us-ascii?Q?eenc3v9PrEh8Uu6GgEofLogPXl+fxEBmezkaJt0hn/P3tYqIcqHY9bVvdWLW?= =?us-ascii?Q?BRTvC592xRLzBC89mOryI+rslvtSpGsYLdjLhbVNQ33KHn9Mxw=3D=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DM4PR10MB8218.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(376014)(1800799024)(7416014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?+YQtuohlJHDxy8B6QI+xhfbEt5BXnMkXvYs7CTSzj1wEECNqR3Zhoh+SR8J0?= =?us-ascii?Q?GYI8vwtBGL53JCx3BF9Ub1RiohZe4PTmu0M4ESbcgo00A2FMawfjh1Q7ngxW?= =?us-ascii?Q?dHFOQcUIsJA2qrQ1rAC7/se+kctDcwPiG/ESJLAYty/M5hhh3RtKPT7IoxA9?= =?us-ascii?Q?CCYu6pQ8H/EURsjVPkn8ZBYf0odkmMtXZYtwO2nvdNBsm1g/uYBV59HilleE?= =?us-ascii?Q?1YfZv5eWYsmhC2vQsvDyDRDricP0UAlJwCsDSXNMhiF5aCoy58LomoK2AM63?= =?us-ascii?Q?mXSwVDXwhzbL8sJZowOuChpd2wrddZTSekOMddKXLyRy5+CGMKY7Cs80kjBT?= =?us-ascii?Q?gCEF88caf0a7JpDPTtVK9IX8TQLcJ/o1ApWssklIsuG7ORFHw21Q/PxpR+GX?= =?us-ascii?Q?1eUGEfylUUh3REpclOfOaXyoTPiqd+8FYdFn17jQ7swqcb2hqAl/emtAi/Nv?= =?us-ascii?Q?v+WHbBH45u1HlhdilEQtK5aLNEGC3mErzrmb6gXR6BKUbt4iYw+rNhP+hgL5?= =?us-ascii?Q?kl01ZO1aIDNvNfpTQLs0C+eFbFZiaTMZVd1Ysq4FoBnSjaz8KJzA+GTOiLx5?= =?us-ascii?Q?Y3kAR86d6gUl3iNUr9YTDpN1/I4Ka9OlEp7JmZsf3lHEVzfZQFRFzjPeSvKi?= =?us-ascii?Q?3z5q7NnXAN6GdNLP24cb1QPhiGMD6MzWJhfpkj2jchXzD12QdLGWC8cQmzjX?= =?us-ascii?Q?LrpBAHg9WgmVHMcx481TVYUqP+Y5Vx/bTideI67hGCL0LOQn8sv3i5zm1kY0?= =?us-ascii?Q?9JDwSwSj/P7oIUFeogLqhS48fO+QaXw26f7LWWMwv9dFeT+35Q4+v2vgnkuu?= =?us-ascii?Q?bEm3UWcWQQZOffN+EZW5K93mul/oZdwQAvcipab0IfnGdBQ7E7BbcZUdKKee?= =?us-ascii?Q?dAMvfqpa8r5qD2cDhduJo9wrgNsnAIkIqjs3lGy6fJf74LdVni2x9mXfHCuy?= =?us-ascii?Q?vBIZ29tjJbm9J7YjRwCQZNVLq6hVhLeP1hWJD+Sl0YKIHCJ4S4+Ud1/k9cDZ?= =?us-ascii?Q?/oSh2YIlWXqv83FlkGZ7bddp61sjAzq1isvExcEt7bx+yJobpXHQDPPzrfE0?= =?us-ascii?Q?P5uVmK38GXJQQ6lDy8FAUEIkkb9cG12G2Vdsa/0WoAn4ulPDp3qyAgBd1UCL?= =?us-ascii?Q?R2uRj/+yEcsu6nzO6K99aU78nMc630XmWBZ4H1V2LX/B3kUpUdTCA7QHtz7m?= =?us-ascii?Q?FI9kdFAX0nh/oWkH8JTKwioYmToe1h48Vyf+ktOpgvVGTpm4LG07cvDOssJP?= =?us-ascii?Q?qfa4GYZeOiwCd2pbJGEJYbCX23k66RbEPOfiqxc0kvMWPTZXm+2ZJFfU7VhZ?= =?us-ascii?Q?jsi3qFmhKhM1qY300rFXdBTIbRD4w4WrYOcDUFnmQr8xPGhVicebHHy8pcVo?= =?us-ascii?Q?HgGev+vR4nCdS4klfuXyOLtTcW+1Mksy5PIc+OGFOJ7JjmkVOYF1UVLEKcGX?= =?us-ascii?Q?hqAtGolk/wUctjxmLz3Csu2vCVuA4kBW6fapT3ZI6E66wQOTbU/CLfdytOJ8?= =?us-ascii?Q?j0YNj6/AkP3p5G+SlvPWWfRWHLUzvMsgQvHkA5e8KgUlnA6085b4pJJkbT8Q?= =?us-ascii?Q?WHNrxgnEY3JkJlC/fF/FmMrGJgDpYZLgF+hzU7tvkL5Zoj7mlLPLcRBDX5g7?= =?us-ascii?Q?3g=3D=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: 0sUiWhn+Ce+yc5OBD1t35ou3BNhXUjGcJOB//yk61vAYkN7Fu2DkUQIhB93ZLPMb3RP3X5YMhGfC7tM1xJ3HFIyjgXqJhB8bDoU11rpEUQRcskG5Nd6KmBxH7mYopWFJ2rq7g7Lfz+5BtM1th6UIEs11Cw7vEoqVYb/3GiVZiI3hJzcMrg1lQMi6c6OHpYM0SI5h0QvqKh0ONVFJP7xySQOkLfTlaQFJkeY/qIpyFefB5k9nc97cDzLYtb46uwa/GUfmYfHX+tmGfA7VbYQX4StjpdGC/IRkECXR7Gj9P3TtpXtgO8nSDJIKiGavuXsQayugT9YUcS/GX6leVRJisTmfe44ibFpJSwPZoHpu+qwrm12MSdqXJft1DMVgc+RfYVnfL5rnhfN0ANR7PEueakX5B518BCyK9YG3e6cVAMqVcIl3thBPaxxAzcqVHetAuxzMAHmEjXKXjCJh1vdKb/f/xFvIDGiDO/LeE6ngxKpEgA1nHhT7IWOCNCv640dx3glbAbIhW0J5zpw+ekuL2cLnkRk5E81N6VT9wS98+78HXQl5nC4UA95DO3cIRLjEAnmo+2KqLrbWqa1GkOiHJE/9wzdsJ/SaHTmsvo9WgVw= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: fffdf48b-9033-4c8d-2cec-08dd9894369c X-MS-Exchange-CrossTenant-AuthSource: DM4PR10MB8218.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 May 2025 18:20:49.5947 (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: Gk7K5vb+3KDsXNvY2pErdOXtoN9bBdFL4kbbDXGGGL3h/ZBDfPmH4rUDaAmWO1y64n7YXdtenu3vUoK2bp94IqvK2p+lgJtUDOFXMLEOBlo= X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA0PR10MB6697 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-21_06,2025-05-20_03,2025-03-28_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 bulkscore=0 mlxlogscore=999 malwarescore=0 suspectscore=0 phishscore=0 spamscore=0 adultscore=0 mlxscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2505160000 definitions=main-2505210181 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwNTIxMDE4MSBTYWx0ZWRfX8YKOxv4ZU5ZF NMVJ0ogY1UxUTvJQVDGUUegdRXvznoIPGad2H05p3Lg/gp/D3Zaalo3dUaYJ6K/NB2PHSEPYNsZ eCQDBYC2FoVvqirH0UCqS2Dn6SXzoEYdA2+/z+IpTGsf2tgNhFZiOKLAQqgtfPyogkSeoQTEIk5 0BkXn6+JEDgZ/VVb/4MwiDK3JJ19FiNAgDwP53rr+WS3323BebG4xU9cAkspODR07GNYRK5uvR2 MhQ+RY74xKUs54K6+sNPOrFTetD7o0L16AhdyByqp5PQ4FtoVuuBBtGTI17LzOYkKG8vMCAykO0 GdDjML8v22LJn+vZn9nTGo2FhdHYp78ciSW1+pYBXmKoLHwkAYi7FSOCaaz+qzRP0maAvbwNRkm kWSVyB6aqmzXPal0FSTzlvNHULwbYoH28deGxJOHZO5rXWw+nKHahmOQQSsBfU2KftHz0a+H X-Proofpoint-ORIG-GUID: kQ2SArx_1JMgu3VMnMYqi185wR64usHm X-Authority-Analysis: v=2.4 cv=GsFC+l1C c=1 sm=1 tr=0 ts=682e1985 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=WX__GcUTe9ZGzPOcXVoA:9 X-Proofpoint-GUID: kQ2SArx_1JMgu3VMnMYqi185wR64usHm Content-Type: text/plain; charset="utf-8" Add test to assert that we have now allowed merging of VMAs when KSM merging-by-default has been set by prctl(PR_SET_MEMORY_MERGE, ...). We simply perform a trivial mapping of adjacent VMAs expecting a merge, however prior to recent changes implementing this mode earlier than before, these merges would not have succeeded. Assert that we have fixed this! Signed-off-by: Lorenzo Stoakes Reviewed-by: Chengming Zhou Tested-by: Chengming Zhou Reviewed-by: Liam R. Howlett --- tools/testing/selftests/mm/merge.c | 78 ++++++++++++++++++++++++++++++ 1 file changed, 78 insertions(+) diff --git a/tools/testing/selftests/mm/merge.c b/tools/testing/selftests/m= m/merge.c index c76646cdf6e6..2380a5a6a529 100644 --- a/tools/testing/selftests/mm/merge.c +++ b/tools/testing/selftests/mm/merge.c @@ -2,10 +2,12 @@ =20 #define _GNU_SOURCE #include "../kselftest_harness.h" +#include #include #include #include #include +#include #include #include "vm_util.h" =20 @@ -31,6 +33,11 @@ FIXTURE_TEARDOWN(merge) { ASSERT_EQ(munmap(self->carveout, 12 * self->page_size), 0); ASSERT_EQ(close_procmap(&self->procmap), 0); + /* + * Clear unconditionally, as some tests set this. It is no issue if this + * fails (KSM may be disabled for instance). + */ + prctl(PR_SET_MEMORY_MERGE, 0, 0, 0, 0); } =20 TEST_F(merge, mprotect_unfaulted_left) @@ -452,4 +459,75 @@ TEST_F(merge, forked_source_vma) ASSERT_EQ(procmap->query.vma_end, (unsigned long)ptr2 + 5 * page_size); } =20 +TEST_F(merge, ksm_merge) +{ + unsigned int page_size =3D self->page_size; + char *carveout =3D self->carveout; + struct procmap_fd *procmap =3D &self->procmap; + char *ptr, *ptr2; + int err; + + /* + * Map two R/W immediately adjacent to one another, they should + * trivially merge: + * + * |-----------|-----------| + * | R/W | R/W | + * |-----------|-----------| + * ptr ptr2 + */ + + ptr =3D mmap(&carveout[page_size], page_size, PROT_READ | PROT_WRITE, + MAP_ANON | MAP_PRIVATE | MAP_FIXED, -1, 0); + ASSERT_NE(ptr, MAP_FAILED); + ptr2 =3D mmap(&carveout[2 * page_size], page_size, + PROT_READ | PROT_WRITE, + MAP_ANON | MAP_PRIVATE | MAP_FIXED, -1, 0); + ASSERT_NE(ptr2, MAP_FAILED); + ASSERT_TRUE(find_vma_procmap(procmap, ptr)); + ASSERT_EQ(procmap->query.vma_start, (unsigned long)ptr); + ASSERT_EQ(procmap->query.vma_end, (unsigned long)ptr + 2 * page_size); + + /* Unmap the second half of this merged VMA. */ + ASSERT_EQ(munmap(ptr2, page_size), 0); + + /* OK, now enable global KSM merge. We clear this on test teardown. */ + err =3D prctl(PR_SET_MEMORY_MERGE, 1, 0, 0, 0); + if (err =3D=3D -1) { + int errnum =3D errno; + + /* Only non-failure case... */ + ASSERT_EQ(errnum, EINVAL); + /* ...but indicates we should skip. */ + SKIP(return, "KSM memory merging not supported, skipping."); + } + + /* + * Now map a VMA adjacent to the existing that was just made + * VM_MERGEABLE, this should merge as well. + */ + ptr2 =3D mmap(&carveout[2 * page_size], page_size, + PROT_READ | PROT_WRITE, + MAP_ANON | MAP_PRIVATE | MAP_FIXED, -1, 0); + ASSERT_NE(ptr2, MAP_FAILED); + ASSERT_TRUE(find_vma_procmap(procmap, ptr)); + ASSERT_EQ(procmap->query.vma_start, (unsigned long)ptr); + ASSERT_EQ(procmap->query.vma_end, (unsigned long)ptr + 2 * page_size); + + /* Now this VMA altogether. */ + ASSERT_EQ(munmap(ptr, 2 * page_size), 0); + + /* Try the same operation as before, asserting this also merges fine. */ + ptr =3D mmap(&carveout[page_size], page_size, PROT_READ | PROT_WRITE, + MAP_ANON | MAP_PRIVATE | MAP_FIXED, -1, 0); + ASSERT_NE(ptr, MAP_FAILED); + ptr2 =3D mmap(&carveout[2 * page_size], page_size, + PROT_READ | PROT_WRITE, + MAP_ANON | MAP_PRIVATE | MAP_FIXED, -1, 0); + ASSERT_NE(ptr2, MAP_FAILED); + ASSERT_TRUE(find_vma_procmap(procmap, ptr)); + ASSERT_EQ(procmap->query.vma_start, (unsigned long)ptr); + ASSERT_EQ(procmap->query.vma_end, (unsigned long)ptr + 2 * page_size); +} + TEST_HARNESS_MAIN --=20 2.49.0