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 F0B02D12D79 for ; Mon, 11 Nov 2024 06:42:57 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 7DBE96B0085; Mon, 11 Nov 2024 01:42:57 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 78BBB6B0088; Mon, 11 Nov 2024 01:42:57 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 5B69B6B0089; Mon, 11 Nov 2024 01:42:57 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0010.hostedemail.com [216.40.44.10]) by kanga.kvack.org (Postfix) with ESMTP id 34CF06B0085 for ; Mon, 11 Nov 2024 01:42:57 -0500 (EST) Received: from smtpin05.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay07.hostedemail.com (Postfix) with ESMTP id D3F3A1603A4 for ; Mon, 11 Nov 2024 06:42:56 +0000 (UTC) X-FDA: 82772870628.05.31752E5 Received: from mx0a-00069f02.pphosted.com (mx0a-00069f02.pphosted.com [205.220.165.32]) by imf27.hostedemail.com (Postfix) with ESMTP id 716F840009 for ; Mon, 11 Nov 2024 06:42:12 +0000 (UTC) Authentication-Results: imf27.hostedemail.com; dkim=pass header.d=oracle.com header.s=corp-2023-11-20 header.b=oN2etanm; dkim=pass header.d=oracle.onmicrosoft.com header.s=selector2-oracle-onmicrosoft-com header.b=CSxODoTr; arc=pass ("microsoft.com:s=arcselector10001:i=1"); dmarc=pass (policy=reject) header.from=oracle.com; spf=pass (imf27.hostedemail.com: domain of lorenzo.stoakes@oracle.com designates 205.220.165.32 as permitted sender) smtp.mailfrom=lorenzo.stoakes@oracle.com ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1731307199; 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=zJxPSWw8feVnbf5NEx+o6LdVvbKDBKQgZG+xbvlwaF4=; b=rTOP89LifxtZi7wIbC7J0IVsjAUgq8IKfu0hcDhMQbDfGlgZW0wU9HM+P7Bpl5lQU1K0ij WVLyvVhW39+9WJyelhsbjMMMeApaLt7a7NPIuozwpQUDT2oRb07AhMRo5cn5eNOouO27/5 pYHT1s39clWaloywYm42eKHi0Q0EZRo= ARC-Authentication-Results: i=2; imf27.hostedemail.com; dkim=pass header.d=oracle.com header.s=corp-2023-11-20 header.b=oN2etanm; dkim=pass header.d=oracle.onmicrosoft.com header.s=selector2-oracle-onmicrosoft-com header.b=CSxODoTr; arc=pass ("microsoft.com:s=arcselector10001:i=1"); dmarc=pass (policy=reject) header.from=oracle.com; spf=pass (imf27.hostedemail.com: domain of lorenzo.stoakes@oracle.com designates 205.220.165.32 as permitted sender) smtp.mailfrom=lorenzo.stoakes@oracle.com ARC-Seal: i=2; s=arc-20220608; d=hostedemail.com; t=1731307199; a=rsa-sha256; cv=pass; b=bHYtdxlGmmPpfHAr/pmztJqI58sqiuL7im29ObfbcvFhQIwdxNT/2tlu+5HODdU7ZiXZGf KFn9+urPei33Ig14nMQrsFeS6HHFCm6/rwSo8F2VrB+LJnicqd9XL7e4Legml4PmYMcq/q W+YMipGGcSrzBvFEtPb1UcDlu6MxzdU= Received: from pps.filterd (m0246627.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 4AANJhgC031198; Mon, 11 Nov 2024 06:42:50 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=zJxPSWw8feVnbf5NEx +o6LdVvbKDBKQgZG+xbvlwaF4=; b=oN2etanmvmBw/f+cdncdaYtVUrBoeCMrUn qIEWk3s0ZVjRd9UCVoFp1FogLFOj6hotBh1aI2Irm9iL906JIxxvEmkAvuh0xLeG K26+jILNAPO6B8D8p4WxnrleP+wilm25mnn+KmYzCsCXsAs1h88FfSCU3I08U65H QTNXli3f1CaFp0qHE5cx2Rw+yesaumxauMrJpUYRPQGk7mizok1iDx2z7/kY0wCp 3F6VoJKQRbyAkedSbfFgOVHDKdAH1scRxsqMUzbkNBDocB7d+JovkjJaHi0UP+OL daN45pOhIMs39c99g8dbf3jC3HopV62tzNCo/VAAaiCx+f8/7XKw== Received: from iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta02.appoci.oracle.com [147.154.18.20]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 42t0hn9td2-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 11 Nov 2024 06:42:49 +0000 (GMT) Received: from pps.filterd (iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (8.18.1.2/8.18.1.2) with ESMTP id 4AB6TidE034301; Mon, 11 Nov 2024 06:42:48 GMT Received: from nam10-bn7-obe.outbound.protection.outlook.com (mail-bn7nam10lp2049.outbound.protection.outlook.com [104.47.70.49]) by iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 42sx66pmqj-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 11 Nov 2024 06:42:48 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=loGCJ0ByDizVjpxZy2oBQXgFjKBERTFlEnK/1RubSpOMK00Z3UtVxrPUaud58ynxuPSP3BbGTXrEKMZ86ps6pr94G/1vDy2EcpJx5O6i75WxU1FRg2SeE3tHAhJDJRW+eYDvpebYTYNQfhp9Qfd4tLYYgKdtAoAGhdd6WSDdjjokGCBZE390fwwvEIn7/bDKvtHc9SPA54bO3i9TjAAD+9RUezHasez465B7nOPfqhw4DQZI+Cve6NbPdJ6eehtUyE5mZwftvVydE3Sfgklj58Y9K2ZSbN2i8Pxdm4ZbIyJLljaoITP1fC5wPqRAmzR6aek2OuvU6ytoXdH9wrIEPQ== 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=zJxPSWw8feVnbf5NEx+o6LdVvbKDBKQgZG+xbvlwaF4=; b=xm+PHLgp+1M6txqTfC3/0FtjaiNN5fH4GwC9b4IXvY78YW3QaBSSy4OY248OcqDzq56bXdhFn4GARB38YfFIXfwH1hMxcQrzYADbKPZNdYXRrQVTYwfeclzBfje7DsrWr1PCYfgN7Om8ZJbPOjnaZsrw8eUqf5XF7P8JpCNhs4ZTFvIWm/dbN1pGm+xBuGoEVJnOL2PHc7rmKV294yUHyu6gMtemrfRPgiCIUcXmKYKe6xbhVweRMoqHsQDHLjyAc5iBO2TkM9sQWbWny5N5XDlv+J52f2XujeKKhs7GXvtCOaT6H5zets01Ohbz5Yyoz+uhp2HD0Io/1NWTi2Y3Fw== 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=zJxPSWw8feVnbf5NEx+o6LdVvbKDBKQgZG+xbvlwaF4=; b=CSxODoTrrv/vlFRGHt17ieMhryI+A83mILVvW8I1SlMwp3UNZoEejbqwWS+k6CKcb/dvfIEmPRe21hzIsOF558LLNE8CGm7yhEMrwPgxvChKUokkRdgiWIZgZXEXMfsqLERCoBveThbQFAEbCaeKJs+tAfzRrdBaZ7+kP3MEn0g= Received: from BYAPR10MB3366.namprd10.prod.outlook.com (2603:10b6:a03:14f::25) by DS7PR10MB5199.namprd10.prod.outlook.com (2603:10b6:5:3aa::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8137.28; Mon, 11 Nov 2024 06:42:46 +0000 Received: from BYAPR10MB3366.namprd10.prod.outlook.com ([fe80::baf2:dff1:d471:1c9]) by BYAPR10MB3366.namprd10.prod.outlook.com ([fe80::baf2:dff1:d471:1c9%7]) with mapi id 15.20.8137.027; Mon, 11 Nov 2024 06:42:46 +0000 Date: Mon, 11 Nov 2024 06:42:38 +0000 From: Lorenzo Stoakes To: Wei Yang Cc: akpm@linux-foundation.org, linux-mm@kvack.org, "Liam R . Howlett" , Vlastimil Babka , Jann Horn Subject: Re: [PATCH] mm/vma: only set vmg->next when removal is necessary Message-ID: <728b7906-a08c-40a9-adbc-95d7068338ea@lucifer.local> References: <20241111012340.28906-1-richard.weiyang@gmail.com> Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20241111012340.28906-1-richard.weiyang@gmail.com> X-ClientProxiedBy: LO2P265CA0352.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:d::28) To BYAPR10MB3366.namprd10.prod.outlook.com (2603:10b6:a03:14f::25) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BYAPR10MB3366:EE_|DS7PR10MB5199:EE_ X-MS-Office365-Filtering-Correlation-Id: a26e1091-0e34-41f1-bd21-08dd021c0d3d X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|366016|376014; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?6BDv7IRexv46SZBpT+DhLyqyrJlpWdEP0u9iEGXW+jkMCZ0Ors92NxKjejgy?= =?us-ascii?Q?Ubo/1/Ya+kA5NsT3JpZ2rudnQoaUJyfxuzEMcE2a9qvuMlUvmLmgYniSylk0?= =?us-ascii?Q?5YkhFA7/tx0Y3eHSP86INOpph+21okdXFoA4hLr0XKRj2FHC3yMFsdw3TcRd?= =?us-ascii?Q?hae8HnCVuiKfOrMPVNkqn+2Ff+i+CBjvNy4gA+VxKyiDIWDpRY9zmItsGWw9?= =?us-ascii?Q?lfNATVsaLpkkP+5bihL2aITIOdpc7HkBvg0cgNgGQMziYs7SJY2O6Zkpi0/P?= =?us-ascii?Q?zGDfcbtkP6ulX80UHWaRx4HL7gVpKts9XHbdCTGcGESvit9J4XD7iYBf1Eeh?= =?us-ascii?Q?+IoHtfJsQMsABA7iyUquW2xDcQZ/q7tnurAbCMTvv+QzT/LtnzeEFm7EtmBc?= =?us-ascii?Q?PT4Vbr1n7HSXpmR8k+/wzdAe/tLHdpHxBOz4hh2A4jvN/kpqoW4yjenSsO0s?= =?us-ascii?Q?vYKDIXPHTiAVu8Lz0VmPPwm6auq3z38mcrFpqBd47iwgGLyEhQJ1VV90vYzs?= =?us-ascii?Q?AtlxO9AsTS0KmyhNOz9sUsGrFff6MjzPHoGN5oOTYIRhZnnXedHmygEVgl+B?= =?us-ascii?Q?7aokS5iS3OyJPY628Ez41ql64ux1ASzf+FCVh/ejm008a0j2kxVyKoXyN0IS?= =?us-ascii?Q?+M+GsqFg3NQzL3MubCJU5aik42haebytO8YGmPizWiwIYw1iu37ysCK1QLc4?= =?us-ascii?Q?+fa9e1a2tj4gj8ydujXvkijh9orqX6vACqKsYwFXR7td0b344qGiI6aQVc0M?= =?us-ascii?Q?iuQvwRu1WoXyvnI6YCYZ9jSHJkzQ7nFXY2gl7iK05o/DG7nt6Eqv43E7/V/T?= =?us-ascii?Q?Vk2KD31LgcIfWj9Ra49wqbdJibysxehua2qPGy6RxX3P7ZPNsBcMNdhdm9v+?= =?us-ascii?Q?gmllCmq5TDJVAoF/FsDwBPTsksVW6Fdp0CooAak3aQK6ga1qUxR44NqSIhfv?= =?us-ascii?Q?N04CDLUn8kSFROVr3faW0LkPKyM3aBmaY4E4KIYz6vIRzaCOIGazg6aXAxsU?= =?us-ascii?Q?OFLS4/ObXalYVJTf98F8KtleM6wyn4HEsqU+WA/EQ7IfqZRAi7ulfNB2ymye?= =?us-ascii?Q?eSI9IGkT+7XYXMS7CP9knMv03WoRXx7x01KOQAXjYHa92J+b0vIhYXgqnuSC?= =?us-ascii?Q?M1yfm6iqP38wvY07MsECxVllyFaAcheyUfnL7p2S2Q00yIlCn+5flkaB+Mp0?= =?us-ascii?Q?UcSzPUOk9XdPrIShI28egntYAKDFSQucrs26/3MGC85yUgjrvLb8SmndF3RZ?= =?us-ascii?Q?uZqN3XwYY6XQ5un1SslEa/ACdfcLKrmWBF83RXryN6cO4x+cI9uyEPqoY6iI?= =?us-ascii?Q?1xkBv+omu+rLdw85VTx3W0bB?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BYAPR10MB3366.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(366016)(376014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?c/QRdEAym2PF8TDpkA3DP1sNssYYrx7qdDFGpTLN9/rL1O8uO6qE9RkYr7kR?= =?us-ascii?Q?w3XuHfhDR7lRDwVrCGnRfk3AydjKyFWZGfLgTEK3GPd+MIzQgXWRpRmdWdwR?= =?us-ascii?Q?kXSANPHvCaOjorzRfXdkuqJAnDOmGhKHAWSzkRvg/pYVGb0hRNEVu9gcBcUV?= =?us-ascii?Q?+tgI31TVbUIzo+KUF7widRKqA80o5A0eCGktMQSgyAJfHbRXKA/Xnwyibq1H?= =?us-ascii?Q?llbovMq/rnOYbvySqibVW8pthFNjVY4fiGPr6pncxU7TS1FhEnY8Wx3CsfKQ?= =?us-ascii?Q?urQNmxAy+vsuMTmystXepKPyVAG/BQIA/cO/X79KqJtyOPTzpy93ibfj2yTd?= =?us-ascii?Q?yZjudRGAc7Z7GoY49GoGFWl70b1ZzJDZtyBFpM0cy6otNpKXYYPVuflGWxxl?= =?us-ascii?Q?00LXBS/41uvPdmKbFp6O3f+kjaG2CMg149GpcJVQSbiS4KyEuX58DdUNYEoM?= =?us-ascii?Q?Wd7bpZjwMt38iWVBhSAO/VWGwYmgQrNmUdHiylap535HkdFwV3hc8RfEbOxb?= =?us-ascii?Q?HM0ftFekK+P666DGfip18Tj9JRb73scsNqxA7FnfYPBiBzQO1UHVH0r/5b83?= =?us-ascii?Q?9l5T3yPmZsu2UvakzfNo/4WLGHJ0t0x000CiwvEHN6BQG6kH4dawdsQpg9q4?= =?us-ascii?Q?D1+t1QQs4kiCTmQ3Gyh26LO0t/1ZCiN6VGoSO0+7BDH/gaaM83ge5SPoBZTT?= =?us-ascii?Q?2FKD2FjkwqQ2y5yRroRQ+eWrraWZgEi85Rkl+iiN9MAovJBBn0+LbnPydKUL?= =?us-ascii?Q?yKPTjL/60qFhC/Q17CabHlpFuJXW1wqRELztKyag3E0ch7m+lfbdnTN1+x8F?= =?us-ascii?Q?pHeb1EVdBXcoub+Rxn4L6KxAHVeYE5bUDbY+xxqYxa7jI5peRc9+zpuUyRjz?= =?us-ascii?Q?EbknzabHwZMlY0p4I3WirnztKjZg3WHVauK1dnJi0dE6rs5lPjuT3otQmIoO?= =?us-ascii?Q?lECE8UDbM/CkXA9IEdITbbUG7h5rIXr4jhrVQWgt5kE0c2qYN/A8BiFctUeR?= =?us-ascii?Q?Z8YhT1+b04ngAKA0kROL4j+quW4CfxXKH6pPElUVii2/8X6ZR8J3Z47Gp/zv?= =?us-ascii?Q?Gzm5xfs4OyfgsdsvZifp50j0HOla/3s5tfW5RheoG9K1CeOmXcymWm/+mlXb?= =?us-ascii?Q?4C7iA7ncKBlIx3smm4T8IfCoc7nbckLY7NxbGrpg5mc+mq+1kKOLJu9Oat4Q?= =?us-ascii?Q?gQVqrNGc/ehobGM6so5LzABLXarytnFAerqzImE6XGePQAMwGsZW9TD+sGnQ?= =?us-ascii?Q?kzdaqRuktgHdRLMcyxP1SC+XSxRIKoOEQm6s+u0f1VfVoLNcTeS+hC236klJ?= =?us-ascii?Q?MBBSXEzi/DWWmgOsPKH8Cj4zI6cpC061eSCeZqFGO+qsSJhDJg6NRS/nM7f8?= =?us-ascii?Q?nh2Ie+e+sWRMhi7Hey3DlKUewT6mQ67mYzie0WIeGsmM/ccp2O8rVIG67qHt?= =?us-ascii?Q?/syITJR0nWMelYV8XZKYVjRoC0kRZDze7GGS+cEZTF4dL89v4C2cbqlyapYi?= =?us-ascii?Q?zmn+9HR7khqhxGvN9HrY7Xtq1f3nuLFyEILmazMMUcrD2RQzdZIr1wMKY1ta?= =?us-ascii?Q?CSQ3Ufg1f8Y1jbVAT+XE/HlKhMsHRYAyQAlai/i6e6/5BbwCNgGTo2cr3Ktj?= =?us-ascii?Q?lw=3D=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: IBrLq6dFeHAf+gVYgPXrKLh57VfgaqPoYBA8ebCWnrYuOuECUwJlEKHEg9tuefLDpbJZHiKYZP8CpEQWBDVfgozfNpLveMXYr8Yz7HEF8W9A2KQog3lUR92PwHyBRrglGMn+hWy/xfxjuKd+LlVSq/ISs35WFx1uAVffUxQ8f9Gk243Xr2tFyt4WsKDWjuIJh1O5GInn+Xo9wjQMHeAUFtDwS6qOOPGvijaPXmRFCgst/CLHMEjt+GIdmKkZ+WrbPBLkh1SgGfbX6liD2TtZUb6eMAoqp4s1v5LO4QaXWfr7mrIRSZoQvNNeq7Xnwl76oCApA+YeQRZIVPjA/q9uZPjVGrVPN/fqUAmCIkurS1xWrwj1wTLFTKuIUiWDKM2poYnupIM3sWzCJwumKiU1fZNqX/dpVE4acRFne7l6Gkj/STbtknQ2MjXU3GRwS8VUjtD8wN6Wni+X4Vc+23sYGsaEgp7QMtJy51bj8Odt5X3EDu4MWP9OKQMTWR6CBGZK4+jFi69YEqkVvX5car+HZo9bMjPftHQazsVQLVNrtttqdigbLFEiB3nib3iHJNxE54xbXVCXbf3340dErcaJj1ayKMLDKImCBBcdHpqkWDY= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: a26e1091-0e34-41f1-bd21-08dd021c0d3d X-MS-Exchange-CrossTenant-AuthSource: BYAPR10MB3366.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 Nov 2024 06:42:46.2919 (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: Qn3bzkvXTMbEFCdhqaYXWdf5MUHM+KZakN8m5pp56gl76ZBz45FI1wfUkC4JO13zJx1eH3yOED8PWOpSdlRvaD7qnXQMWIiP5+5uq3E5cfI= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS7PR10MB5199 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1057,Hydra:6.0.680,FMLib:17.12.62.30 definitions=2024-11-11_05,2024-11-08_01,2024-09-30_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 mlxlogscore=999 malwarescore=0 adultscore=0 phishscore=0 bulkscore=0 suspectscore=0 spamscore=0 mlxscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2409260000 definitions=main-2411110055 X-Proofpoint-GUID: xgxgFBxaB5GREX8cwwbAywdCXF3tBKju X-Proofpoint-ORIG-GUID: xgxgFBxaB5GREX8cwwbAywdCXF3tBKju X-Rspamd-Server: rspam04 X-Rspamd-Queue-Id: 716F840009 X-Stat-Signature: 9k4bfs7jq5j5zpnwupjw9czp1d8txded X-Rspam-User: X-HE-Tag: 1731307332-910480 X-HE-Meta: U2FsdGVkX18+qdvjsOtS4IOGQfzEqvRXcqe1kDCfpLREVjDs//lDYTLpewpI8CyZ4irAsnN9ECRQHUSRBQN9rUFud3O/yzkuZzIzoq1oRl1azDdZAMG/x5HX4EpuPR1k+o567pExNSMqe8K5Z08UdZlqsI+Wd9Et9H1UXpnVIm0Daogym/BXi3akWBwrhkayTron0lB+tifyYbOf3/TwNadfXZxlRhy3jnNRX2wcg+eUduZo1+GZsw+7FF0+z8cctxwUJVUhLtSPNwhSi8UNLFdRg5tTLAk4Kzvfv9CEeetIMK17giqZg68mzJDCKe9ACuWP4bQw9IHLoPv88vG4xLZhS93DDdgiXfaMsaciAiefGBCvUGo3A3qi2Gad/9qAo++i9XJNJVFyB4yd/1IR6OO2aq7wc3o4FaDh1zvpfErwCE9wxw6rlNe+wKA7sdhTDGFwfzgXd1dUvst1USuOaXPTK3nE7ToXaoGyHnplVqO2hkjQhwOvSzINMkdzAjx7tbzHSCAbM82UKfJa2ZNCw+8R9gY/fTuT3qZsPO8EykD8mGoQegJaTA3mZF9MPt1IHAE+A5OhqOgMT0Yd1ZxtARVSq6XpeX9vupqPyK1ZgKloCZspuTXgacj1M1n1kZriNE+tcAcvdcvwLVI+nEvZcDzBjmBoqdJZ/37GDJjktOqRligfRM42b/elX3kWZ7JKx6ifpy8zG8gkECcmX5YGeCWpj4Hjpj6kdIE8v/7Mdrt334SFQaF2dEfEs+2wTdsHj6TtkHmj0NoqJQb8Q6IY5yIo2m8B36nwGotrVZKffCKR6ktWHreOyaMrOIAdZC5qtqwUzFNSvQ5wlgHTQrNhCxxdeLcoW1N9PvZ70uUG2RpBir+IEbERutKtYgRpO08qelB2+rUKqupCyn08FqcGFw1ZlSTdCndO981DxoGSV7ItfrNQPMtZNDFLS9tfOlA9eUyRPrkxapdZT+sH9tF sdyS7rwr Hh3yvjqc+RbpJk/AmHmz7QweT1nA4OlKEmrY4axtJ2uIjIXUYsUocoa8kl/zFB6QVbYhVonshsM92lVfp6bjWW91ZYyeO5pBt3gzF55HvB0+0Dw1BTxWDoJm5zcP2fklpsRtJKIX55Nxt26OKZF8brwl8d+t0cnQoXYcmqzk+WBbZeMLWRt39kFADMOSYXn4fWBC8OX02Ozx7zZZH00h7KlCo8TrAOrDyiZszdKjmO+lJS+jt68TznPH3Q/fxiHSiH2N2RbaOf/fAtPfCLcUEtHaw86P53mqoEpIBKg+mfOGeB6rpG3iXcrucWi+ZpFgtfczL+ieAeb5g/AWm9Oj5P2uCwyavSsG61kdCQ94aGFaexPzCbFmKs9zlAcpaL7Y9RrfLvGbm2MujW6skjQB3ZsjxxoSFcSRMo88E9yG3HCMw21Is1EzF8x8wOG85OLe4uiBnGbd+aAv3IJwRBuyrzzYEvvZMzv5PJRfliFcynSS+GbtkR77GLGpMrS4QNoBK4cA5cLHC0IYAzDC/APZi8USv0oZlYIbMDYSvhgqOdN9vAtj2qBZWd+ZTroa3i4SKwux3NwfbJfkPQN1zj0rENbnDQgcsps1zke8FDkRo3rr6AapcngZq/IdyQeqnYpSITNcKzWWhO4of/GN0tLFsJe0aXVTISPYWoMHwyXMLjgvKe/3B42uMzhr6SQ== 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 Mon, Nov 11, 2024 at 01:23:40AM +0000, Wei Yang wrote: > vma_expand() is called by relocate_vma_down() and vma_merge_new_range() > with only vma_merge_new_range() has a chance to remove 'next'. > > By leveraging the knowledge in vma_merge_new_range(), only set vmg->next > when removal is necessary, we can simplify the logic in vma_expand(). > > Originally we have an assumption that VMG state could be safely reused > after a merge. This assumption is removed after commit 5a689bac0bbc > ("mm: remove unnecessary reset state logic on merge new VMA"). So we are > safe to clear it. While this is clever, I'm sorry but it's a NACK (I'll explain why!). The intent of this code isn't to try to find the mathematically smallest possible configuration of code, the whole point of the refactoring is to make the code easier to follow and more flexible and obviously correct (or incorrect, if an error is made). Mutating unexpected state midway through an operation in order to remove some code elsewhere is doing the opposite of that. We may not now rely on being able to reuse state (huge relief that we don't), but that isn't an open door to altering state like this. > > Signed-off-by: Wei Yang > CC: Liam R. Howlett > CC: Lorenzo Stoakes > CC: Vlastimil Babka > CC: Jann Horn > --- > mm/vma.c | 24 ++++++++++++------------ > 1 file changed, 12 insertions(+), 12 deletions(-) > > diff --git a/mm/vma.c b/mm/vma.c > index 8a454a7bbc80..85d82bc1eaed 100644 > --- a/mm/vma.c > +++ b/mm/vma.c > @@ -984,6 +984,7 @@ struct vm_area_struct *vma_merge_new_range(struct vma_merge_struct *vmg) > can_merge_left = can_vma_merge_left(vmg); > can_merge_right = !just_expand && can_vma_merge_right(vmg, can_merge_left); > > + vmg->next = NULL; I mean from here on in we're super open to very easily written bugs which assume that this value is what we expect it to be... It's also confusing to a casual reader not knowing that we _require_ the caller to set next, which we now just throw away. The original vma_merge() implementation had a whole bunch of implicit assumptions like this, the intent of this code is to try to get away from this. > /* If we can merge with the next VMA, adjust vmg accordingly. */ > if (can_merge_right) { > vmg->end = next->vm_end; > @@ -1001,8 +1002,12 @@ struct vm_area_struct *vma_merge_new_range(struct vma_merge_struct *vmg) > * are not permitted to do so, reduce the operation to merging > * prev and vma. > */ > - if (can_merge_right && !can_merge_remove_vma(next)) > - vmg->end = end; > + if (can_merge_right) { > + if (!can_merge_remove_vma(next)) > + vmg->end = end; > + else > + vmg->next = next; > + } > This is confusing and now vmg->next ha a completely different meaning than one might expect it's not the next VMA it's 'the next VMA that we can merge with, but only after the merge operation has started'. This is again working counter to the intent of this change in the first place. > /* In expand-only case we are already positioned at prev. */ > if (!just_expand) { > @@ -1030,9 +1035,9 @@ struct vm_area_struct *vma_merge_new_range(struct vma_merge_struct *vmg) > * @vmg: Describes a VMA expansion operation. > * > * Expand @vma to vmg->start and vmg->end. Can expand off the start and end. > - * Will expand over vmg->next if it's different from vmg->vma and vmg->end == > - * vmg->next->vm_end. Checking if the vmg->vma can expand and merge with > - * vmg->next needs to be handled by the caller. > + * Will expand over vmg->next if it's set. > + * Checking if the vmg->vma can expand and merge with vmg->next needs to be > + * handled by the caller. > * > * Returns: 0 on success. > * > @@ -1043,17 +1048,15 @@ struct vm_area_struct *vma_merge_new_range(struct vma_merge_struct *vmg) > int vma_expand(struct vma_merge_struct *vmg) > { > struct vm_area_struct *anon_dup = NULL; > - bool remove_next = false; > struct vm_area_struct *vma = vmg->vma; > struct vm_area_struct *next = vmg->next; > > mmap_assert_write_locked(vmg->mm); > > vma_start_write(vma); > - if (next && (vma != next) && (vmg->end == next->vm_end)) { > + if (next) { > int ret; Again simply reading this code you'd be confused as to what is going on here. Previously this was plain. > > - remove_next = true; > /* This should already have been checked by this point. */ > VM_WARN_ON(!can_merge_remove_vma(next)); > vma_start_write(next); > @@ -1062,13 +1065,10 @@ int vma_expand(struct vma_merge_struct *vmg) > return ret; > } > > - /* Not merging but overwriting any part of next is not handled. */ > - VM_WARN_ON(next && !remove_next && > - next != vma && vmg->end > next->vm_start); You'd want to leave this in minus the remove_next bit. But this is moot :) > /* Only handles expanding */ > VM_WARN_ON(vma->vm_start < vmg->start || vma->vm_end > vmg->end); > > - if (commit_merge(vmg, NULL, remove_next ? next : NULL, NULL, 0, true)) > + if (commit_merge(vmg, NULL, next, NULL, 0, true)) > goto nomem; > > return 0; > -- > 2.34.1 > > This does inspire me to make some changes though so your concept here is definitely not completely off-base, but I am not a fan of how you've done this. If I do go ahead and make any change inspired by this I will _of course_ give you Suggested-by credit! I'd suggest focusing on finding bugs and logic errors rather than refactorings like this unless the refactoring is obviously beneficial. I appreciate your input and efforts here though, however! :) Thanks, Lorenzo