From nobody Sat Feb 7 05:57:29 2026 Received: from mx0a-00069f02.pphosted.com (mx0a-00069f02.pphosted.com [205.220.165.32]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 0970223A9BD for ; Wed, 21 Jan 2026 16:52:00 +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=1769014323; cv=fail; b=QdA7qinfhI1QUu0AYTpQ0Vyk+EPDXS/CouFyGkk6GGoJRWd8lyd5gA3o+fioEBVPvpSeFSqSIYSMUS63SC+FEzuVsboSCJsMEd9zb9bVRCUPgzQ6sBRtpmsc3GfjXek6PRrxFmYwOq6NnoHoAqM7kXS0alzildDMi8mIq3nozYM= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769014323; c=relaxed/simple; bh=Qvfg3dIXSRjGTpIUbDEtE3nA0kCwVtnygZ2c8PcrV/s=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=F/BcPTOqq0wDLqjeLHM3dfCx96nbrqlUDSMcHYsctkl4LUbzb1Hkq1SEfTqp9tHAc75M97NrMXBu5ORmbfvoaylEmIoChHbB1yxZpHtiYfsjLFjrsYXz1HwLcYDfBg2tIwBFr2ytxKYLTTpnNXLn0iWVCYItyvFD69mt+v2gPNA= 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=PXCABfHf; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=rDJAL6lj; 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="PXCABfHf"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="rDJAL6lj" Received: from pps.filterd (m0333521.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 60LC2gkM3264873; Wed, 21 Jan 2026 16:51:08 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=gy/gNtftho/pBCoUcELF9QaGj7k4/VSmefuiZMFqGo8=; b= PXCABfHfTBw5gRjr+DbDbiz4VU32UJGUHbb3DqCcYsRJtBV22Kclr/B8axCOUusE JkIOJfYEJDf8C1bk05Rb4TK0O63E4eMOLO7dffRG5qE4kX9UJ0OJHNZCat1dO/U7 z6zmUM3aMmCx00Py5TOKvEHff1lbprSqdNpsHx24fUyQMn832PQaLuHRs7RHv4QZ YxNf46JeYebPnx0DoOEsRIU+nTMDwcolQXbYj3Guj/jKQNY6w2/WZEKX8BzQoHft XyR3YDI/5GliFBT2zfW161/rSzdikybZtHJybCqwwCb0habAfzpqKlZAGhjZ67XR uB+H3Ixl8lm7A6T1QhiHwA== Received: from iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta01.appoci.oracle.com [130.35.100.223]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 4br1b8e8js-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 21 Jan 2026 16:51:07 +0000 (GMT) Received: from pps.filterd (iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (8.18.1.2/8.18.1.2) with ESMTP id 60LFWCav022457; Wed, 21 Jan 2026 16:51:06 GMT Received: from bn1pr04cu002.outbound.protection.outlook.com (mail-eastus2azon11010033.outbound.protection.outlook.com [52.101.56.33]) by iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 4br0vf9rm0-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 21 Jan 2026 16:51:06 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=k+EZNjadsw6waR/2Ok5X9nCoKEbVPcLBpW2riFlQ3HEa/iWW5D/aUw7Q6ZJ5YXxJYMcezlPSh7b8kICg1kq3bstDqFVIHvFmcwxVjHSrBS4252hXwfdk+5S0YgzJP+8XLf3WsYoblZal11E/UhnXl8bmMPgv6NMkczW3T0dD/4qfUsLno6FTdrPKvWyaWNUrBXiv8E585866v5vsPJbM2YnqM96zp1WF/7/yEfhJeDxdsBHSNrVnRh2AICDRyj8iiaqdXF9g9Gl5JBIhs3F7UBzKTxEKPURqNxysjoIkQo4gbWj56JGMMfIdbdSSTQ4jAz12xubIRkP7HZH/k1fb9g== 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=gy/gNtftho/pBCoUcELF9QaGj7k4/VSmefuiZMFqGo8=; b=JsFgjTCN53VqFK7a1iBGVKuepWIIJPogrymnjZkyix/h44PlGFNHiWcNZhKu8Iid5pdrTSmqoHSO3jFTh81YndVg9g7MKqQB8s3gxbXK+B+DkPzqQwot6r1iVEXM5pwPSyjBKKK2J/szhow5PaA6i6MH7KkG0CX3Jtfttk7oq7Dm0pMyjN2PtIk9fpM04MdWRNtMPGD2mXhIhz8s2qkDVPkOhTmFDfY3EteNjVWAdvG+lV+QzfzGaSW7rNjtOB4OUCk3zTmapbeP7BfMN00J/5clDbKHt06tDyHlh9rUzgowXWOOe8HhPFyr2Js+1qnVM/36HVA43dlBc/q7aqwrhw== 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=gy/gNtftho/pBCoUcELF9QaGj7k4/VSmefuiZMFqGo8=; b=rDJAL6ljjs0T0f9GxgwlGU68Mh8hl3/9oW47dXYLZutIoFDr0Eu4jc0sfB+hUORn5P+7WhG4gjnrOGFcrNUEE7OUAdDfzgZWBH43KRc3JMGMTO32zHB9PMjw0WUsFJFbMfu1IE78pPef/0m2jyqFFvY0GZOv6D4fq2JfaCfCu6s= Received: from PH0PR10MB5777.namprd10.prod.outlook.com (2603:10b6:510:128::16) by SJ0PR10MB4414.namprd10.prod.outlook.com (2603:10b6:a03:2d0::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9542.10; Wed, 21 Jan 2026 16:51:04 +0000 Received: from PH0PR10MB5777.namprd10.prod.outlook.com ([fe80::4b84:e58d:c708:c8ce]) by PH0PR10MB5777.namprd10.prod.outlook.com ([fe80::4b84:e58d:c708:c8ce%4]) with mapi id 15.20.9542.008; Wed, 21 Jan 2026 16:51:04 +0000 From: "Liam R. Howlett" To: Andrew Morton Cc: linux-mm@kvack.org, linux-kernel@vger.kernel.org, Suren Baghdasaryan , Lorenzo Stoakes , Pedro Falcato , David Hildenbrand , Vlastimil Babka , Michal Hocko , Jann Horn , shikemeng@huaweicloud.com, kasong@tencent.com, nphamcs@gmail.com, bhe@redhat.com, baohua@kernel.org, chrisl@kernel.org, Matthew Wilcox , "Liam R. Howlett" Subject: [PATCH v3 09/11] mm/vma: Use unmap_desc in exit_mmap() and vms_clear_ptes() Date: Wed, 21 Jan 2026 11:49:44 -0500 Message-ID: <20260121164946.2093480-10-Liam.Howlett@oracle.com> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260121164946.2093480-1-Liam.Howlett@oracle.com> References: <20260121164946.2093480-1-Liam.Howlett@oracle.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: YT4PR01CA0017.CANPRD01.PROD.OUTLOOK.COM (2603:10b6:b01:d1::28) To PH0PR10MB5777.namprd10.prod.outlook.com (2603:10b6:510:128::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: PH0PR10MB5777:EE_|SJ0PR10MB4414:EE_ X-MS-Office365-Filtering-Correlation-Id: 1edfd1c6-623d-4184-bc48-08de590d43ce X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|366016|376014|7416014; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?13on8nCfs7up9MEX4UOx8rBZ6kQRCSe8pNNcygaLlPvw8DashoetafpgzcWj?= =?us-ascii?Q?vJe9iIkIHEXzxfTQvx+v9/Ykw6EKOrjTIhbCF7cYmPAk0M5CN3Rmy/3WNe6x?= =?us-ascii?Q?Ack7qdq2ZwUb4hhuePOq5ORJ+RcVheebvOfjFHVsaHULg6ZIdhBW0ws9648w?= =?us-ascii?Q?ylhJOzEm8K1OcsF+iU0fvUGrazgE8pOKDAkEhpDDXS9eXZ+u5tNaDs+b7Aqb?= =?us-ascii?Q?w37Ffos5LCVZ43KsvwnZs0xiFUlijfY1NRc743mmQrrPzcnG5L0JOYfNizlt?= =?us-ascii?Q?GyaibbaBUS9buEb1esoWbJiO/dnNaB3LhalIACS/ofPV8yRxPlRDMU9bEGQo?= =?us-ascii?Q?cNRieRaxqjZtLXmwRQ9WXfDUFiGzVKJU8H/BdCEkeWLesTBP8ZkubAYlmMHi?= =?us-ascii?Q?4TgJRhReEj4ePX81/Go3nENbEzveKxFOsc7Ex2VYQ3/YTand4hSDjce0qUop?= =?us-ascii?Q?nSTmjzIfh5vBMLDJfYFntruRVagwHSUQE40hNdT5qsNZDnwU2dskg96riFdX?= =?us-ascii?Q?UdieTPDH8Fz5ZYsbXn52dtia+NBVyk1SxyJebiLVUP5K6LTbGZiYe5EQu8Di?= =?us-ascii?Q?8OmFc5j1t8wKbT9rHg3h35twzGA89akSVCSqfgXoI9HFFjCAlj/YfWgA3rZz?= =?us-ascii?Q?+VOB8MXBK2picUrBnors5ukC5dBqG3BfZiSElal2ooN1oazxfBWfsfKRK0kQ?= =?us-ascii?Q?FhfNoc4ovZHTEUOuyh1QXGDIaqzWUuWFGF2wDcbXi2UPq8Clmv6W5s7R982w?= =?us-ascii?Q?2zeYvW1Jg+GsRmkNgyQzREEMhTI4qQt+3ATIv3clmJJmQZQx+yMo23qHoY9k?= =?us-ascii?Q?3r+xhVfB6wvsG58Ux2KjUSV7owwCS5EStQm31z4oyXLDtz2i2hEE1HbJ2Tgm?= =?us-ascii?Q?5OtINWnfcDUryBfPx1Z79XxkvZeOtNWNQerX/EVsp7BjEd/1dynsRjdril48?= =?us-ascii?Q?pPLlTLXSo0+U/AYIYDQijWcYz6Fdp1jvF7xoz1uaSzAFFFitblZyQR+KgQwh?= =?us-ascii?Q?d26Qp+EW2Q2ccVmfNxGPmFFxfhebV2XRz/aFCXBLS8PYG5GV/qjD0QVAxT7l?= =?us-ascii?Q?yGRpRzsRqtRuEI60+0tFm1Y7HefHzoXHH9McfhyGV+eY/vrCV5NCt0W8JE98?= =?us-ascii?Q?YRPGS//S7Yhy1uWOLZxcgzAIe9rd79ikhEHqFU3P6RDFQ961huJyF95rxA8H?= =?us-ascii?Q?puYfhEpM0SnGGy1PweskqzyFvV8emHo2QW3Uksw3bcTu+iGp1wreMMwV+Ann?= =?us-ascii?Q?CbZqwiO4Ib96iSWQjtE1bUbrdNwgkkUvWt8c8avD3N1KKy1K5s8pPN/GFPRT?= =?us-ascii?Q?px+bhPfnCkZAcSdt/bhYcCRz+57HV3m1vSEzZFUiyNiNfxDK5sD+1K+P4LgB?= =?us-ascii?Q?utrnLv6AEnoJ9k0TZyUH8kPLo1HpT3J9mFGnAFFlRK9MeRic6KQIVegv1xBE?= =?us-ascii?Q?UeVPvHJ8NSD4hTPmx1qlxl4VAd8imXKgGKJFf2amo0q0ctKqRnFXq/4qGDE6?= =?us-ascii?Q?ituLqYfIXlvodc55xr/edlDT+BmU2sjdT+UCZ9QK8IQkHimL8v0Kfutud5w9?= =?us-ascii?Q?1f0WulmX5ZtS6mnDs1E=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PH0PR10MB5777.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(366016)(376014)(7416014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?P/lUR/isACGIR+WD8ACE3ZPutQMIP6yQ6YH5zqjpFdAayIF4ViWS4XoQLBTm?= =?us-ascii?Q?zKke4nx21qQ1tbBkeF8C7YkQb4iuVVLAOV6vhm03QzZhJTw1H/oCxZMPxEJp?= =?us-ascii?Q?1Ns4BzO86oGtIA/BpxXVYZgp0BzGKYeCJkfw8wnUIaJC+1xJ/4piBBY5QnsN?= =?us-ascii?Q?xjPVkGsoz9aQUrQed9y8LR67y90IMWTwlE2OnHD11l9CpsQt+1Ag4Ai7oDnZ?= =?us-ascii?Q?LX0g07CvYqQGC8D3afhJH61Ggqtl2ZFHWur7Ehjlt3Qyy6HeEbvpjJs0HB4L?= =?us-ascii?Q?7j8DVGU59IpMrLSi2ejTSp8bzBuWurBhOU4+nut+mWCadVAgLvdQ7UE+Eii4?= =?us-ascii?Q?1hiGZ9ASMlLrWl+u/3WG1JPXa6TCKOZ8gUO76qkTu52GgLIpxDJOVZtva1ux?= =?us-ascii?Q?PwDA6PNMLsYOXf6EovFaQOfS4yQ1MsvJPeN1LhkYKm4POy/DLJhmEhxhw3lt?= =?us-ascii?Q?PUnpaGEkZMSmaBwlyJV7vrPTWaKOqi3DML3Hv6IfWhIuLHex/v5JTlfl6u8E?= =?us-ascii?Q?5lkKuiR4Cb5UqzNB0jQSJMrFurwJOmEwso2H5qUkIdnsCHNfxSMvve/FOlYc?= =?us-ascii?Q?WAViqzXTaWeEtNz32xTaKa1emKgKgX6QFb8tyh3Cd3W7gpdemYP8fTaX/4Dk?= =?us-ascii?Q?FD15R6jAzvIacaZmaZQe/g+syIHeknunKuMzv6GLak9DRVSPWbxJC/nkVEKT?= =?us-ascii?Q?UpxOJDebzQVdHTlgB5exgcwQ86C8UC7rQXdG3Qgv6magsQPvVOnEc6ZoqFr0?= =?us-ascii?Q?umSpqYjm24sVbsjV6TTqzWgr49r08vjJ2dXej5rgagkMVeHomPXSHoqbdIJb?= =?us-ascii?Q?Kuahp2CVssUlEyfCUBIfEQO3tDBWdd6+Ug+7j3kzieQuIfzUHFyHuVQ0hXsp?= =?us-ascii?Q?IMXV/T1l/RtcI7IQJZ6Doc5Pb/7id3UXllnSyFr5xm/TmrItujtSsbukuW/P?= =?us-ascii?Q?CdBpwouYwkN4FY8TkmCUwhlIZD/PkNgKR1wWg4oDmfj2ZBeijJdM1PxE5EGL?= =?us-ascii?Q?OHFyscA9Xm/2N1DeYGE23cDjySRC61wLy5IhjAOS1SC2++Th8iGJo9XxgSKr?= =?us-ascii?Q?fadoFAPyN08/HBcKD5dMjzvtwA+cvQ9mXhA1krNxf+Iu6Qi+qv0SrpoBM6yZ?= =?us-ascii?Q?6KQf86xIgTyPdAvy3M4di3plEJCYPmuu3X+s2el93dHlwLHrOrDcPLv9LEZA?= =?us-ascii?Q?Oxi5882TxstSZXglY04d8wA6Udtb9v97hT8Nrvq1SsIOxxK8Nc3NInAyeE91?= =?us-ascii?Q?V5I9R/zrZ+NvTRgwJOT4c4JkQQtUks8vxfRmrKdwdQc+L7uYFUglUZ+Dz9H6?= =?us-ascii?Q?5RZ/v+T69Q4Ce/jyiuVGDejEQ1n3QS/d8NXuvteD/I5RapUxsWjih4lHV/mZ?= =?us-ascii?Q?/uVm/sp/qg8ovGwWwCZ//+aX2Lk6a/NglBMuGIP/M1ZzNOdKn4cdjkO2jn7U?= =?us-ascii?Q?UhTKhJ9wef4f6K99ROBx/x8lHNCbFdZoKxuKO3Jq03NiJGhvxC0c50c1ve9q?= =?us-ascii?Q?7PaXBOs88nMg9OWVjvGjiUDFTH21egTaO1wceZQQ4U+UUzHswX4eYEndbX6s?= =?us-ascii?Q?yPFnmjKlO9PF2bW92DGDYS22AuPjjRxYmwqbfRggYx5uhjRuE8Khy/SZinv9?= =?us-ascii?Q?igCVRpkS2bBC38YJZiG8Nxw8aDk5iRy2byyatz4UMM4hIAd32SE4RGst43ru?= =?us-ascii?Q?mcmUMtlGGeMrbuj4+pYGnytHHHU7V/0gGDBOKAGN5udl0DRIirTpZCyuQSG/?= =?us-ascii?Q?D4FHeEScrA=3D=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: MQPjNDO3SjwtEYlqN28uHFzxwLG7qsduXiNJrj5dRFK35poUi3H+7SFoA0T62gS0Hoa9zzDdyXE7fwpRHEjMf60AijuyoJYVWswQsgjUfZv4330iF7urcy5U27d9W/nFKgy2/i/EqbWMJBCcrDGHNINDwMXT1jhg0UYfI91XTQcU2klOsSXwN7Jm09TeAM+YQaMqwXVT7zj0P0aege+J3he95LfBQmu1NFj9ZO1y1IaBziBKsBFe2KOh2BPWRDAdkwFc6bJVC8MzrZ5n7vVJidzcvks0qfgR50Ydqc70qxjEM3Z9i00iSm4QltFdMrvOXS/InQC/k4uuIOBkAPmeHEW/YG7Nhp83eHSD+Gdz7Acg8XvGcq+wlFk5WqKqIuZNrxcfOCxUzDXshWTwPGGMMgbR87lRLMu2bdwt5qx3KO4KB1tW3IhgQS3C46JjGWSDr5G4MYHstvizXLjDeMc1ZZNxSZalGJbDDpXedxs9DTNMZC9pQM3zJFQgfGjeVJ5ZMUKy6/vVD5tcCkklqu5/NfGNRWDR2seyXpgWwVZVzjgIMYVROOosdgLm8oo5HutfD0ECj2tHH3MfbhfYEfv9Rd7U/U4CTAVh0tegy0X0/wI= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 1edfd1c6-623d-4184-bc48-08de590d43ce X-MS-Exchange-CrossTenant-AuthSource: PH0PR10MB5777.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 Jan 2026 16:51:04.1348 (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: RH9q5xWJaA8xZVrhbFMW91jFCVA7oEqsX2G8oPUMiHAAjAkcIGjjOa228LxKSG0bUvelUCkDbmfsRhM1lM1FpQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ0PR10MB4414 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.20,FMLib:17.12.100.49 definitions=2026-01-21_02,2026-01-20_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 spamscore=0 adultscore=0 bulkscore=0 phishscore=0 mlxlogscore=999 mlxscore=0 malwarescore=0 suspectscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2601150000 definitions=main-2601210142 X-Authority-Analysis: v=2.4 cv=WbcBqkhX c=1 sm=1 tr=0 ts=697103fb b=1 cx=c_pps a=zPCbziy225d3KhSqZt3L1A==:117 a=zPCbziy225d3KhSqZt3L1A==:17 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=z/mQ4Ysz8XfWz/Q5cLBRGdckG28=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=xqWC_Br6kY4A:10 a=vUbySO9Y5rIA:10 a=GoEa3M9JfhUA:10 a=VkNPw1HP01LnGYTKEx00:22 a=yPCof4ZbAAAA:8 a=yCtcxbmM08XVNiOCcoQA:9 cc=ntf awl=host:12103 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMTIxMDE0MiBTYWx0ZWRfX66hUZez0RHBV LJwhQ4rIjH7nBxnSlV3QzLA/rSldk/XXc15lQ5QUP8apbfvHCcxdBfMzGG064/4u0qPumdraHLX 9D5hnVg3WoCEPtQhKvPeXs6jpcf1gLEX7UZZVhCiT03A3Y93L49paOOqjP+30deVSVx5qc8PYEx qRYu3VVCPM+JYlNyVOdFq6k22vbI/U2OrfodVk6ExgUwX7uhZ6oNV+UcNVULAt/pZ0nLp6meeYt LBkmlFK3slWCgrO++Yv2cno8tAX0eoeqFS0UrMmsRhgGuo/Xx5F1R0bZZ0dXXGeWy54w2RzIwbk QzpEOwEhK8MVq8eVTDSgj02wRRalGhO8f21x2M6YwpxrlTyku45vFk2DmscXovG93slJPneVqNX dYLkgCFClIa0SfsKsUnwPei60UEDeWrtPG8b2ALtYwB38PZi9pCAE2gDoQU0aTpFxzxqZwaUPQT UlQ7Kn6shx9K88/9awhL8gnjXkj6A+eVSH2KFAXk= X-Proofpoint-ORIG-GUID: n8SbVb7PMkPB7b6iKYIUVXQd-WAxk6lD X-Proofpoint-GUID: n8SbVb7PMkPB7b6iKYIUVXQd-WAxk6lD Content-Type: text/plain; charset="utf-8" Convert vms_clear_ptes() to use unmap_desc to call unmap_vmas() instead of the large argument list. The UNMAP_STATE() cannot be used because the vma iterator in the vms does not point to the correct maple state (mas_detach), and the tree_end will be set incorrectly. Setting up the arguments manually avoids setting the struct up incorrectly and doing extra work to get the correct pagetable range. exit_mmap() also calls unmap_vmas() with many arguments. Using the unmap_all_init() function to set the unmap descriptor for all vmas makes this a bit easier to read. Update to the vma test code is necessary to ensure testing continues to function. No functional changes intended. Signed-off-by: Liam R. Howlett --- include/linux/mm.h | 4 ---- mm/internal.h | 3 +++ mm/memory.c | 20 ++++++++------------ mm/mmap.c | 4 +++- mm/vma.c | 27 ++++++++++++++++++++++----- mm/vma.h | 14 ++++++++++++++ tools/testing/vma/vma_internal.h | 6 +++--- 7 files changed, 53 insertions(+), 25 deletions(-) diff --git a/include/linux/mm.h b/include/linux/mm.h index cb3de0c73d030..3164b897283f1 100644 --- a/include/linux/mm.h +++ b/include/linux/mm.h @@ -2624,10 +2624,6 @@ static inline void zap_vma_pages(struct vm_area_stru= ct *vma) zap_page_range_single(vma, vma->vm_start, vma->vm_end - vma->vm_start, NULL); } -void unmap_vmas(struct mmu_gather *tlb, struct ma_state *mas, - struct vm_area_struct *start_vma, unsigned long start, - unsigned long end, unsigned long tree_end); - struct mmu_notifier_range; =20 void free_pgd_range(struct mmu_gather *tlb, unsigned long addr, diff --git a/mm/internal.h b/mm/internal.h index 2cdc5c9396f10..25a17eea550b8 100644 --- a/mm/internal.h +++ b/mm/internal.h @@ -197,6 +197,9 @@ static inline void vma_close(struct vm_area_struct *vma) } } =20 +/* unmap_vmas is in mm/memory.c */ +void unmap_vmas(struct mmu_gather *tlb, struct unmap_desc *unmap); + #ifdef CONFIG_MMU =20 static inline void get_anon_vma(struct anon_vma *anon_vma) diff --git a/mm/memory.c b/mm/memory.c index 4331a6abe3e4c..6fd6decc139e9 100644 --- a/mm/memory.c +++ b/mm/memory.c @@ -2083,11 +2083,7 @@ static void unmap_single_vma(struct mmu_gather *tlb, /** * unmap_vmas - unmap a range of memory covered by a list of vma's * @tlb: address of the caller's struct mmu_gather - * @mas: the maple state - * @vma: the starting vma - * @start_addr: virtual address at which to start unmapping - * @end_addr: virtual address at which to end unmapping - * @tree_end: The maximum index to check + * @unmap: The unmap_desc * * Unmap all pages in the vma list. * @@ -2100,10 +2096,9 @@ static void unmap_single_vma(struct mmu_gather *tlb, * ensure that any thus-far unmapped pages are flushed before unmap_vmas() * drops the lock and schedules. */ -void unmap_vmas(struct mmu_gather *tlb, struct ma_state *mas, - struct vm_area_struct *vma, unsigned long start_addr, - unsigned long end_addr, unsigned long tree_end) +void unmap_vmas(struct mmu_gather *tlb, struct unmap_desc *unmap) { + struct vm_area_struct *vma; struct mmu_notifier_range range; struct zap_details details =3D { .zap_flags =3D ZAP_FLAG_DROP_MARKER | ZAP_FLAG_UNMAP, @@ -2111,16 +2106,17 @@ void unmap_vmas(struct mmu_gather *tlb, struct ma_s= tate *mas, .even_cows =3D true, }; =20 + vma =3D unmap->first; mmu_notifier_range_init(&range, MMU_NOTIFY_UNMAP, 0, vma->vm_mm, - start_addr, end_addr); + unmap->vma_start, unmap->vma_end); mmu_notifier_invalidate_range_start(&range); do { - unsigned long start =3D start_addr; - unsigned long end =3D end_addr; + unsigned long start =3D unmap->vma_start; + unsigned long end =3D unmap->vma_end; hugetlb_zap_begin(vma, &start, &end); unmap_single_vma(tlb, vma, start, end, &details); hugetlb_zap_end(vma, &details); - vma =3D mas_find(mas, tree_end - 1); + vma =3D mas_find(unmap->mas, unmap->tree_end - 1); } while (vma); mmu_notifier_invalidate_range_end(&range); } diff --git a/mm/mmap.c b/mm/mmap.c index 4500e61a0d5e4..042b6b4b6ab86 100644 --- a/mm/mmap.c +++ b/mm/mmap.c @@ -1277,6 +1277,7 @@ void exit_mmap(struct mm_struct *mm) struct vm_area_struct *vma; unsigned long nr_accounted =3D 0; VMA_ITERATOR(vmi, mm, 0); + struct unmap_desc unmap; =20 /* mm's last user has gone, and its about to be pulled down */ mmu_notifier_release(mm); @@ -1292,11 +1293,12 @@ void exit_mmap(struct mm_struct *mm) goto destroy; } =20 + unmap_all_init(&unmap, &vmi, vma); flush_cache_mm(mm); tlb_gather_mmu_fullmm(&tlb, mm); /* update_hiwater_rss(mm) here? but nobody should be looking */ /* Use ULONG_MAX here to ensure all VMAs in the mm are unmapped */ - unmap_vmas(&tlb, &vmi.mas, vma, 0, ULONG_MAX, ULONG_MAX); + unmap_vmas(&tlb, &unmap); mmap_read_unlock(mm); =20 /* diff --git a/mm/vma.c b/mm/vma.c index 75c68c74c062e..b46c869d4bb07 100644 --- a/mm/vma.c +++ b/mm/vma.c @@ -480,8 +480,7 @@ void unmap_region(struct unmap_desc *unmap) =20 tlb_gather_mmu(&tlb, mm); update_hiwater_rss(mm); - unmap_vmas(&tlb, mas, unmap->first, unmap->vma_start, unmap->vma_end, - unmap->vma_end); + unmap_vmas(&tlb, unmap); mas_set(mas, unmap->tree_reset); free_pgtables(&tlb, mas, unmap->first, unmap->pg_start, unmap->pg_end, unmap->tree_end, unmap->mm_wr_locked); @@ -1257,6 +1256,26 @@ static inline void vms_clear_ptes(struct vma_munmap_= struct *vms, struct ma_state *mas_detach, bool mm_wr_locked) { struct mmu_gather tlb; + struct unmap_desc unmap =3D { + .mas =3D mas_detach, + .first =3D vms->vma, + /* start and end may be different if there is no prev or next vma. */ + .pg_start =3D vms->unmap_start, + .pg_end =3D vms->unmap_end, + .vma_start =3D vms->start, + .vma_end =3D vms->end, + /* + * The tree limits and reset differ from the normal case since it's a + * side-tree + */ + .tree_reset =3D 1, + .tree_end =3D vms->vma_count, + /* + * We can free page tables without write-locking mmap_lock because VMAs + * were isolated before we downgraded mmap_lock. + */ + .mm_wr_locked =3D mm_wr_locked, + }; =20 if (!vms->clear_ptes) /* Nothing to do */ return; @@ -1268,9 +1287,7 @@ static inline void vms_clear_ptes(struct vma_munmap_s= truct *vms, mas_set(mas_detach, 1); tlb_gather_mmu(&tlb, vms->vma->vm_mm); update_hiwater_rss(vms->vma->vm_mm); - unmap_vmas(&tlb, mas_detach, vms->vma, vms->start, vms->end, - vms->vma_count); - + unmap_vmas(&tlb, &unmap); mas_set(mas_detach, 1); /* start and end may be different if there is no prev or next vma. */ free_pgtables(&tlb, mas_detach, vms->vma, vms->unmap_start, diff --git a/mm/vma.h b/mm/vma.h index cca7553c7d641..bb7fa5d2bde25 100644 --- a/mm/vma.h +++ b/mm/vma.h @@ -167,6 +167,20 @@ struct unmap_desc { bool mm_wr_locked; /* If the mmap write lock is held */ }; =20 +static inline void unmap_all_init(struct unmap_desc *unmap, + struct vma_iterator *vmi, struct vm_area_struct *vma) +{ + unmap->mas =3D &vmi->mas; + unmap->first =3D vma; + unmap->pg_start =3D FIRST_USER_ADDRESS; + unmap->pg_end =3D USER_PGTABLES_CEILING; + unmap->vma_start =3D 0; + unmap->vma_end =3D ULONG_MAX; + unmap->tree_end =3D ULONG_MAX; + unmap->tree_reset =3D vma->vm_end; + unmap->mm_wr_locked =3D false; +} + #define UNMAP_STATE(name, _vmi, _vma, _vma_start, _vma_end, _prev, _next) = \ struct unmap_desc name =3D { \ .mas =3D &(_vmi)->mas, \ diff --git a/tools/testing/vma/vma_internal.h b/tools/testing/vma/vma_inter= nal.h index f50b8ddee6120..0b4918aac8d6d 100644 --- a/tools/testing/vma/vma_internal.h +++ b/tools/testing/vma/vma_internal.h @@ -1131,9 +1131,9 @@ static inline void update_hiwater_vm(struct mm_struct= *mm) { } =20 -static inline void unmap_vmas(struct mmu_gather *tlb, struct ma_state *mas, - struct vm_area_struct *vma, unsigned long start_addr, - unsigned long end_addr, unsigned long tree_end) +struct unmap_desc; + +static inline void unmap_vmas(struct mmu_gather *tlb, struct unmap_desc *u= nmap) { } =20 --=20 2.47.3