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 EB2A3C47258 for ; Tue, 23 Jan 2024 16:09:29 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 6EDC56B0075; Tue, 23 Jan 2024 11:09:29 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 69CBD6B0083; Tue, 23 Jan 2024 11:09:29 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 516F76B0088; Tue, 23 Jan 2024 11:09:29 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0012.hostedemail.com [216.40.44.12]) by kanga.kvack.org (Postfix) with ESMTP id 3F9F56B0083 for ; Tue, 23 Jan 2024 11:09:29 -0500 (EST) Received: from smtpin03.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay09.hostedemail.com (Postfix) with ESMTP id 683D280BC9 for ; Tue, 23 Jan 2024 16:09:28 +0000 (UTC) X-FDA: 81711060816.03.4BB2B68 Received: from mx0b-00069f02.pphosted.com (mx0b-00069f02.pphosted.com [205.220.177.32]) by imf18.hostedemail.com (Postfix) with ESMTP id 099B31C0002 for ; Tue, 23 Jan 2024 16:09:23 +0000 (UTC) Authentication-Results: imf18.hostedemail.com; dkim=pass header.d=oracle.com header.s=corp-2023-11-20 header.b=Yr7s6hlS; dkim=pass header.d=oracle.onmicrosoft.com header.s=selector2-oracle-onmicrosoft-com header.b=aFhNyn5C; spf=pass (imf18.hostedemail.com: domain of liam.howlett@oracle.com designates 205.220.177.32 as permitted sender) smtp.mailfrom=liam.howlett@oracle.com; arc=pass ("microsoft.com:s=arcselector9901:i=1"); dmarc=pass (policy=none) header.from=oracle.com ARC-Seal: i=2; s=arc-20220608; d=hostedemail.com; t=1706026164; a=rsa-sha256; cv=pass; b=B0kFmX4vkBJXxsUBGHiNDCv/xJyPv1wK81AH952SXOAtvoKeVgIfRT2QjWS4xgzMpteb3E YdnNNNZgijLKKJvAPytrmWRIEVzK0tIc5ylQox1AOWCGx68hHl+9AOarLLzctGpoTB0Mhe O8eKzHkRNNM1/pJD34LqyeKcLkf19HM= ARC-Authentication-Results: i=2; imf18.hostedemail.com; dkim=pass header.d=oracle.com header.s=corp-2023-11-20 header.b=Yr7s6hlS; dkim=pass header.d=oracle.onmicrosoft.com header.s=selector2-oracle-onmicrosoft-com header.b=aFhNyn5C; spf=pass (imf18.hostedemail.com: domain of liam.howlett@oracle.com designates 205.220.177.32 as permitted sender) smtp.mailfrom=liam.howlett@oracle.com; arc=pass ("microsoft.com:s=arcselector9901:i=1"); dmarc=pass (policy=none) header.from=oracle.com ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1706026164; 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=raWuhNVcGS/U6bhVOWYgSMCS55Mp9qMrqhhBLAlnxeA=; b=Pvd+JHAcNY3NvJseqU+BpKZTrtaWNjPOtpuyRULsX9MaZp30rLmAkQ0wUeKUbhQLSYFw2v HO7FFDkk9qYsxfTPduMEI3YcHhsTCAy9wlUD6z2zxo7UGazW5GAjQ8Oc3R4ryqnv5cwOSM 8X9NbIozcmwd4FQ6k9DGHYBbC5UIGgI= Received: from pps.filterd (m0246632.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 40NE4253019500; Tue, 23 Jan 2024 16:09:01 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=date : from : to : cc : subject : message-id : references : content-type : in-reply-to : mime-version; s=corp-2023-11-20; bh=raWuhNVcGS/U6bhVOWYgSMCS55Mp9qMrqhhBLAlnxeA=; b=Yr7s6hlSQiSTgiX69faUW3GsOyp/BIlcbxfq3Xok79xHrPG028pxyscBBUkoaRDz5gQF dwFPzLl+JLFUi/6U55YwYEXC/dYofgI4fcjijJbsxM0NwQU73MReLnLaA5eCdPxHapam JY5gBSeo+uTVCZOllYFsFAiHuoJdoipII3ELBQ6KpdZaLrR2Wn352pV4jgeYvs7x7qjs F5ys1s+bQ9wVqvbdyDGFiyc63mxBk0E2aBai45vOM0amgvD7OLF/5L3IMy1lHIeffqg8 JqJB7zUV5A9zLJYtBXuLjnsA6/QoM+gsx2ao/uR38nIB4n/pwkH1wy7xD5YKQhrJVR1J Jw== Received: from phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta02.appoci.oracle.com [147.154.114.232]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3vr7cweq4w-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 23 Jan 2024 16:09:01 +0000 Received: from pps.filterd (phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com [127.0.0.1]) by phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com (8.17.1.19/8.17.1.19) with ESMTP id 40NF8xZU014367; Tue, 23 Jan 2024 16:09:00 GMT Received: from nam11-dm6-obe.outbound.protection.outlook.com (mail-dm6nam11lp2168.outbound.protection.outlook.com [104.47.57.168]) by phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 3vs371h10g-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 23 Jan 2024 16:09:00 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ncwW94/S3ne5hFSJuoUm4Wi7Qz45jeDMIJWphOofRWki+T3XgF4WDOMEhGgLEC9txW462+s9MwNkggUW03QYev9UmhKqi1GLFMdjWnPjlYUIC3D/RSVJVT9yZ0jkWCYemasOsTWn57NxpzJ6mhZ6uMaliEGRZ7dnxuA0tKkeLwsdNJTRWxRbY/3vf8UnK5HwyvkVbUfMN+tocDC+Ypn1HlSnouPMnrfIPC7SclQKLuWMtFXf5EE3AWRVY8dM15UAN8WuZC9uxpTTaDAIrJYgPEsHDCb3P9/KHc1WMJFAt4/s6kosARqLJC2sdRV249NMH/ne23GO/UmcuydtOHvcgw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; 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=raWuhNVcGS/U6bhVOWYgSMCS55Mp9qMrqhhBLAlnxeA=; b=LMP4jc5btZ7ULtOq4fiy6xQn64RmApi5/JkoT/HCbE6+R1s12Wfa3q48oRE4nKUhRBDNjpLaWDlmL6rXngVChfNyw37TDYQ4JMdmGAaiVW+SYZmkre4FEW933coEUyFoI6PtXeIuLdlXZrMUlqKz5B75YRGJPVOybQj4uwkAUjKQIkYzmDdzyiV7B1bjhmZvS4UL/LNMxXdUO7wgoaAcuhpksoTK8/8a4/lKd+SMuv1DBd/LLaApksuw8kdqBuqPUrofrnQh+rfK/J2kt5gha7/RJdle+8QlejV/GqTYGDyxvROAdlG+gNzim/s7byNpHEPRdv8XybGgvypm8M5RjQ== 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=raWuhNVcGS/U6bhVOWYgSMCS55Mp9qMrqhhBLAlnxeA=; b=aFhNyn5ChF9d5mirZI2QL3GhrRWxf1IegQf2r9rOR5QATDHDAaMs35X1izif5ndOl1Y5EvVGdGMMVAJHA9xlq3gwF296/3GIreWPPlZk/FWyvJkUVHbwtuYh5uGzwsqysnDebv0D+pbc+VtV7jrrqSIPmKykBolnRg4uB5W9iTo= Received: from DS0PR10MB7933.namprd10.prod.outlook.com (2603:10b6:8:1b8::15) by BN0PR10MB5047.namprd10.prod.outlook.com (2603:10b6:408:12a::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7202.37; Tue, 23 Jan 2024 16:08:57 +0000 Received: from DS0PR10MB7933.namprd10.prod.outlook.com ([fe80::20c8:7efa:f9a8:7606]) by DS0PR10MB7933.namprd10.prod.outlook.com ([fe80::20c8:7efa:f9a8:7606%4]) with mapi id 15.20.7228.022; Tue, 23 Jan 2024 16:08:57 +0000 Date: Tue, 23 Jan 2024 11:08:55 -0500 From: "Liam R. Howlett" To: Yajun Deng Cc: akpm@linux-foundation.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org, Lorenzo Stoakes , Alexander Viro , Christian Brauner , Vlastimil Babka , Matthew Wilcox , Suren Baghdasaryan Subject: Re: [PATCH] mm/mmap: simplify vma_merge() Message-ID: <20240123160855.k7fhmlb7cfhdel5t@revolver> Mail-Followup-To: "Liam R. Howlett" , Yajun Deng , akpm@linux-foundation.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org, Lorenzo Stoakes , Alexander Viro , Christian Brauner , Vlastimil Babka , Matthew Wilcox , Suren Baghdasaryan References: <20240118082312.2801992-1-yajun.deng@linux.dev> Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20240118082312.2801992-1-yajun.deng@linux.dev> User-Agent: NeoMutt/20220429 X-ClientProxiedBy: YT4PR01CA0303.CANPRD01.PROD.OUTLOOK.COM (2603:10b6:b01:10e::26) To DS0PR10MB7933.namprd10.prod.outlook.com (2603:10b6:8:1b8::15) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DS0PR10MB7933:EE_|BN0PR10MB5047:EE_ X-MS-Office365-Filtering-Correlation-Id: 7674e494-02d7-4dda-7400-08dc1c2d9aa3 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: hB6mbeCiBzpB1dLLXWQLaASnhA3WicghK2Sl1wHkfIQDm7+idq7Rn8kTuruFJ3mhI8eU6f5Zc+uONLs+96HgogSyTKoiDOZwKHlQE9kv3yKfkAH4pbVbdgX8/Usjy9AwseVGBNrXFiHbCXtU0BBm65HmQIMqLqz7yN0QAvaczpyk60G5dVzAS5ECscQ9PXRpICRm0nN4UwY157nNltfBE5NCs0QNCvnUcH0w7E0OL1TU2Ii4oUaE7uHZmcd6HJEY3UA+fiAB+nAAP62BMzobSyosXh57JuycCoca2EFlQm2qckFtopZ5+41YMB6LPLOx9g38lmkAkS8zH35FdN1MI4AfJZwDScE+14+LQh8uHoijZPA6BjWIfV/fF84Z9LF65GPmDBC1GAWNJHCmdCVVxTFVjAaMKXRS3gJodgcauNGeTwH/8F6eZ2W0Q0QS5wxrxl2HUQb25TO/ur4yxcGlJb7nm7T6ry6CYnPNp79+aachjZKfk1c/oQuWV54VAm6AXDuDtklxBsdtgGpKEJUdKt+xpr9opwTOJaT2s0268IMO+1z0l9VAOFKvT4ajwivf X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DS0PR10MB7933.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230031)(7916004)(366004)(346002)(376002)(136003)(39860400002)(396003)(230922051799003)(1800799012)(451199024)(186009)(64100799003)(83380400001)(41300700001)(5660300002)(8676002)(8936002)(7416002)(33716001)(4326008)(2906002)(9686003)(478600001)(6512007)(6506007)(26005)(1076003)(54906003)(316002)(6916009)(66476007)(66556008)(66946007)(6486002)(38100700002)(86362001);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?h1pIS4agqwrML8ydCguxgRtvvQEYQMAML4MHg3cFLEnRhX3TiRW2f3ut2jP1?= =?us-ascii?Q?xhhQyiZ/rVEtY8If21GWuuJjFpyP24hcrxSrZCIdjr64Kksg3CfJj4gGogrm?= =?us-ascii?Q?esBDhN2R4jk1xpc7QdJgmQ1rSukKVH1+KLF+CAOiM6HBclOLg4QPXBCPM6tG?= =?us-ascii?Q?rwhN/3S8mK2LtV62PXqICoOfDHijsyQtvDc7Otjw6/ydVvtqj9DtrzutyNyF?= =?us-ascii?Q?gUczb6bS/yIh8U3vbGLbj1P0H/MgZc9rWnPQZkgNO4lE2NyTfBbWFrrF9IFj?= =?us-ascii?Q?WLkgNbkecj68pfEeGVZMpJNMFKC8wJJMXwv2JUUQ91kds7GX8i/O+kO+UCh4?= =?us-ascii?Q?3M9uGZN5WkFvSqVRvIE1HIEnHdiRvrqEbixGVJfvlgATNdoS4kjEnyjObUjz?= =?us-ascii?Q?wfkwnAKw/tdshNRbt43R5k27ffpY3su3qlNHOJtMnRS60zFHVJZL0dQOikWl?= =?us-ascii?Q?cAlm8IeUZk4Wg3tcdGlJGqT3W5NGvAwithms4zGqEP9my7Q5ScCzjObOpqfO?= =?us-ascii?Q?kPt4Om9mKfr+FFesozhFPuqQ25lMz9gga4VmhCsj5HvwNG0jGkE3T/qzuFQC?= =?us-ascii?Q?poeYhzGKPZOb+hFGZi0WB/Ur0SuQX5Awwmxs53fWvhbYJur8s0hlJnRmb4fg?= =?us-ascii?Q?VOwb0jcrTvHj8X3RGLxPpde3ysJmcnbN21/kaIETUKWJZmpirrykyal79MMN?= =?us-ascii?Q?zbjMhYRl6p5MS6pKRFoxVCY65WVKxFTaSo4uY9hfzToNSXsm7AXxf9/NNYYA?= =?us-ascii?Q?QiTwaXx+fBwDyaxDgjX3DbPD+btHQkw5ZB7dpuuiUGSYr5kHsAhs0undEJnh?= =?us-ascii?Q?XW5jiRnIZkzRLHe8w9CzrH5OpJiQcpg0xzZlWOKup2zbMDr8e+uGSFmW+AKt?= =?us-ascii?Q?VCrprWLRDJibpVPbCD42WeVPGnatz0DHUy70FdH9m54bfZzEI3YOy3N72swl?= =?us-ascii?Q?fJk82LW8tO4b13pi3lMpsicXj854cAJgwpyWCpUsOMSfUyVXXOL8roDVWpqb?= =?us-ascii?Q?YEIO2Z8lsfEbCiI4N0O7JkiNqGVhyibR7E0tTdIDCjk14/GRGX03qE8Dg8yu?= =?us-ascii?Q?FP8Z4UYkvtyPyA8OoO5fd9jnlZtFBacRagrRrZR4N3KHXYOCWfogJ7B/vrOI?= =?us-ascii?Q?I04kbglQMEpslnvLLJNSWBNC7V+dsaq+F95m0eAjvV2cXjhdRj4e0F1eraTB?= =?us-ascii?Q?pOf+N9PCrbgVTPI4530SenNdr1Mlaaq/CnJW7yqHyUR3rOBmRQWeSmGJAuz4?= =?us-ascii?Q?Qsnq3neNS0C5fE+aAV/b/ZcVR4b1dxquX4pW4d7lYymDc0sD3zy/uZWw5YiG?= =?us-ascii?Q?Z+SOdkRCLdLOGUkDVBSk+ZeSZK2esiDzrQa4hKLw+YtVoTC4cooC7jIphdKS?= =?us-ascii?Q?5wfe2VGr3e1++0aZubvKBijgJ985/Wp6kBeJqnIYpGDsTSxVUVZPiWJFC2tZ?= =?us-ascii?Q?BPSJNYod3BEoDKTR0BaxPaf7fsZaLyY05WzWq/LF7CD1/SlUqp/0+OUCTm32?= =?us-ascii?Q?GUvRPbpc69stMB9RMqVKhstFiqoOzwWV3xmOoKOJo+F+yKnyG/1CkM7DmYbm?= =?us-ascii?Q?j32nWtJQtD4uTkXEgDC/qqWTyOi14ZoL3d38vf+H?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: KFQRMuYHeA+0Ee9tD4G5jDCvv1JGB2U7bdACnf+y9LW9br1GcjVWni1mkCNLfohMjYMxuRucjeQNMmFbwSVAquVtbHUu/OS3DU8kqyl+rK7m0aQWabGmllCJW7F9R0BxIRBTuOiHtKBs/+ItQ6PkWvHaBIDYmxWhJFc9Qguwku57pLv/A6iTdp70c/wV36mUMsehr6In46CTGuYOiG+2Wfwa3W9qS++A9TagWnkbnRGcjm/xsVI1pbbi4zAISCicGlUcgQVU8mGjyQH54j4XLsDgqLZjXunGjP1i9uPGDdTQrdDt+yJoXBKq8CiCydu4wMciVoSFfqlAO4EDnJIB6w5HAVYBa8o6XUoUJP5YXR/2lLDBLDN9ZnoCtESMUsgn39WyPpT4CqkxRDKwG9k3mOte93ljj575xGJLWM+2ZWH/RpthgDwkICsRVT2aBhrEptDNVHw7UDQ8AYiNQ4k2plHfJIYU8b7RA++gyEHVG2fOw66mNdampnZhnBOSTmdXO0qGESj5Ippa/tg9P6WEOt97hfMINzOxK7zX10Li/iqpdGlt8ZzgSBBiao8a+kNrwEbQpFcoKbMj9hWw0k8/vKWP5RTKY8r1l+TrzSg50s0= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 7674e494-02d7-4dda-7400-08dc1c2d9aa3 X-MS-Exchange-CrossTenant-AuthSource: DS0PR10MB7933.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Jan 2024 16:08:57.4724 (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: HOltY0wVhsfrhFAu4mo2tzoeaumRNvJkKy3N5LPSOv1cGn8oBmsZhsdV/OBdYVcAMJ+5gtAe5cmC05+6pGfDOA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN0PR10MB5047 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.272,Aquarius:18.0.1011,Hydra:6.0.619,FMLib:17.11.176.26 definitions=2024-01-23_09,2024-01-23_02,2023-05-22_02 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 adultscore=0 mlxlogscore=999 malwarescore=0 mlxscore=0 phishscore=0 bulkscore=0 suspectscore=0 spamscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2311290000 definitions=main-2401230118 X-Proofpoint-ORIG-GUID: TBmpBM018up79fkqhCQOpzSKlfIGoy1Q X-Proofpoint-GUID: TBmpBM018up79fkqhCQOpzSKlfIGoy1Q X-Rspamd-Server: rspam08 X-Rspamd-Queue-Id: 099B31C0002 X-Stat-Signature: juqxetipyxs77huxm1uxnwf7ir6cs4t1 X-Rspam-User: X-HE-Tag: 1706026163-759348 X-HE-Meta: U2FsdGVkX19o5JolbNbnL/AQRN4TMptFUD/I+4W/TnVnyv3qHXbq15ISdl4ogOKHDDfKRQEAkBayL/u/y7OMPXk/jDSRP2GhyDrW9PSSmFKA5/tNZWl2ma4oanqo/9hMIvlQU/nRmkMTVjmB7xML1mpa47RtFRYc8RT2iWlepnm2qwQOOve8pWZ/NinjNX3cg2WtFGh5NtZ0ma+3rG9gWr4UXogUck16P5aFoylxR5TFRQRaAbyNmXu/aRywIjVpuhX8pYIZZ3s16BjfUs9H5WYR72ekOEfpoXMPV10Xou+Y0YXCtSonri2JXWShz8HHB+AoCFSZCzEagiH4GKXo7ui+InUta5TvPmPKdpB8FKr1DXp4UwicxbTd/+DT/YZayltyZRcKkBO3nwjBDPflOkXNzMEz5GRpYsSNQMROrUqR4DL2UrA7clMxGacWHSoNC9nHhKkMrTib0cGzVfo/9mT3154ISU8A2fUW4uSxoaNgyTV2QlCf/VgN4fIEuUKG6V2T+dQ0VmwslqiA5SvDiBxbYWYKs/6ZzJsYXNme7jYC49W6XJpp0LeEZRBGa3LYarY/XUnepfS6MozAQ/LJg2zdskvOJQIagZ8xy9X8mmt3Axa7dVf+PshydKAp8jUmT/gcYLcs6neNhjKMVWQ0ZzhB1ajAMAYEsaVN0Oj6W+jyoGVBf9lLLdgY2Td/H7VtZtLMzH9PmISBv+WoYwN8/3ZJwP9HE21chDvV2srUDuu4Ct5zIIlzfJ5DLUmf86u7+okXNrYLeZGDx1s7c3qinzRSbMkMErcABWR2+8MA0IihMDCr0XMovXLNb3l7FHtxsdxvDO5TQoFsw9WWZL/W4VkMFQMmng8EYGCnIyIOseY/qm+uR6MkU/7UPYso4eKg0ZEaFSQ8OdPRSycsK+8Bxnx/9huJ/SKTNfVMFK5YqFpfoX6ozN0penwoMeQEf0I5d2mHxyN/8LUGiENguxe ehlBPIh+ lsJ7eeEMSMnkFzhLpNBz4JNXnicQIGh46oUJdu1mj5QPKjpBTdyqta2ET4ZJNirQTYKaaY46N1dd1HH7v37WkYXx1ULKbFRiswfDEf+aXkLiY2DnLdZzD+xWtoGWEGwM4dM1X8hkhgSwv8Yg/3SZFGZOjGLGsCRFAdfM38Vvz5FvuufJkGtMgD0P+MNzc25E2rfZew3IZ6pQUUZ26blGoJvv0qiYhS1+L9fR64M5Bz5yEYTKzLEcQa5sTFo1GiR25suBmADTXbvrOIiC73cqg/xsQwUOItVkwU/0TNIGnEIAiwyntItOUpRPINvMBX8jK4BVZIB5I30O7/q5YiL9s0gEspylu7s25kvwwPdc1UvREAeCMzr7p897Xi0RPMBpR9CevLYkDhHQ2sD4DLAXYYv3flG9YNUbHSPOsczg8NtUqhQOrFxNE4gKaWN1xE7pxvhhK2U5bK2bI5U7Hzrg52Cdi4KHBS6sAsNkzC/K2DG/YlKn8BAkkrcJWrlCB8vUEYl68HkkNclsX+gDE+OIMqL2SMVEo6tp7djQN X-Bogosity: Ham, tests=bogofilter, spamicity=0.000002, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: Adding to the Cc list, because it's vma_merge(). * Yajun Deng [240118 03:23]: > These vma_merge() callers will pass mm, anon_vma and file, they all from > vma. There is no need to pass three parameters at the same time. > > We will find the current vma in vma_merge(). It sounds like you are adding a search for current to vma_merger(), but you are removing that part in your patch, so it's odd to say this here. >If we pass the original vma > to vma_merge(), the current vma is actually the original vma or NULL. What do you mean original vma? The source of the anon_vma, vm_mm, etc? If so, the 'original' vma could be prev (shifting boundaries in case 4 and 5 in the comments). I think "vma that was the source of the arguments" would be more clear than "original vma". > So we didn't need to find the current vma with find_vma_intersection(). > > Pass vma to vma_merge(), and add a check to make sure the current vma > is an existing vma. How could it not be an existing vma? It is dereferenced, so it exists. Do you mean a vma in the vma tree? I think this is all to say that we can pass through the vma to figure out if curr == NULL, or if it's vma directly. > > Signed-off-by: Yajun Deng > --- > mm/mmap.c | 37 +++++++++++++++++-------------------- > 1 file changed, 17 insertions(+), 20 deletions(-) > > diff --git a/mm/mmap.c b/mm/mmap.c > index 49d25172eac8..7e00ae4f39e3 100644 > --- a/mm/mmap.c > +++ b/mm/mmap.c > @@ -860,14 +860,16 @@ can_vma_merge_after(struct vm_area_struct *vma, unsigned long vm_flags, > * area is returned, or the function will return NULL > */ > static struct vm_area_struct > -*vma_merge(struct vma_iterator *vmi, struct mm_struct *mm, > - struct vm_area_struct *prev, unsigned long addr, unsigned long end, > - unsigned long vm_flags, struct anon_vma *anon_vma, struct file *file, > - pgoff_t pgoff, struct mempolicy *policy, > +*vma_merge(struct vma_iterator *vmi, struct vm_area_struct *prev, > + struct vm_area_struct *curr, unsigned long addr, unsigned long end, > + unsigned long vm_flags, pgoff_t pgoff, struct mempolicy *policy, > struct vm_userfaultfd_ctx vm_userfaultfd_ctx, > struct anon_vma_name *anon_name) > { > - struct vm_area_struct *curr, *next, *res; > + struct mm_struct *mm = curr->vm_mm; > + struct anon_vma *anon_vma = curr->anon_vma; > + struct file *file = curr->vm_file; > + struct vm_area_struct *next = NULL, *res; > struct vm_area_struct *vma, *adjust, *remove, *remove2; > struct vm_area_struct *anon_dup = NULL; > struct vma_prepare vp; > @@ -889,13 +891,12 @@ static struct vm_area_struct > return NULL; > > /* Does the input range span an existing VMA? (cases 5 - 8) */ > - curr = find_vma_intersection(mm, prev ? prev->vm_end : 0, end); > + if (prev == curr || addr != curr->vm_start || end > curr->vm_end) > + curr = NULL; It would be nice to have comments about what cases this logic covers, because reverse engineering it is a pain. And we have to do it every time a change occurs in the function, even when we are the ones who wrote the statement. I think we can all agree that this function is painful, but it's improving and thanks for joining. > > if (!curr || /* cases 1 - 4 */ > end == curr->vm_end) /* cases 6 - 8, adjacent VMA */ > - next = vma_lookup(mm, end); > - else > - next = NULL; /* case 5 */ > + next = vma_lookup(mm, end); /* NULL case 5 */ Ah, maybe put the comment about case 5 being null on a different line. I thought you were saying the vma_lookup() will return NULL, not that it was initialised as NULL above. Change the wording to something like "case 5 set to NULL above" or "case 5 remains NULL". > > if (prev) { > vma_start = prev->vm_start; > @@ -919,7 +920,6 @@ static struct vm_area_struct > > /* Verify some invariant that must be enforced by the caller. */ > VM_WARN_ON(prev && addr <= prev->vm_start); > - VM_WARN_ON(curr && (addr != curr->vm_start || end > curr->vm_end)); Why did you drop this? I understand you moved basically all of it to an if statement above, but it's still true, right? Considering the trickiness of the function I'd like to keep it if there's no one who feels strongly about it. > VM_WARN_ON(addr >= end); > ... To increase the chances of actually finding an issue, I would suggest splitting this into two patches: 1. Just passing through vma. 2. The logic changes to remove that find_vma_intersection() call. By the way, what are the performance benefits to this change? It's not without its own risks - this function has caused subtle bugs that persisted for several releases in the past and it'd be nice to know what we are gaining for the risk. Thanks, Liam