From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 94DD5C0218D for ; Wed, 29 Jan 2025 14:19:15 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 1A71E6B028B; Wed, 29 Jan 2025 09:19:15 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 15661280003; Wed, 29 Jan 2025 09:19:15 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id EEAB7280001; Wed, 29 Jan 2025 09:19:14 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0016.hostedemail.com [216.40.44.16]) by kanga.kvack.org (Postfix) with ESMTP id CCA9F6B028B for ; Wed, 29 Jan 2025 09:19:14 -0500 (EST) Received: from smtpin25.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay10.hostedemail.com (Postfix) with ESMTP id 7F3E0C0E5E for ; Wed, 29 Jan 2025 14:19:14 +0000 (UTC) X-FDA: 83060696628.25.08AB1E5 Received: from mx0b-00069f02.pphosted.com (mx0b-00069f02.pphosted.com [205.220.177.32]) by imf29.hostedemail.com (Postfix) with ESMTP id 338E512000B for ; Wed, 29 Jan 2025 14:19:11 +0000 (UTC) Authentication-Results: imf29.hostedemail.com; dkim=pass header.d=oracle.com header.s=corp-2023-11-20 header.b=LfIf6pXA; dkim=pass header.d=oracle.onmicrosoft.com header.s=selector2-oracle-onmicrosoft-com header.b=lF+6ONUR; spf=pass (imf29.hostedemail.com: domain of lorenzo.stoakes@oracle.com designates 205.220.177.32 as permitted sender) smtp.mailfrom=lorenzo.stoakes@oracle.com; arc=pass ("microsoft.com:s=arcselector10001:i=1"); dmarc=pass (policy=reject) header.from=oracle.com ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1738160351; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=DhDVhrG4q2OUzhhm3JQard37hqB3/aQwKw6c8gLGwsM=; b=l6uHu8Iz+REdSf23qIc+f5HfEd15x5WyljNab2CKrAMMCLt6Irpdtq4NBRYr2lXwPwkrNJ 1iycYdyjhY20kq9+/bscKt65S64uHHGQXpJOowtzmDq/q+3GlzFlkqHbxDsX04f5wbnf/6 5j6ObILzB1z+UHE11jOJEQ9HKbD/UwY= ARC-Seal: i=2; s=arc-20220608; d=hostedemail.com; t=1738160351; a=rsa-sha256; cv=pass; b=2XfYlR7jVmTtYFpskwYuVTCqbmjt8UntzZH+ZGt2HriBDnu4WC7M7sZDO8vr67QgHxr1me SwVAH5TBkaHoZy9zUjAN9qS7PqaZCurkgcjSmHEHgVTfz8dkm9RVh+PI29DxXH52Bo4GFu jF4IabHkR096NyR9y2NeFNgWop2XkZA= ARC-Authentication-Results: i=2; imf29.hostedemail.com; dkim=pass header.d=oracle.com header.s=corp-2023-11-20 header.b=LfIf6pXA; dkim=pass header.d=oracle.onmicrosoft.com header.s=selector2-oracle-onmicrosoft-com header.b=lF+6ONUR; spf=pass (imf29.hostedemail.com: domain of lorenzo.stoakes@oracle.com designates 205.220.177.32 as permitted sender) smtp.mailfrom=lorenzo.stoakes@oracle.com; arc=pass ("microsoft.com:s=arcselector10001:i=1"); dmarc=pass (policy=reject) header.from=oracle.com Received: from pps.filterd (m0246631.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 50TE1oc0009482; Wed, 29 Jan 2025 14:19:09 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=cc :content-type:date:from:in-reply-to:message-id:mime-version :references:subject:to; s=corp-2023-11-20; bh=DhDVhrG4q2OUzhhm3J Qard37hqB3/aQwKw6c8gLGwsM=; b=LfIf6pXAl+uoSB5Rgvn9sZBLi1p5h3IMFQ grSbeTsWxaIsj7xKGsEwH7IZLGa+CEuxvjZxFW8X3hCa4ihq7LpZHjhHoHpHKdSl EyOFN3UeiEtmxzCcaIDUDs/vpJhaHDm51TChqMHsVEMPCsQT4yyJ0ksibSRpxUnq PmMmXry6j6S9m3U4efpxRfuXH6ifwdm8cGDfr5v+3gHOTJdnCM/tqPY8RBe1tJjx olgk3juXMsXr69gpvGksnGiq+amrq6Qb/vPn/VrhRXfckML/yGPXrLox9sYUer1h 4tBHtetJDdyKZKRD0fN0Mgy0cQMqd1eTiCIndfc5EtXJI6p8PCTA== Received: from phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta03.appoci.oracle.com [138.1.37.129]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 44fn2ug4ae-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 29 Jan 2025 14:19:09 +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 50TDnVaW036174; Wed, 29 Jan 2025 14:19:08 GMT Received: from nam10-mw2-obe.outbound.protection.outlook.com (mail-mw2nam10lp2049.outbound.protection.outlook.com [104.47.55.49]) by phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 44cpd9rjdr-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 29 Jan 2025 14:19:08 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=ursJpx+2DXrzQCcwVCqgGf/T3QiJge52VNIU1wDQAlAUCbT2y63KmuGG1ViTAGILGJf4wV8wJtqWwjpbtYcttKRkS7nML00pUJ5u06lge7+JqfjEzFiKqLzVpV/Fg80zKPCcdk2JDeUbhEYuQ44Sc/KRb8j2dyQrl4gq1DfUdn+ZNai+S16RuymO1zfwZtWd+MwoD2rLej5jeGf2r/I/bxept9/JQet6xPzHHfrGmanN5OfTZS+Jz5AUC5/TFlRItqADVDU+VSqFcxDgPqhr4VbopFtJA5WhVgsCO4h7OUqRXNGrA6Pzjl4d3xGpFjRGh+K0FTIyNX9RXyADNYRvOA== 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=DhDVhrG4q2OUzhhm3JQard37hqB3/aQwKw6c8gLGwsM=; b=L/+bXq1o7EMvKuDR+QgIaSUaKkZEc5QKRLB5RiTseNOOWqRZpsJxSwue42ZKF7WpuKOJ1jPj6WYZnCHqurMV8kAhABVb7UKirZAL5gLbORa+dwmxhp+o1XnInMWgnJ5VtGNA5urHw1Tmfi5RwpDiBo2LS9bw3Qm6AKA742186I6A7DV1EdUNIvW/IsJ9KkaT55xoVqEkPfFfnt+38tfssK3OHtBznz7CGDhWf96xBXTsbNxZJygYxW4XEQwcRYZ0fI01t9e+EXBZDF9kDE1PcfjLodvQ8n+zYhroA7H+Em0mHSb7caWGwiVrKqyHrVEaJmDb02uUW3vVFoi0Z3Xv0w== 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=DhDVhrG4q2OUzhhm3JQard37hqB3/aQwKw6c8gLGwsM=; b=lF+6ONURbEIvOsmOm+pAIZSdDhPZ2KLLkijSUdz/KALEybo5OKKUYrCfejFOLMkIdT5Vjbe8ZW0yNzuBADWl8bT7OYP797cal680bFQCBf/YRQ47QV+pIS/WuFpbmm9rLmKOR6Z94vnATUIgdC0K8umF1y50Ixk/hX94xMNr9Vo= Received: from MN2PR10MB3374.namprd10.prod.outlook.com (2603:10b6:208:12b::29) by PH0PR10MB5753.namprd10.prod.outlook.com (2603:10b6:510:146::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8377.18; Wed, 29 Jan 2025 14:19:04 +0000 Received: from MN2PR10MB3374.namprd10.prod.outlook.com ([fe80::eab5:3c8c:1b35:4348]) by MN2PR10MB3374.namprd10.prod.outlook.com ([fe80::eab5:3c8c:1b35:4348%3]) with mapi id 15.20.8398.014; Wed, 29 Jan 2025 14:19:04 +0000 Date: Wed, 29 Jan 2025 14:19:02 +0000 From: Lorenzo Stoakes To: Vlastimil Babka Cc: Andrew Morton , "Liam R . Howlett" , Jann Horn , linux-mm@kvack.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH 3/5] mm: eliminate adj_start parameter from commit_merge() Message-ID: References: <335ff27920d96c2a45b9724725cd3be2caf987b1.1737929364.git.lorenzo.stoakes@oracle.com> <2e6fac60-3b73-4e7a-a824-21cbe2c326e6@suse.cz> Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <2e6fac60-3b73-4e7a-a824-21cbe2c326e6@suse.cz> X-ClientProxiedBy: LO6P123CA0022.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:313::15) To MN2PR10MB3374.namprd10.prod.outlook.com (2603:10b6:208:12b::29) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: MN2PR10MB3374:EE_|PH0PR10MB5753:EE_ X-MS-Office365-Filtering-Correlation-Id: 4cf043bc-9947-4943-7672-08dd406fe27e X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|1800799024|366016|7053199007; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?Bf4G5T4yJKrelyWSRGFGjBDosmFiHP67QBTIGj7SwH/T+gpewM6lQa6L0WZL?= =?us-ascii?Q?pRLSYGjGYYqLSjTrXK9uBbY0pNzbsxZr5DjqmLPXKLFnB3ffFF8xqH9zxGmc?= =?us-ascii?Q?d1S4MHmu2lKHj/Rwfa/9X7b39wmm/OqXqddjoZ5dg/YqKfCrjrYSnLfM3U+X?= =?us-ascii?Q?LoiglGldlpUuSTXAf4vsl/ToIpct0nvhwUBCZlc7DRnetg10ezNGIrfesoBN?= =?us-ascii?Q?5AIo0qn3r8zemMtw9AVZZlit3bXW2un40cRUcfsmYKmwIsOPtv3DEG1J4SHO?= =?us-ascii?Q?W6cwHhKxQkcU4Oz485G4qQmKVa6B0d2xfz+6Jp7xVmsZHQ81QO5mxHHbf9Vo?= =?us-ascii?Q?TeeYVxKxB6cRSerIfEHgUdnmMI7R35DioR86gg2TnFFlEmw1QEd+OXaKSOk6?= =?us-ascii?Q?dm/zY3xQKo2nNeA9DQySA8+2/7H464uKrn9OR1IIJpQyXtPeV8wylkjhMt1N?= =?us-ascii?Q?hCwzG4nLhp/AJsTRHoABWWaWrMdTGOJwZgawnAOrvwa0fsWuhkSYEPZdssEe?= =?us-ascii?Q?Wo5lpt73f+TCtM1072MB9Ie2L7MDsjFRcj4JEGds7RR0QImSOIc0LPeNCoO0?= =?us-ascii?Q?YW4UFPo+NhLAlZHFKRSumOTxv4neRh2YrQRHnAIIxXrl0XzOo2eaQtXJXSbK?= =?us-ascii?Q?IJM1KlAWEiNmy90NSrs21+CzO9G+oyBGUZS3oaOKl3KfqTBe9z16uFfKnlDu?= =?us-ascii?Q?dvJYrmIDXHljz2IIJNNm+wXtFYVqf10SGREfOrkW6MgXFnZ7gjVU8lsT6EwN?= =?us-ascii?Q?GcK7CgIo6/VK6A9R/Frqa+uWqx5FXWzuAhJP8g/daIBHw0OhX/h1FttkTfFf?= =?us-ascii?Q?lKAhOCdWkmqED+6BCTsOAi1xZl4+SQshfAZ3cyEjP4G3y5adYeAGBcfV/mn6?= =?us-ascii?Q?YNuK4+YSls9mollHCG0d271CCsO3w6K0foK/TInoARmM9/bCkOrBheTocmTr?= =?us-ascii?Q?YpDKaUXOxUr2XJwckbVqjXsR5q3WxjNnp1hA9R1qvSJqAc6Oe628OsqF5q13?= =?us-ascii?Q?K0iGJEZfB3+jr2tJn6EWo3hMdVu1eNwYCC++8wS85f+fQfwQu2dkZVGlZGmt?= =?us-ascii?Q?rXdZuSc/0qrxhaZ9GZ7BMwNxI1+LAVaoMuMVlNZSLBkJyZAUVGph4d12t9AW?= =?us-ascii?Q?tlPX7NAv+WyEVo1Q8v3Jzy1pbczo0wpQTUBCZRcVV3Rty4snEPWCkf/Sk3Oo?= =?us-ascii?Q?TTvi713oxekXbDbJ6FuGUK0E8/WM2fP2KivrYCY5SHZYnGJjLOCWaXbzzK/z?= =?us-ascii?Q?SbIhJEtfRbIu/ykm7BNVPuuR6EtkfuYcHadPq9gTjtIKWw17ceLj7W8nDAiK?= =?us-ascii?Q?LKik+AiV/KtuiUk10LYGflj9mpUW+pSyo5cvFX65wYooGivUtQsiTYv0ZGLT?= =?us-ascii?Q?jqWW7t3L7VlZs2LN1ftlMhCUK3oD?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:MN2PR10MB3374.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(1800799024)(366016)(7053199007);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?Io/MxnzbcUYV1gBX51zQQUkF2h6vUMi/g/R4jqPhm9U9kezI30L1b1ieGvwo?= =?us-ascii?Q?wgDmEpt/TZ3E+QeH6CnAnCdTXW3b+xi3qIZXMYAmKyhHrjJznOn7xzShozNz?= =?us-ascii?Q?Kfi3hWADMlNeBcTB+u7ptg4P/5X1OXtnW+HZnE0HuUkoDu5D69kT4nrnMLDu?= =?us-ascii?Q?qG4CE6qev/AwoFwxAq6zCWskdJVIEXEexVfjVt1F+EJrKOwuj4yGOiPDe+DQ?= =?us-ascii?Q?UHwZwZwaLpXNMtD1jXHGzA6LV+EsRMo2MnLyE7/vqPLmPepmgrTi6S4Yz7XO?= =?us-ascii?Q?Iitwmax65F0e7q0HZR+szpc914unuS70UZhuC8MF+kTwZ+iPln4Vrib1Smub?= =?us-ascii?Q?vcZrJa7OgNPAnWosIHTAGAhdqOFJK5nNBpgRIrpN1LgQsnkF9fXhoIK83bS2?= =?us-ascii?Q?pJITgVaXEAEzUNbwhzWC+6VjrnDMmHPEm5f04tY4YiYRKx19q5ihTOFcJHd3?= =?us-ascii?Q?pyGs0OhrvhABlV8Vnf/ZyxPxM0FdfS0fTYvZ6au/AnCyymBLetR+7CjrU/lf?= =?us-ascii?Q?LykfKA6lGieS4D0qkWbod62cIuFXCuL12eHGjVkoJBFNvbt1ECwST/D+H2NL?= =?us-ascii?Q?hJBO6tqoJF4Ni/suqSRyhzlaq9G4oJocFfAAVQZODX9CsHDOrkv8FNbVVRPG?= =?us-ascii?Q?2TGIkleXpeHNczWlQVlLfWGMOy3DGSWdCR4GEPIvq9M1ogUV7J6qEtmAyENs?= =?us-ascii?Q?vSAxxXL0tkn6BRuUFIxrdcbONlT8xDTH6/KL4/DkHFQ4CtE5gvAA01R7qPWK?= =?us-ascii?Q?ib5zXdYmSNJdZiCx6ubyD8g8/j5vJA8+yQQADz/lUFMSzbaKvDNXTHVw+dJF?= =?us-ascii?Q?pEhHuG2Akgftth5FwFw62DW0fzV/vuQSMaslrSvuKDpekH+UHGAHd/Q8gsXT?= =?us-ascii?Q?hJ4Fl1ByR4cwrQzsVwHaAOGOfMsVhvQZJY7rFygV4LSlZBTNtVje6Nbd0KgE?= =?us-ascii?Q?5iEb2ZIkjOr2kdPSdP0YoRqDE6tnS9j2ZHbBvHyNAK+nXsD4wNHTupf26BXI?= =?us-ascii?Q?t+gDuhasvMTWRtb4unmt7V0F2XrnM4tcnAh5X2uLWUCgZZfVUXBKfPGJou3X?= =?us-ascii?Q?ev4+87TRbRwTO+pTFkI+nEkuj31MdHNTiyS/SCQ0ZsLWO9UtG/NhQ33CBDWF?= =?us-ascii?Q?6BmgVVKuUHzi63GYyPmmdGfOuuicMIdDLEgTJ0CKMcNLoUA1SLEdqIZAKlUT?= =?us-ascii?Q?27LPNnHbJJPIFshFSJa71Znx9f8JP8Z2RKn/1uYmy93NYE6surG9pwv5Bko2?= =?us-ascii?Q?UqOvwFiV+JhG2JVp1JoJW19vmmPaXd6PklpsUoQ7gA2+ALsGHECinw2lJ34s?= =?us-ascii?Q?JWFVW+HgOidjySMneUQzbQlV6IirrEjHjgWAUTQtWJxSQOTph8nccpGpMQ2l?= =?us-ascii?Q?BIW6RPEQdQkX70NSvUJeLOqqJPuU/BmV8Qxct3piVdUDoba2n1HC+jjyRKr6?= =?us-ascii?Q?AxxtHSWlWzNX/Po7FurhPs2Qqt4I/IoFyUV6efsqPF7RMHIh9/KpFUNdZ0OH?= =?us-ascii?Q?p0Z5uGJgUqHkn4J4ooAWG9Wtcw06BQd4X9XJLxTcQYGX40ZpKZAdaVwwZL4c?= =?us-ascii?Q?AtoIayiYxyWTQP6FQ2CkHc10U+qlVuJAnbh7VyyEGkiL/GvZrTP2tx4I7LSD?= =?us-ascii?Q?Ag=3D=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: rcym9S4RIGo3C1aQ61CG3Ph7GewEDRHM0cTxND57MEYygp4Mt9hg5NQyFeT6Egf7pLOXjFgEfCGbKkmPZzLmYpR/PTXVvmiNV5101grFqDcICyeTxA8cIUWKFFm98aN4LsO5lFWNRASisTFK+w+QRa6kXJqCJOwp6jkU+K3ciIX8gKjQTnYN1AeoJrhRrJbYmJBG0/CXh79iyFk346wG9iwtZ3N4zoILM3zUmIVfjB5Lq0jhVegIpUbCVsX+4drjls3U1yQPita1aqyFDI4Njvhg+g6AhYEGlC1GwSqTr1w/YkOndiJvcQCN5IGs/OyzqAOCobH2sris1g+VaF5XhgWjKrwj4q5SA3uXCWJ1J70L+GK31x9SuFptXo+6aWCZ+jdLp021NYXXUZrl0NRtPwhTWNpotbB0tynWA919LiEmlsR8EVvFzvJLYPeVRMP11MkbN1OrQC9FjWTuMoxUYyROyDLLoOTGxDf46CruVTsz+z7vUo9lkdDo5X18L4sTIhvbSmGcE0Mh4j6B9Oop0SYQ+Dylo7zxzLMrHUC1gZbE8j3fc0KIcFy0JSVIMjUjgfOUoKr2kgKsp4A5f++E+JhXe02tlLfZLk+zomR0PyU= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 4cf043bc-9947-4943-7672-08dd406fe27e X-MS-Exchange-CrossTenant-AuthSource: MN2PR10MB3374.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 Jan 2025 14:19:04.5787 (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: sQmzUHzIRdbBSx/vAYNu2v+YSNq+KUNLBdXegAwgYL4eh9B0DoW5H8ODoDUMzgJMY9tWkfzxzlWdWBuaFwrBCrLbPpOjwZ4KjNOHqL6D610= X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR10MB5753 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1057,Hydra:6.0.680,FMLib:17.12.68.34 definitions=2025-01-29_02,2025-01-29_01,2024-11-22_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 spamscore=0 bulkscore=0 suspectscore=0 mlxlogscore=999 phishscore=0 adultscore=0 mlxscore=0 malwarescore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2411120000 definitions=main-2501290116 X-Proofpoint-ORIG-GUID: imQeRvFSBUB5JctD3-bi_Epbt-rPqhJi X-Proofpoint-GUID: imQeRvFSBUB5JctD3-bi_Epbt-rPqhJi X-Stat-Signature: pqj9mn44hy1opqb4hw7tyhzqo86j35ab X-Rspam-User: X-Rspamd-Queue-Id: 338E512000B X-Rspamd-Server: rspam03 X-HE-Tag: 1738160351-938927 X-HE-Meta: U2FsdGVkX1+p6rWLA9vdaEd1wgpjUAfF0qV0bEakzssfI67EJ6MGieoutZor60Z1Ieh1cqtAsH8ShqmVjSLVaYhpCPqOynooUjkJpoXxTnSo+DJkJPyKp91vd13wLGsDZ0ktsLzRj6W7EkhrbbcIEkxSKuwR9OtC7NABiCEqV12ANgPK74s09lfPA+gbmXaJVTjXAHtJ2YX89PxeGfGtf2Z4Yn4sm/Ay+piRxX8VTgRsVwJeM1pC1t2AGM74nafdiFwRRR+1MkBnf43EHGBuOkqg06wFqihSVrpfPkpuDxz6EhcKLGNSFKaC3dpVArSJAWjJZI0MHZDc+hCl168pJtR5yh64nfAri5QrRqpyy6+J7by4amSq/2NCRgfCJvYW+pKkMnzMC+/UKU0YPdhh6zGXmqV24beyQCxHKOIsVy9UqCZe9Z/RPrt2qVikYtJ63pGr1OiE0OVQNG3/gs41He/I5ZM5q63QxErYkn35AS2EMFjwJXraiHHoM1ULwGwEj3Sdn//9mjgp0GyrbkTMV71zV7NqBcecm06ffv6HxgB0icEdlNAu1NtQ2YPG/KpWGNtPwjXM4zHHwrsynUESFtrCaKU2mCwONU3ATo5y7qGLf8XVsXQqoCqgXdeoOLq1e5PUqS3WX5yKTyf3X3KKcpGiMwm8IKl/70+toupj/733ViqiwW5O7kAtM429a0hhLbC0vIWj6MkiXXyNT+WwRx2cjPvWNk/3f7QEH+CILA6TZ1lMFm91lqU5pvyE+ICcjaats7CK7QuzXogPchzFwIhDf2EgxnCyda1XEYTlS9ywmTfYR9LWWF8/0pXV120s7YM+oQlulyeSFX4E38lniiNjpJtZ5w2zagDnO/na3EgWBYScRD0aVCdgeLsyWUPghrsYxc3/P5D4xYE+8E7vJTc3qePlSPHkE/asgRrhutNEwPUbGdC/G5qkLUsAfmI5k+VbJhxtYC/+Mp/f9kL 7aoykiW0 ie0bhEe1WiZpBhL2KZxUHlmPrYpFE6xphZhtfEQe6Brbz9zQP8irjh3ZSBfm3InjYpymZAbVZ4bURtg7n4ROwQVnQqyITgpmYvGXjqH8Xk7wH4MIxqTlwQlazfgkmeKi6wPOGq5QrgZZus5PX4aN3YXDZGGar7gQCZ+43WMk9eAaudyPu9t3sqt302beXr2SMKvJM5LFxZtRb9HYRnfJjX08Ns4jPGgURkYUrmqv/VCKYTafLpmpk29QfCKiI0+Y5Wf5jVtz11Xhy5Z99s3f0BIXDCKI7kKAN5BwbaMvXflzEleTuYRsxM6wLNUCwstAnseBhMYrfRdFO5Tdg+ShJ8nRMENxKW3BdWg0yvnpxSwZXcXtzjr3Sr+vB09vYk42KFVCl68T0FZFFQSFwoYI5i4HfRMCR1hm/d2PFQX/5+j6uW/j8UDcSeSsJcuDlgeNOcMEj7OOxmnZ85PUtu1elTI+uOsYVp6tk1jgg4rabfsHe1cX+ThMyycXVE0JLhmK4AcfdGum2YEX0D2Fs9NrjzbiYYPwDXg1ybd4tycBkgPAsDObtbqsz53DIruXVCcRpzLXx2mIZpznMw3r7xNCl6Kd+LNa206C7pxcaGrq+H+R5X8g= X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: On Wed, Jan 29, 2025 at 03:13:06PM +0100, Vlastimil Babka wrote: > On 1/27/25 16:50, Lorenzo Stoakes wrote: > > Introduce internal __VMG_FLAG_ADJUST_MIDDLE_START and > > __VMG_FLAG_ADJUST_NEXT_START merge flags, enabling us to indicate to > > commit_merge() that we are performing a merge which either spans only part > > of vmg->middle, or part of vmg->next respectively. > > > > In the former instance, we change the start of vmg->middle to match the > > attributes of vmg->prev, without spanning all of vmg->middle. > > > > This implies that vmg->prev->vm_end and vmg->middle->vm_start are both > > increased to form the new merged VMA (vmg->prev) and the new subsequent VMA > > (vmg->middle). > > > > In the latter case, we change the end of vmg->middle to match the > > attributes of vmg->next, without spanning all of vmg->next. > > > > This implies that vmg->middle->vm_end and vmg->next->vm_start are both > > decreased to form the new merged VMA (vmg->next) and the new prior VMA > > (vmg->middle). > > > > Since we now have a stable set of prev, middle, next VMAs threaded through > > vmg and with these flags set know what is happening, we can perform > > the calculation in commit_merge() instead. > > > > This allows us to drop the confusing adj_start parameter and instead pass > > semantic information to commit_merge(). > > > > In the latter case the -(middle->vm_end - start) calculation becomes > > -(middle->vm-end - vmg->end), however this is correct as vmg->end is set to > > the start parameter. > > > > This is because in this case (rather confusingly), we manipulate > > vmg->middle, but ultimately return vmg->next, whose range will be correctly > > specified. At this point vmg->start, end is the new range for the prior VMA > > rather than the merged one. > > > > This patch has no change in functional behaviour. > > > > Signed-off-by: Lorenzo Stoakes > > Reviewed-by: Vlastimil Babka Thanks! > > > --- > > mm/vma.c | 53 ++++++++++++++++++++++++++++++++--------------------- > > mm/vma.h | 14 ++++++++++++-- > > 2 files changed, 44 insertions(+), 23 deletions(-) > > > > diff --git a/mm/vma.c b/mm/vma.c > > index 955c5ebd5739..e78d65de734b 100644 > > --- a/mm/vma.c > > +++ b/mm/vma.c > > @@ -633,29 +633,45 @@ void validate_mm(struct mm_struct *mm) > > * > > * On success, returns the merged VMA. Otherwise returns NULL. > > */ > > -static struct vm_area_struct *commit_merge(struct vma_merge_struct *vmg, > > - long adj_start) > > +static struct vm_area_struct *commit_merge(struct vma_merge_struct *vmg) > > { > > - struct vma_prepare vp; > > struct vm_area_struct *remove = NULL; > > struct vm_area_struct *remove2 = NULL; > > + unsigned long flags = vmg->merge_flags; > > + struct vma_prepare vp; > > struct vm_area_struct *adjust = NULL; > > + long adj_start; > > + bool merge_target; > > + > > /* > > - * In all cases but that of merge right, shrink next, we write > > - * vmg->target to the maple tree and return this as the merged VMA. > > + * If modifying an existing VMA and we don't remove vmg->middle, then we > > + * shrink the adjacent VMA. > > */ > > - bool merge_target = adj_start >= 0; > > + if (flags & __VMG_FLAG_ADJUST_MIDDLE_START) { > > + adjust = vmg->middle; > > + /* The POSITIVE value by which we offset vmg->middle->vm_start. */ > > + adj_start = vmg->end - vmg->middle->vm_start; > > + merge_target = true; > > + } else if (flags & __VMG_FLAG_ADJUST_NEXT_START) { > > + adjust = vmg->next; > > + /* The NEGATIVE value by which we offset vmg->next->vm_start. */ > > + adj_start = -(vmg->middle->vm_end - vmg->end); > > Wouldn't it make more sense to use vmg->next->vm_start here, which AFAIU is > the same value as vmg->middle->vm_end, but perhaps a bit more obvious > considering the flag and comment says we're adjusting vmg->next->vm_start. > (somewhat less important if this code is temporary) Maybe, but the code is temporary. > > > + /* > > + * In all cases but this - merge right, shrink next - we write > > + * vmg->target to the maple tree and return this as the merged VMA. > > + */ > > + merge_target = false; > > That comment reads like it would make sense to init merge_target as true and > only here change it to false. I'd rather explicitly assign the value in each branch though just so you don't have to figure out there's not an assignment so default value is used. But also... maybe, but the code is temporary ;) > > > + } else { > > + adjust = NULL; > > + adj_start = 0; > > + merge_target = true; > > + } > > I guess all these could be initial assignments and we don't need the else > branch at all. Again, I feel it's simpler to have 3 branches where values are set according to branch conditions so you don't have to figure out which value is set to which by cross-referencing default values and assignments. But again I also will say (you know what's coming...) maybe, but the code is temporary ;) > > > - if (vmg->merge_flags & __VMG_FLAG_REMOVE_MIDDLE) > > + if (flags & __VMG_FLAG_REMOVE_MIDDLE) > > remove = vmg->middle; > > if (vmg->merge_flags & __VMG_FLAG_REMOVE_NEXT) > > remove2 = vmg->next; > > > > - if (adj_start > 0) > > - adjust = vmg->middle; > > - else if (adj_start < 0) > > - adjust = vmg->next; > > - > > init_multi_vma_prep(&vp, vmg->target, adjust, remove, remove2); > > > > VM_WARN_ON(vp.anon_vma && adjust && adjust->anon_vma && > > @@ -739,7 +755,6 @@ static __must_check struct vm_area_struct *vma_merge_existing_range( > > bool left_side = middle && start == middle->vm_start; > > bool right_side = middle && end == middle->vm_end; > > int err = 0; > > - long adj_start = 0; > > bool merge_will_delete_middle, merge_will_delete_next; > > bool merge_left, merge_right, merge_both; > > > > @@ -860,11 +875,8 @@ static __must_check struct vm_area_struct *vma_merge_existing_range( > > vmg->start = prev->vm_start; > > vmg->pgoff = prev->vm_pgoff; > > > > - /* > > - * We both expand prev and shrink middle. > > - */ > > if (!merge_will_delete_middle) > > - adj_start = vmg->end - middle->vm_start; > > + vmg->merge_flags |= __VMG_FLAG_ADJUST_MIDDLE_START; > > > > err = dup_anon_vma(prev, middle, &anon_dup); > > } else { /* merge_right */ > > @@ -893,12 +905,11 @@ static __must_check struct vm_area_struct *vma_merge_existing_range( > > * IMPORTANT: This is the ONLY case where the final > > * merged VMA is NOT vmg->target, but rather vmg->next. > > */ > > + vmg->merge_flags |= __VMG_FLAG_ADJUST_NEXT_START; > > vmg->target = middle; > > vmg->start = middle->vm_start; > > vmg->end = start; > > vmg->pgoff = middle->vm_pgoff; > > - > > - adj_start = -(middle->vm_end - start); > > } > > > > err = dup_anon_vma(next, middle, &anon_dup); > > @@ -912,7 +923,7 @@ static __must_check struct vm_area_struct *vma_merge_existing_range( > > if (merge_will_delete_next) > > vmg->merge_flags |= __VMG_FLAG_REMOVE_NEXT; > > > > - res = commit_merge(vmg, adj_start); > > + res = commit_merge(vmg); > > if (!res) { > > if (anon_dup) > > unlink_anon_vmas(anon_dup); > > @@ -1087,7 +1098,7 @@ int vma_expand(struct vma_merge_struct *vmg) > > if (remove_next) > > vmg->merge_flags |= __VMG_FLAG_REMOVE_NEXT; > > > > - if (!commit_merge(vmg, 0)) > > + if (!commit_merge(vmg)) > > goto nomem; > > > > return 0; > > diff --git a/mm/vma.h b/mm/vma.h > > index ffbfefb9a83d..ddf567359880 100644 > > --- a/mm/vma.h > > +++ b/mm/vma.h > > @@ -67,16 +67,26 @@ enum vma_merge_flags { > > * at the gap. > > */ > > VMG_FLAG_JUST_EXPAND = 1 << 0, > > + /* > > + * Internal flag indicating the merge increases vmg->middle->vm_start > > + * (and thereby, vmg->prev->vm_end). > > + */ > > + __VMG_FLAG_ADJUST_MIDDLE_START = 1 << 1, > > + /* > > + * Internal flag indicating the merge decreases vmg->next->vm_start > > + * (and thereby, vmg->middle->vm_end). > > + */ > > + __VMG_FLAG_ADJUST_NEXT_START = 1 << 2, > > /* > > * Internal flag used during the merge operation to indicate we will > > * remove vmg->middle. > > */ > > - __VMG_FLAG_REMOVE_MIDDLE = 1 << 1, > > + __VMG_FLAG_REMOVE_MIDDLE = 1 << 3, > > /* > > * Internal flag used during the merge operationr to indicate we will > > * remove vmg->next. > > */ > > - __VMG_FLAG_REMOVE_NEXT = 1 << 2, > > + __VMG_FLAG_REMOVE_NEXT = 1 << 4, > > }; > > > > /* >