From nobody Thu Feb 12 14:09:58 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 B8B235BAFC for ; Tue, 11 Jun 2024 18:02:30 +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=1718128952; cv=fail; b=gUzGBvCTeDGgt0+QtzU0iL2u0tavn2TCXtbtqcK218TFIQDgBBIH3buS7fjHd5gKVh7zUC+r03RLT7in2JBPehrrLEEh/i//AWBra0+ifkuFgC3xl7Sa5Sh9GzR9kegy57S0Odjaj9z/nfEwuvLSrvdwC6vFAK3JphGvgj2uq4E= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1718128952; c=relaxed/simple; bh=4VUH6eOcgj3v50+VJYmKRW22tvtCdaeUnjLspnKbGOw=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=TlEmqS/itsTXWuwXKUg4BmpYTXdeieI8ZhA8iw7cGtVQtcVi4eWa8W6n/5sbrTJQCJzZ+c/TFd8KUBxkyVHjNzaAMhN4b+jWshVF9BAQJex/Lo/lykyQIkFr2ZXZEb9nsftKqf9R1WEw+cY3FMRHR8/c8waUdaA3LLVbLywq5YQ= 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=QctTmyc9; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=jc1l9UvA; 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="QctTmyc9"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="jc1l9UvA" 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 45BFpgU8011740; Tue, 11 Jun 2024 18:02:21 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h= from:to:cc:subject:date:message-id:in-reply-to:references :content-transfer-encoding:content-type:mime-version; s= corp-2023-11-20; bh=yZtNmjgp45nBvcrKWhMfvI+CwKTBuCGsX2QgazNsKzI=; b= QctTmyc9D8VzkrnJ6Q+WBC1AGrLbtMDmGcpjO0fyPdSmW0+OdKMtjRtj7D1xOeMc szq1E9SZHOML0Aiz23R09RJs+u6z9QM8JAUcDOPRTjB/7EeLeKoHe/jKw3N3iALi qi7H2qNmDWKuKodGGpPD3Bvn7jqe9UoqnvXlm4qVtK5OWqxgQvVm/XCM1eB6lbzR OcTf418xYaSBtRe7NmUY8+zc/eiu6s+08MLQwQ5mikKHKxiteMUtUhnFLnQeDRGc u+JMKaeZYddbzBbcdm8t/x41hm6LBSRc5IbcHviS0CnjVoda5arFxYcnamzfEZ3H eO6ijbYftJxmaVm1tDtmaA== Received: from iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta02.appoci.oracle.com [147.154.18.20]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3ymhf1deq0-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 11 Jun 2024 18:02:20 +0000 (GMT) Received: from pps.filterd (iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (8.17.1.19/8.17.1.19) with ESMTP id 45BHw49x036562; Tue, 11 Jun 2024 18:02:19 GMT Received: from nam11-co1-obe.outbound.protection.outlook.com (mail-co1nam11lp2169.outbound.protection.outlook.com [104.47.56.169]) by iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 3yncdwm7x9-2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 11 Jun 2024 18:02:19 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=SKHXFIvwp3WVGSoLYjWqtzhiBZk0JPqKeZUQNmYD8JLx593Uj/oGXTFDsOnHaaBa3R+rcbMADd0lisbBV0lHTlo+bGd5++vR0mOZ8eT7QjjzmlRfYMLpu897u84Yiyacy13++QEF0qJ6Etb5PDn6V/1MnREQOe1JNqdrOFDMh8EJGC6U0T7Um+H98u4PC9lmptV/Hl92OBnb4/qVzEti+4ZhHDzLMXwMsUF6NuBGYTBlTerFR61l2JvbJNnqvCgJTCBaipgzTb1p7KHr4UzwbYACltlobjcvHBtHn19tZdzuIaTXC75qr36YRgb9ehFxiFr+SIiJqSVyzr+KY/Em0w== 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=yZtNmjgp45nBvcrKWhMfvI+CwKTBuCGsX2QgazNsKzI=; b=lnA3HkaF/LXGap0FlNdKVGQJorgMuZUKtABTCQ+1WFhVMkOzCU5k8CehyKloQpHsX2+pamNa8OCo6yWlmTUwThaKWQgBKCOeGTNbjquE3DJpVRBo7t890ND1IfZ8eCNovA8ss3/Fvn9rO8D6F7B7E8SXkOuag9OunpoEb7Fgq7rb/woGFSknhAtSO3HU/om60Ze/hP0ZGHf7Pxd4lbtDpG42NYnVAZxfwEf0RZE+jNf7vAh3nTPMOqXvOkrVUXk3tkEgQtsemJhfDdUyROfAU7WoQUKNc3NO+CFPQOmcgaOdZjHVkemMlYwrmN0S/2WxCcgbXNJfnzfPnqcxIIZdxQ== 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=yZtNmjgp45nBvcrKWhMfvI+CwKTBuCGsX2QgazNsKzI=; b=jc1l9UvA5dbMfJ+GSXNWdHPON01O1OLoVpM8i0HvZufnClhnIZPMW3JcDnS2mGA3p4oK2OEBffW2rIno/l1soL+2ht6awEPy6IfJXoT/e9ztrYd7DH2nTwwwuXb+Mu+h0U4P4GoD4sWWgFAObggmLYt1jvcq186hprYR1si7NaQ= Received: from DS0PR10MB7933.namprd10.prod.outlook.com (2603:10b6:8:1b8::15) by PH7PR10MB6154.namprd10.prod.outlook.com (2603:10b6:510:1f5::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7633.37; Tue, 11 Jun 2024 18:02:16 +0000 Received: from DS0PR10MB7933.namprd10.prod.outlook.com ([fe80::2561:85b0:ae8f:9490]) by DS0PR10MB7933.namprd10.prod.outlook.com ([fe80::2561:85b0:ae8f:9490%7]) with mapi id 15.20.7633.037; Tue, 11 Jun 2024 18:02:16 +0000 From: "Liam R. Howlett" To: linux-mm@kvack.org, Andrew Morton Cc: linux-kernel@vger.kernel.org, Vlastimil Babka , Lorenzo Stoakes , Suren Baghdasaryan , "Liam R. Howlett" Subject: [PATCH 1/8] mm/mmap: Correctly position vma_iterator in __split_vma() Date: Tue, 11 Jun 2024 14:01:53 -0400 Message-ID: <20240611180200.711239-2-Liam.Howlett@oracle.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240611180200.711239-1-Liam.Howlett@oracle.com> References: <20240611180200.711239-1-Liam.Howlett@oracle.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: YT4PR01CA0365.CANPRD01.PROD.OUTLOOK.COM (2603:10b6:b01:fd::16) To DS0PR10MB7933.namprd10.prod.outlook.com (2603:10b6:8:1b8::15) 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: DS0PR10MB7933:EE_|PH7PR10MB6154:EE_ X-MS-Office365-Filtering-Correlation-Id: 3a0cf05f-4e94-489c-1895-08dc8a409f3c X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230032|1800799016|366008|376006; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?kiKnC013rKU4iQ3z/Vm8ELBaaMVJgNfWXi+4tdWa5USO1q+D6iQUmZtTH1to?= =?us-ascii?Q?edS0GuEOpYdGiBRV4LvWFKF9uDiznu9RrHMlf78MeMoVAErsGXEZ1wIQSbDV?= =?us-ascii?Q?b9NirQrzDBK1ZXSsywBPlV9hVV6jzSkV5r0kmlSOTiob/4zMo9q9uCNQnQ4E?= =?us-ascii?Q?aUnZFw2Ephyj6Drjlc2fTbmfolduPTP/ZHlEZKctpGRrdPFT87lUrYrsGK47?= =?us-ascii?Q?8l2U66gP2LjbawHXecHIqmL2PFsG/oHjr/Sq7Yvcm86nBcLtIrS5qa1J7CMj?= =?us-ascii?Q?jhQNaT6VcWAA8SDGnhaGfdwv3zjYWO1Ro3HrfQLAPMut9kFlCa+OiX/VTmCe?= =?us-ascii?Q?P5DRdCuuprBiunUCAN0VA2JPqWLUH9tA4rIXlL/WPkoeaTmzweYMubtfBF4n?= =?us-ascii?Q?C/Yckk2vLvImxAJGFEBQSGKinUna10eCvi5lNIHO7rF10ZAsHGoV4eRFZeWm?= =?us-ascii?Q?afVtnsDXHEqT0AyUgFzzQyPNcTFAfPo0HY4g6iP6/NnVLaiDptGX0EwzTXDV?= =?us-ascii?Q?8MuGSnryMRhLTTimMzcrDY61ad3mW0e+vqLeJcPrA0XNf8FAlBX7e4zW+SJY?= =?us-ascii?Q?Qw2wzVEEWKsOqI+jkT/7g+gvHGrJZhzo17q8vlFG2CxkYGPJox29NPl8CYn4?= =?us-ascii?Q?VpbRgtgwiavxXn9DpVPA7IyjcVMGBCytV4UfZFqRWTAGeSa3CXxKlaZrBBH6?= =?us-ascii?Q?+cNfutpfVwfHzLpbehrv1/rexwGq89OwwV/356L2lQgMagyyssyYyVPsGauw?= =?us-ascii?Q?S3LmGUUqJR2uFr+kQiBDmLosbsi79WTTc4vzFX45fN0OrJJtLQLTadnhXf38?= =?us-ascii?Q?6yDSlB4gq1MGyN5/9H4VP7DdIDNittAttfCWpdyWMu/Y77E2wa4Lp3elqv2c?= =?us-ascii?Q?2dvRSJlgufpzTpMN7BvyjvI8ajLVJYI48XsJ/BqT3u0mMd6eitg9EmRmRctT?= =?us-ascii?Q?3Hg97ecWqgKANsb96HaGQmFuLmuePqcUkNiugF0G3MlroHPDgVZzRRm96kol?= =?us-ascii?Q?h+SgO8AOgx3cTVn+D1zSNgsSDb0NsKHtjk8MCmu2/OaHQ31i6m3Z5FpNbIgh?= =?us-ascii?Q?JgkdmUkOYAmtjOO2tT/OapJP8j9IZpWvXd+uxhDj3Hp96Fr/F2RCsQoKRmCe?= =?us-ascii?Q?okWAjKlYC/kVtHsBkAksz/xmHbzmkdLQlbqh0AGT+YPfiSMyOUvO8GCBRVHE?= =?us-ascii?Q?0XUG38mdbAWzBXxo71OF+NqmBeagX7LbOOo1zMxuGQlgZfS/12UN+MJ5dvmb?= =?us-ascii?Q?vLDfcYeZIosF+chy61URV+ZKrBwGcXcUZxIsnOvPMppxmOKSVaTtbEXmgP01?= =?us-ascii?Q?Baz2omujk2XfTyFq81OYvMW/?= 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:(13230032)(1800799016)(366008)(376006);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?dpYhx8LsRli+OZEUTojdC3v47BLOqRweV0dccCC54CySJNTE6idx3rpYBcWA?= =?us-ascii?Q?7yc3eLVSEKwifqOoZl/zQa9NEfJVJd5EHgPHF2XOavnJrdWNNOjyY5XPz+ZE?= =?us-ascii?Q?HQRt5khQTci+bC6Gnz1v5yhFhdh5Umuhk4d3V0PmWHi3VE4m0GHb7r1Eewms?= =?us-ascii?Q?DqHbjc0DJ0W15hr0sqyNPwjHdur1uUUtvQ5hRUuUTAvq6yoCGKBbpuMHBaxI?= =?us-ascii?Q?XR0vhK62BH2WTj/04teTMzxgVlG7yafyxgnMjFDhhnZJVVmlRBygkwcXbuEL?= =?us-ascii?Q?ubw7XSf47Guby46LB56KSf4CoTHaqyegJxRU+yluarAzaYONwRJA58K08mlV?= =?us-ascii?Q?5PmIzolNilHg9AKOb33JzfP8SbKvGwf0mRi8OtsC3XQpF/VYy2RX6XRGfxYS?= =?us-ascii?Q?kbOGZeZ7qSGlEdeI8no6+8IN/7qUyCA0iQ3/TKgCDm/pXF5lWrMUc3FZlEEy?= =?us-ascii?Q?td0IKeE+tV62g2Ra5mjvRiyilk8/p1KM8XVZ3PO+BGxIrHSTOxY6cRq6tHm1?= =?us-ascii?Q?H3l2Q0DM54/TzMgIl2ZIuKfI7W1zOS3fYc10r1m55KcARay85DGI/AMl6E79?= =?us-ascii?Q?ize4ZHXajtnMkFvs8vAMuCHCON7PpZ/G0CoN8uI/P7LHdqPB8R7jXptNr3oo?= =?us-ascii?Q?gc8uMuYdMUEbncPTZ52ttwLdbp9WWmTm+WiheMI2WifMjP4bCrjvET8Ywroc?= =?us-ascii?Q?+9r+pKUHuUCYyXwfPn2SkkCV6lJEFy6EAXm9PpdrdurIzuNKMNg8jHIMrZIK?= =?us-ascii?Q?FEA9BHkCpq79sRAA+Bzhs6ikpE9nvbqYElyjTrWf87EqX1UGqSf/lY1nnHpM?= =?us-ascii?Q?8tTpwdUp9b3FfNwK5Oq/ObDcRhllwmwTYy2N98L1Gwd+KgmDHS8PtROvfj0t?= =?us-ascii?Q?U0zCME/DYictidRzldTjI/vDgKzaRU/hbnJXQbvdvS/VZjQbN3U4DvMV1VQb?= =?us-ascii?Q?Xk9zOtjK1F0db1QBd8fQeCBzyjMo++J7bL1tP52KcvKeftbpDJDNFxILwrea?= =?us-ascii?Q?xn9B4lJpYNi1FzofCtOznxpRDwqQT9kPNy3INES59m5ocMwMM6lwYtV7gWb9?= =?us-ascii?Q?dHNxFmjJWZ4YIiN2wQdTr1HtG3v2muKEgPqCvhZwCizwW6nUAiMms6pjD0Sa?= =?us-ascii?Q?3WKZ7VL8wGw8PQLSkA7kJskzUwXlOMGj9jrF3fdCpw10SAtgmbfumdR5CHBf?= =?us-ascii?Q?SBV+BUbD61A3LOdemmDJnzDwNvcg0EBez7B8LhpK7+YpLNJH2Yn9dWuqssVD?= =?us-ascii?Q?8bN4y2Pdm0ozpuRhOZiX1vrsHaqNyLhB/1WZJpt9fIkqQHVG/2hxbAdr9ui/?= =?us-ascii?Q?lsKRjYfH/4x2jfAkQbsEHTSBUKuvh/7v/mMrwHjFDLpkOCVcvK6ba+r7BuIm?= =?us-ascii?Q?s2iMtMzYVxhbpeSyfQ4CQmvyq5pRuwnWBVj370tXJscbxG+1F1DJqazdU9G2?= =?us-ascii?Q?BWNrEUD4PIutnpEcUXSqeofyAHgOK+QjOcTNQGYkNUTPvYnczlYZD9sZNNx2?= =?us-ascii?Q?4khszwDAu/eAKSBvnBdbKfbAVmbIwtsD6n9eqV7kVpbHBisAGbPxz5rxTk1H?= =?us-ascii?Q?p0nY7ekb0DcQXwd1UIzR7Kz3qn/hUWwbphxKzCyj?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: FLuxJIL3q5BbyvwT19+DI4s0L/p2VE40Nb4rxY76PZZ9h7ClvwF4Nks75J+J2Snc021FtI6m9jTNJF3LtiB40aOMF5Z8C0wrkwSscLicp3051lC1Rpv0BDPk/O1C+L5fBZOK2vfLCNhkiHMTtJiTSZyFyDk52U1m6769eneWPIjjpB4uqmg76NH8Z7+od2eKAN2axJzxdj3dLaKMhfinKxiAx711zImTlCrtuTqO7GdSBl3WVImkF4NKnw3ad/faCIOWyvPYN+jbCwEnEgwiio7o/CxMo4mmIdHbRFF27clwFe+uplay+uuLYNIocpP1tmedWhHtBlEtvwvwIk1wc/soFWzYmkV1Cq3hHAPIg4isPmtEBot8QBwm4lIjkfPdZkFzhzWkHR6duLa8Q7cBVc5n7v0krHx+OdbGg2TkpBpNAltxZWJRQMwRJD9gUP+weni+3imuAqAa1k7XCf0uX/zc0ONnfLHxuILeYplNQTa80DDYG7FJ/ceAiPvQ5YRvEbZrrg5UiJpAogarIkmZS6L2VHxiEvFuvdsmbu6k3lgP0go4ouHGRIyu3PCHxTVoLWzPI5hwssjJFWP9KpQH7Me5SIMplBpJZkAzWDWZa6A= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 3a0cf05f-4e94-489c-1895-08dc8a409f3c X-MS-Exchange-CrossTenant-AuthSource: DS0PR10MB7933.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 Jun 2024 18:02:13.4729 (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: rQH+QAVyhJx92e0WPpndUkPCkoJFKb5x2KD0nbegZKbEKlbrAT+65U4yb4riZKpS2kh+MBruhWtckb3hvNqzbA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR10MB6154 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1039,Hydra:6.0.680,FMLib:17.12.28.16 definitions=2024-06-11_09,2024-06-11_01,2024-05-17_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 spamscore=0 phishscore=0 adultscore=0 mlxscore=0 bulkscore=0 malwarescore=0 mlxlogscore=999 suspectscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2405010000 definitions=main-2406110123 X-Proofpoint-ORIG-GUID: 0BLUpLgXEXAEoUgB2Qwq4M8O7IMkFslZ X-Proofpoint-GUID: 0BLUpLgXEXAEoUgB2Qwq4M8O7IMkFslZ Content-Type: text/plain; charset="utf-8" The vma iterator may be left pointing to the newly created vma. This happens when inserting the new vma at the end of the old vma (!new_below). The incorrect position in the vma iterator is not exposed currently since the vma iterator is repositioned in the munmap path and is not reused in any of the other paths. This has limited impact in the current code, but is required for future changes. Fixes: b2b3b886738f ("mm: don't use __vma_adjust() in __split_vma()") Signed-off-by: Liam R. Howlett Reviewed-by: Suren Baghdasaryan Reviewed-by: Lorenzo Stoakes --- mm/mmap.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/mm/mmap.c b/mm/mmap.c index 83b4682ec85c..4a9929bc18bd 100644 --- a/mm/mmap.c +++ b/mm/mmap.c @@ -2373,7 +2373,7 @@ static void unmap_region(struct mm_struct *mm, struct= ma_state *mas, /* * __split_vma() bypasses sysctl_max_map_count checking. We use this wher= e it * has already been checked or doesn't make sense to fail. - * VMA Iterator will point to the end VMA. + * VMA Iterator will point to the original vma. */ static int __split_vma(struct vma_iterator *vmi, struct vm_area_struct *vm= a, unsigned long addr, int new_below) @@ -2442,6 +2442,9 @@ static int __split_vma(struct vma_iterator *vmi, stru= ct vm_area_struct *vma, /* Success. */ if (new_below) vma_next(vmi); + else + vma_prev(vmi); + return 0; =20 out_free_mpol: --=20 2.43.0 From nobody Thu Feb 12 14:09:58 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 9519459155 for ; Tue, 11 Jun 2024 18:02:27 +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=1718128949; cv=fail; b=cc3x7/bWXx+/l+DAOKPgCku4fPD2bSAN1SrJNZ32I7mWCpH4xrLanTTXrQYFtN6+5S/XPTTPJvBvXHNQ2kaaVtcsGIwmEI74BeU6puo+88/+Z35+g3o1T7aSALN3rIsws4L3e1F6P8EXe9iTS0w/rtWgiHY5K5AjQrhYTDEDIyI= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1718128949; c=relaxed/simple; bh=LETSl4nVh7EvsMCDkjA0LHVCgEsZ/KEoX+fhPqA0Nvc=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=eE9cebA5u0w7z5GkflNfmzCWcnLifEhB9KjKAYcw3tC6TR9QQe2RzcrUsN65QDPuvt3H7kqySuT1ZT2caBL0gMUYgtV0ZQPPY8Ubj7YAKenfw/bRwDPm8KX1hmW/hheqPrQkvG4pvbrPhO285DoZTlmB/1g2lhs9U4IqFyLQaTc= 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=Ej6UaA7W; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=cm0Rg7oV; 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="Ej6UaA7W"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="cm0Rg7oV" 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 45BG26sZ013369; Tue, 11 Jun 2024 18:02:21 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h= from:to:cc:subject:date:message-id:in-reply-to:references :content-transfer-encoding:content-type:mime-version; s= corp-2023-11-20; bh=i5vn5hEThji5R3Byq/r+9qaY6XKYUCF5aSw8TtdOQeU=; b= Ej6UaA7WakWII7uGuPy7cXC9fUSaFgHeB5D/xp+Hwp+jSxLerbqDEl5+3EqLSxIg TdfNwX+qKyeiFeMz2WC5/ypf6L+lVVxXsvqPBw6sKjjcjjFileWAgUjEO1+SbBoi M6yITD2QLEBvRcf4pRmHPz+ymVYkowZcKGaWJdboafuiTIg+zZ9W6phZh0rl5AGl CXsB86zSHUQwY6XYBiRFvaHu3bbPQYmoBAwBB6HI0j7/h2yLcLLa3Q+ZWeMuYd+E ANm3S1g4qVdl1Un164s+J4ZXF+RvNxivzr1fs+DreNAIp3F+U8C2MBQbasXIZudo ZxHU5Ojdgg6jDsFHNyqnQQ== Received: from iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta02.appoci.oracle.com [147.154.18.20]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3ymh7fnd8m-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 11 Jun 2024 18:02:21 +0000 (GMT) Received: from pps.filterd (iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (8.17.1.19/8.17.1.19) with ESMTP id 45BHw4A0036562; Tue, 11 Jun 2024 18:02:19 GMT Received: from nam11-co1-obe.outbound.protection.outlook.com (mail-co1nam11lp2169.outbound.protection.outlook.com [104.47.56.169]) by iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 3yncdwm7x9-3 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 11 Jun 2024 18:02:19 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=CCb/vI/aeK5isp3V0Z5w7nWwg9vs5Ut+vi1TPg90QZUnBoaZPb0x/y79jCyyxQe0CcPNHAYP0vTLAr0y2/7FhLApQpFZ4s3LJtEAS03ssM1m5CswkzYmnp7dg4wREkbUE2Ecd2dkLhDVGLYBpNu4a9iKWhlZ3OQ4QjnhjCANg8e1mdSh5tTf/blm/TJYEBL9X8PL1KwF6rFeEoC3is8OuoEnA92hno4lCX0feiR+xoORROpufmWGlgqvA5w2VlsMJ4KoqGPWfcIcX0Q7ubL1XiEfDeAyvS8folHDrAmSxlD4SH+zb5/nmyt8GVAorvD4MvN/vH2Q2U0sQn8mnyglFQ== 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=i5vn5hEThji5R3Byq/r+9qaY6XKYUCF5aSw8TtdOQeU=; b=ad9qPwDpFMuqCHnqmteSxOuH8MgpcPjndM0FIckRfdIOXuSrlNrxSJJGysXO1trz7WqxJX+aeBNsykUS837o4cuHEPB6xEi9wa6pfymyVzMJW94mcCzbYqrGGfHddt4y5rGa7oisvWDzxg8mkf2N6RKIhzr6OEfJ+y3GpUTCm1WNfPTLM8P2U4qNbDn+bXG9dQPDvCjsmxgeZNO4QKXUnpVhQCDzPpqhv7ie0j1NRGWdHveIgzVglq5i2qCJMOlKTr/8GR6bjYxav7/giSkCUHTDCBCpVYmd3TNbT0LzrOxpS2XQuWLGU/8wE8XfJrj1TJoOjQirec0+ZIpgmu1puA== 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=i5vn5hEThji5R3Byq/r+9qaY6XKYUCF5aSw8TtdOQeU=; b=cm0Rg7oVqMPQSXmbgmL9MwkD/91sIJlzjrxd4cEWt2e9flE+2yTftSY8WIJPzeBrd/EvU+Gu/s0CcfpaSbzKFSvzRe+WLGxU+lk7ORFhPG0yzGcA9Rus6mCgjLXk6R5Uw3nOwFTO/ryWdsnZEsE4m5vDRMZOK21IqlsdaNaOL58= Received: from DS0PR10MB7933.namprd10.prod.outlook.com (2603:10b6:8:1b8::15) by PH7PR10MB6154.namprd10.prod.outlook.com (2603:10b6:510:1f5::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7633.37; Tue, 11 Jun 2024 18:02:17 +0000 Received: from DS0PR10MB7933.namprd10.prod.outlook.com ([fe80::2561:85b0:ae8f:9490]) by DS0PR10MB7933.namprd10.prod.outlook.com ([fe80::2561:85b0:ae8f:9490%7]) with mapi id 15.20.7633.037; Tue, 11 Jun 2024 18:02:17 +0000 From: "Liam R. Howlett" To: linux-mm@kvack.org, Andrew Morton Cc: linux-kernel@vger.kernel.org, Vlastimil Babka , Lorenzo Stoakes , Suren Baghdasaryan , "Liam R. Howlett" Subject: [PATCH 2/8] mm/mmap: Introduce abort_munmap_vmas() Date: Tue, 11 Jun 2024 14:01:54 -0400 Message-ID: <20240611180200.711239-3-Liam.Howlett@oracle.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240611180200.711239-1-Liam.Howlett@oracle.com> References: <20240611180200.711239-1-Liam.Howlett@oracle.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: YT4P288CA0026.CANP288.PROD.OUTLOOK.COM (2603:10b6:b01:d3::8) To DS0PR10MB7933.namprd10.prod.outlook.com (2603:10b6:8:1b8::15) 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: DS0PR10MB7933:EE_|PH7PR10MB6154:EE_ X-MS-Office365-Filtering-Correlation-Id: 3559d057-bcf3-42db-9883-08dc8a40a082 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230032|1800799016|366008|376006; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?PQFqcV9XLaS1dyRm2KHuEOfQz9aW00Dw++3LCyxMQyVmRkYLUMj4yujGv9Va?= =?us-ascii?Q?BcFruDm7U3Naz/mu9voql9HP/D7ASJvSpgBlolSlAGMC+F4b3PyBXVst2+w2?= =?us-ascii?Q?qK1QD+zBheaSecIRbLjJJZBvy977aI3w1pKjLsPAS0Wgbm1a3NYQjGVy9PsB?= =?us-ascii?Q?aNW6YA6ajii9dGR4ZH2XX/QAtvkppbUO9OdtTWfCaHLD1i++Z2/NUlsF/evc?= =?us-ascii?Q?USSBnxYKca0rixEiTbRYAm7njmirF53w0ZaMSIS3SQ4KJOQMBW5AnlUhLoGC?= =?us-ascii?Q?zEgEA7FZcwx52EhCFirrWMtN7qS/TLzjGfpW8Sqp890hEqXceF5cT+YsJaU8?= =?us-ascii?Q?6y0kjyVI2s5duvKbCo+RSw4wTxvFzeUZgzWkG83Y1zIFf9MCaVZ581CUHch3?= =?us-ascii?Q?xejyTA2r68/6ncMH+Ri7KfaZ+TMxBOx816fOK13TRSzcQBwiQCKTVu68PVA6?= =?us-ascii?Q?i84B7abT8p8F+QSWxMX+B94uQwgSncP6uz6KOirRLNH4zH2CgT8KaQBFMXp/?= =?us-ascii?Q?k9M4lIyTS+ATljOPeYf+7RwxVI0BKKcDFD3ww+ueU1ARazMR0uv5T0YSErE7?= =?us-ascii?Q?R/rohaEvzGTCSu42aNQg47sftoxODxMmfMzYFNAVDZL6b97vflHPtKoy7IAj?= =?us-ascii?Q?BMpmCsINlscyWVYxx5kGgWNZo+6DXwcqXRCk3ApEpSssyUNzZ/ET+MGKx7a7?= =?us-ascii?Q?3LFaFKeMg6WxFTStzSab5Ocwp5qz5mDjsvFkNFLxtlmdNF/m7pOZw7I2RnRp?= =?us-ascii?Q?GiRe7HpMCWh04w4f+yOr41ZWq4Ysq4+20srtRVwWuiB0gvWRxtorahkKrq46?= =?us-ascii?Q?aSIyZTe+vErQYI5NCkAhS3GJdmKnZDhC9v9DyjN74aLn+L9vrGqo04S0Qgkp?= =?us-ascii?Q?uxp1TEYq4LPLdeHl9mOKWvnW280biEQpz70IviMlOIAkxi5907DYXrdRl/eq?= =?us-ascii?Q?12811J6RiMiEsrqOiZCCuGVgCJeNVLEqGznZWzBQgpQcuD6kF0RENAXcPeCx?= =?us-ascii?Q?dwwGZObMcgN4rnIfqgxjqxQB4HvICCFVwJY4vgXHYq7txTX+UAV+ulE18tUS?= =?us-ascii?Q?wPabVJdSnX5jg6NP4Rv2Mx93O9R5qlOzIgBHgzClPyvpgJaAVk5eHj7pVz9k?= =?us-ascii?Q?ZwzD9Lwv0zkSEp80eZaz+cVLflm+s1s84Eb/5v/BdiO7vil140fesAk/axXa?= =?us-ascii?Q?AsKyy33F3qljbOXX8rMKPESXRYT3OfldZzDmRR5iVJcPJllaaxWvK0FN2ZKW?= =?us-ascii?Q?BQ1UCuSYOBbMxjfq6rlyZsNs4JfC3VXWg9jYJdBLF1DcK6NbqYTgI8maQZYz?= =?us-ascii?Q?taFx0HBcJwUJqaai0zqtAmfh?= 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:(13230032)(1800799016)(366008)(376006);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?XmYJ0Fq+APNLE24qeLX8/8dbZn0E2QxmMIPSM8XDoRu+qOsH+oFfPhXvRhI6?= =?us-ascii?Q?HS/N9LXPlVMwuTz19bNamSbSFoWEbivl8Sf+S2cLde2C5JXvRi3/iLfSiNxz?= =?us-ascii?Q?Poklw/ZB1i9x4RfdSIK3B/fyEvTXAuF07wfdkS+Y7/HPsjBbXKm8Y+rS7rbx?= =?us-ascii?Q?33k1F0JSYRpwMn+BDYsyNL+et2Mfuo6GQJceP5kaA/w3sOF+Vc93z3DARjcE?= =?us-ascii?Q?WBysOuYJnBnmEbx6vSoJ9G/E/0azvirOKXN+Q56thU5Fztw4frp40RbVxg9k?= =?us-ascii?Q?XAYISdH2Izw+M4eLTr/0FKhNzNO3ICAnOOsMUL5g4mKbWh2m1oc++3anJHiI?= =?us-ascii?Q?flk9MuzO4EwzxUTXKnA7AbElwd/Y1WTKfkgE199u81VnWZjMU8bxD5pE4a9a?= =?us-ascii?Q?Lt8fcCoHmGjgFaktoxrtS6lNs7YGRI+duh+Y0VBf5sNdFKtvwBu6O/C/tB7W?= =?us-ascii?Q?J4Esium60M+XRaC7WpvqazCfSwVFm9uY7NS1nQ61qSUipa56XL9O/mKyamlS?= =?us-ascii?Q?ZCf12u7XnaCEz0OTK8SEAqzsSByaayM4AQe0rAe2cBARUIaxNAOWnV0DbTd+?= =?us-ascii?Q?6zB2fhxuCjnqiBmVd7y3haLmKSUGlIzZXC/IfiIJ/gfGVgygy9sjNDNgEXJI?= =?us-ascii?Q?c2tJ6W3P126foF6e5L2npBipD51OoqE0en7YjAiOpY4v0zpm27laYnKzMLl0?= =?us-ascii?Q?InY/15o7Yjjozw17h0Kq1d9pyMEDRvfrFNoHJAI+I2yTV59X/8Yd4q8MpkvV?= =?us-ascii?Q?AmDW44533W6TldF0DUNGG06+rascJI4Z+tvMV4b9Ine6WhXUa1IDjolPC4P/?= =?us-ascii?Q?kjSbVU6gZkHM9AbBgtX2/mM+3jVVznwYe0PbsVi957x6bhKdZKafi6uOcOQI?= =?us-ascii?Q?0XUSyh9xLwJ7ugBXH27wJ7Y955zJaS2pZUmtx+6fI0vPTx5+eYwNFwiXIQHB?= =?us-ascii?Q?8MJgbWzzoeyRxRAXxcXryUh+jRxWvfuqkUMO/+yYYUzXl4oJ/TJnNM1DzVmL?= =?us-ascii?Q?TUmzcXCJkbowl7bseEXGtI4UiNSz+2yDZQhet/fT0cl9/OhPz6Qe1QC2xhXM?= =?us-ascii?Q?ge3wEd9EFZXl8O1SAuWsVE1QwaqvZNyAvmC8ZMNo1BFUZWOGnitv4OzUk6A7?= =?us-ascii?Q?APi1OQAqQTCUMzrHAV7Gik5Epr/EED/1qyx9+wd7Hy0UVyjRmLpB34cUQb00?= =?us-ascii?Q?ovDUYyhyv337DgK3bNnDra4teRg7gJRWOuBHc0vIxeSOHVtcDjd6sTJz7Rn+?= =?us-ascii?Q?gFxpJlqB8AOFPDPUfSvnrtynPNzvEfcci/kjkw72JoCb2aaK2End83peF3DI?= =?us-ascii?Q?HoMkaCG95VzUcFYzCMpE4xY3EPUHcYbFslq4G6efrGsRtA92GFyFJbwJ/Itl?= =?us-ascii?Q?XDAiU7fww6ORZqh5cR6mugBWDKBeiyj+IBjG1AMx4BhKSECqKzHHOPdzI+8o?= =?us-ascii?Q?M/mOIwKIP+krCuHmWdVVFVGCy6fFXxlFMnO0MZHi2MFr2zxSLlm3XtbfNcOW?= =?us-ascii?Q?vg2+vksn8fJ2WbPTUgNrJhGQz12YVPp46hzLf3zGbiLOXh692avZuGiOkZUk?= =?us-ascii?Q?Q3468z1kA+dA9E30/1T4105ftuVqtU9NWfTkzDIK?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: /Doz1UG7dPkqjElFhDk0LKVFTxdprTCnHKEdUgXZOIQKbw+pcCPaDWlefBHJBWdvon/1cNssvUfuefIzHdBN/nMtdtMi8qsQMoTkOEUxeMmXCDQfEHXtsflV1Fz8JWwerwbA6gUkmBM+q2XIU88YEaTl8YAGZCWIdkL2dv+OCRv7dgfbQRZKvvEztwPW5Uh7l0VrHm/Ayau/uxJJdRi5Tq88IT7p4NaVTEVsULPiQccZHYXY9lItwMWZDsZtni8D0+9T7GMvmC8HQobmcc17L8fKgqaYKt2VaBViSPZln5zoKNy1szlBkBgtAhd0v9ujfa/GoYFNH0httWOaE4bd6L59+rA0JczNdoyM5ceha/w9C7GZJpvKngA7JXHRY/a6uIFIRSmiR0cCg8ikbih239/BmSKtBW5Ny1xUhBAT7RMS9rPtk9xqIp2JPyqNsKQTjHMFlNDdD97cPQosDAIpdkrUKratJAnvrkpmpkhSe8fuFIXMbE3nfcg/ggHVJPfmKuGpHWhUgGB7CjJ54LBT2xoRD5YspxWRVcczTuUN2YTkASKd3CbU96MsnvAe9j65HQXuZegwpL4i0eNol72iEbRSAzBOOJlYsKGuUN/Zlpo= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 3559d057-bcf3-42db-9883-08dc8a40a082 X-MS-Exchange-CrossTenant-AuthSource: DS0PR10MB7933.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 Jun 2024 18:02:15.6073 (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: xxOh2QT+0CjgojXEr6WBriv+PdGEYwKTJCmyuWLwXB52WEDwwmDkPxeNnaGdR+lisPQ5l+A77tKMkOMvmX8urg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR10MB6154 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1039,Hydra:6.0.680,FMLib:17.12.28.16 definitions=2024-06-11_09,2024-06-11_01,2024-05-17_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 spamscore=0 phishscore=0 adultscore=0 mlxscore=0 bulkscore=0 malwarescore=0 mlxlogscore=999 suspectscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2405010000 definitions=main-2406110123 X-Proofpoint-GUID: ViI8sNpOhNVne46ufb6JpFJJwZAeuOJq X-Proofpoint-ORIG-GUID: ViI8sNpOhNVne46ufb6JpFJJwZAeuOJq Content-Type: text/plain; charset="utf-8" Extract clean up of failed munmap() operations from do_vmi_align_munmap(). This simplifies later patches in the series. Signed-off-by: Liam R. Howlett --- mm/mmap.c | 25 ++++++++++++++++++++----- 1 file changed, 20 insertions(+), 5 deletions(-) diff --git a/mm/mmap.c b/mm/mmap.c index 4a9929bc18bd..bcfcbe006b1e 100644 --- a/mm/mmap.c +++ b/mm/mmap.c @@ -2545,6 +2545,25 @@ struct vm_area_struct *vma_merge_extend(struct vma_i= terator *vmi, vma->vm_userfaultfd_ctx, anon_vma_name(vma)); } =20 +/* + * abort_munmap_vmas - Undo any munmap work and free resources + * + * Reattach detached vmas, free up maple tree used to track the vmas. + */ +static inline void abort_munmap_vmas(struct ma_state *mas_detach) +{ + struct vm_area_struct *vma; + int limit; + + limit =3D mas_detach->index; + mas_set(mas_detach, 0); + /* Re-attach any detached VMAs */ + mas_for_each(mas_detach, vma, limit) + vma_mark_detached(vma, false); + + __mt_destroy(mas_detach->tree); +} + /* * do_vmi_align_munmap() - munmap the aligned region from @start to @end. * @vmi: The vma iterator @@ -2699,11 +2718,7 @@ do_vmi_align_munmap(struct vma_iterator *vmi, struct= vm_area_struct *vma, userfaultfd_error: munmap_gather_failed: end_split_failed: - mas_set(&mas_detach, 0); - mas_for_each(&mas_detach, next, end) - vma_mark_detached(next, false); - - __mt_destroy(&mt_detach); + abort_munmap_vmas(&mas_detach); start_split_failed: map_count_exceeded: validate_mm(mm); --=20 2.43.0 From nobody Thu Feb 12 14:09:58 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 209D55915A for ; Tue, 11 Jun 2024 18:02:30 +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=1718128952; cv=fail; b=u1X4B70Zz0Fdpt/PhOw1hcJ+a4k7w0iLViesDkVTf1HNRGXWup7mFnnWO7o/1gHI8ehRKge/gJNWvTjWGQe6HKsQVuFV93/020NRoInjTrZ11OlO4mbbH1CSO2OousMNpm91Yj0FMmMaWL3CvFfNSs1DqdHXfwSoZcLxyORTJNQ= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1718128952; c=relaxed/simple; bh=HDVaGS1d9a/2YRbocg5jMg0cHbMpfbegjwO8Uvg8ENM=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=JUKFjorRBbw5Cb5vga9CaB0t752y83qpfzJPR5jopfrPRySG3MhHYOfM+yut0hD/XXnbMVWfAKL6lU8RiTaElODOg/bXQOUgV3ODcQtMFeD4hyAskfxaO2amzVaepwV7iX1a7TcL5homc2RveOqMUw9SIUBnffh/nTWO9zY95gk= 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=gaYTCc2Y; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=HXdp6LXz; 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="gaYTCc2Y"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="HXdp6LXz" 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 45BFhbwG012582; Tue, 11 Jun 2024 18:02:21 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h= from:to:cc:subject:date:message-id:in-reply-to:references :content-transfer-encoding:content-type:mime-version; s= corp-2023-11-20; bh=MFeZrFP/xFyu1t0ex0f/0sa0iG1XCbNnZL1kUI3f+xg=; b= gaYTCc2YJ8zz2hEutGdQfIQc1SnCUchJsnAPLEg5NceNoeyc2whM4N+rYbMHX6oY eNDB/8gorbnTHhzI1XL+R4BcEOpRNddeL+fK3ThyUnqHBRylLr0557fpS/cMoKK3 W7aJSud7Pze0XjcPHAzoMneeQ67gwtJfRTbcwBh1i3jvvQ47FoTIwbJMhZwprcwO faLHHOT9w4zv1Ku0YlEORygvWT/53ekoz0DuhWiQFIKOP/ZrX1cHWy2WaJq061gr 09heUe8nxirtRBkjQGb74BbH0YTwLpYyMgQwVC5l6BfUEG/dNI7dc+QpWgj5cf1A MdXAdDk3N/M+vyCEvigFfg== Received: from iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta02.appoci.oracle.com [147.154.18.20]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3ymhaj5fgx-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 11 Jun 2024 18:02:21 +0000 (GMT) Received: from pps.filterd (iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (8.17.1.19/8.17.1.19) with ESMTP id 45BHw4A1036562; Tue, 11 Jun 2024 18:02:20 GMT Received: from nam11-co1-obe.outbound.protection.outlook.com (mail-co1nam11lp2169.outbound.protection.outlook.com [104.47.56.169]) by iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 3yncdwm7x9-4 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 11 Jun 2024 18:02:20 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=lxwR8A85G7L39lI2SciQ0aPiXEOfh6zSJcZESo1lI4q/FtdZKDULUiNGc+SGU6oVBVMNaM/JX7f45LJu/ZVJ3uEUGdhIbTZIi1vM9ZzrUkLM/c2W75s6aoB3B4tszyK+GRL6wcqcct3MOrs++KDlV/9Ewe7XQo6PR+petataIJ+5p6C8fD4Oz2fdjDomf71tKNw4YHUfimk+k3ZBdfs5XrLgJ5fStFqFDL34C+IK5hCqa176mDcgtImcP1d//tB0tOPFKu5kQ9RwQbgVJoE1KKer8R9Lbv+r62tWye1Hib3BwMHOXvqySmIczUoKwGeEJiHiUuwmiMt83mwEzK+z+g== 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=MFeZrFP/xFyu1t0ex0f/0sa0iG1XCbNnZL1kUI3f+xg=; b=CEYMwwUOVvBIGvL0/wzaGuEakuRd0MgJ7TeK+96g5s4K4Go43qIPnT+t/AUH2SUsXNNjRH6TkuC3s38sDxKO+2XU3bV0dqmkkzO0/BB7Rz/4ENyhQm5Lu//WZZzGDs94lu0wUpJB63mpQpZkHh2TfxYb7tWr9gPC6bht3NN4zjOfJwzn65FpgOGh2OMgy8IuXDUHFCoBsH7OpqlDf6n9txmnG58yGMAXsEsMEICcFD7Fh//wLU7U5vhgF95xUM9Pp+Ze1WYtHk0BaK2Um/r5r8rZ6HVJ8WQ7zJvVYakV7yQX25xjIVp2veysQwKTShkfw583uJ4sf2Ge7LlhphZRRw== 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=MFeZrFP/xFyu1t0ex0f/0sa0iG1XCbNnZL1kUI3f+xg=; b=HXdp6LXzV9bomxtd+vWVcUaceS8HM+wPtjwJEyPtuOODhwTp8gK1S/Oy7XVxIAsmhofY4tIdurx0veb286HCx6eJJwZs486gJZIBtDSYl/ICp0KubljAuQT/1XtzsJo1IPeBcmHmVvvcXYy1MiNP20OWcDIozPgkkwtVoiNCZfo= Received: from DS0PR10MB7933.namprd10.prod.outlook.com (2603:10b6:8:1b8::15) by PH7PR10MB6154.namprd10.prod.outlook.com (2603:10b6:510:1f5::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7633.37; Tue, 11 Jun 2024 18:02:17 +0000 Received: from DS0PR10MB7933.namprd10.prod.outlook.com ([fe80::2561:85b0:ae8f:9490]) by DS0PR10MB7933.namprd10.prod.outlook.com ([fe80::2561:85b0:ae8f:9490%7]) with mapi id 15.20.7633.037; Tue, 11 Jun 2024 18:02:17 +0000 From: "Liam R. Howlett" To: linux-mm@kvack.org, Andrew Morton Cc: linux-kernel@vger.kernel.org, Vlastimil Babka , Lorenzo Stoakes , Suren Baghdasaryan , "Liam R. Howlett" Subject: [PATCH 3/8] mm/mmap: Introduce vmi_complete_munmap_vmas() Date: Tue, 11 Jun 2024 14:01:55 -0400 Message-ID: <20240611180200.711239-4-Liam.Howlett@oracle.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240611180200.711239-1-Liam.Howlett@oracle.com> References: <20240611180200.711239-1-Liam.Howlett@oracle.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: YT4PR01CA0272.CANPRD01.PROD.OUTLOOK.COM (2603:10b6:b01:109::24) To DS0PR10MB7933.namprd10.prod.outlook.com (2603:10b6:8:1b8::15) 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: DS0PR10MB7933:EE_|PH7PR10MB6154:EE_ X-MS-Office365-Filtering-Correlation-Id: a2313aa7-bf69-4950-5093-08dc8a40a1ba X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230032|1800799016|366008|376006; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?EuaLWRj/643FJY2QbPQ6May/cB1DyJenQ7nSHcsQUFQNWAEDkhQ6oPlW1Myo?= =?us-ascii?Q?90lwza6irUUn6yLQvUhfX7kZEFeiRftzSFlqat11tqWM2n7+cYd4ZVw9CnS7?= =?us-ascii?Q?NzmvW4aBCwxv+LTHzrMBVLbz5uuFtutXqDuHjmG0dp3MLbmPjXemcdTGrFUt?= =?us-ascii?Q?eZ3UMEeJQ2QXRqEZwqwjnMnQ1E2Y7K3qPG4u5Czq4KNK+j5/fM4EvwwAUYac?= =?us-ascii?Q?k88Y67oQo8GNdomavQYieQNRWeNXrYmp+MLc0uVJDYGR3zYi4nDkXts2ICZt?= =?us-ascii?Q?VmIwlJQ+dSd/csMcdJoV7SEGA7SefUjoIUaAnSQx1pDb39hR0R9vuPZyrdE/?= =?us-ascii?Q?S0pht2c2FM7LQFU/yUY6qjelJgFgsWPKOKtoLeghf/2l4uajZmGwKDFs09Hx?= =?us-ascii?Q?x2NEYlkNUVCzieymSQNIayhc9jB+3uLaR0KFcwrTy03yc4NgRghVryXqXU2N?= =?us-ascii?Q?TY6oPsb8NMrGjT42Fu62MZOfPWGjcpMmK0tcg4o+UeCJ2XjjRE9gRsJ+FzLn?= =?us-ascii?Q?J1z+XfgSL/cXKeNIwJVEB2reEACQDQwhOiESspVbIDzUaJm2OV5RiyuNkwNz?= =?us-ascii?Q?uf/b80ZwvUwjIQVmetSPFO9W8Xm1Grh3T9LnUq4zK0e6DHcrFCL0G8ptNC2V?= =?us-ascii?Q?+5NAUN2OU8G/neYNLSb2KJHGyFUsQ0M91gZuUyuQjRoBiE7zEFEVCDhDPe+Y?= =?us-ascii?Q?luvG4Q9IiUy4yLLjG3ltYwe++JqvVBmdBxsXqaazZZ+bKAGE5rEwQuDyBuRQ?= =?us-ascii?Q?VcZduywtzfqknpvWxK1WuS1efEdpjo10PpPZeKZgTYtvGvpOS25zCtBtG84B?= =?us-ascii?Q?3KEYG9/w9rX3IGWQbYAVDCqgSjpaw2cX+EaD1bA57JrTNucbjC2HjSF80sv4?= =?us-ascii?Q?5rixZURULacU7Iqqyk/co/3KAN4/610wXq6chKzWX9cPgUlzmiJ/F3XTC6AL?= =?us-ascii?Q?7vzQm4S4gH/vI4UlTCTrOfffC3fPZWdyAHXORUshkkFDVc0cboCngZHij4+3?= =?us-ascii?Q?kbW4nf7aR6fHN7yYYBOMr11qoeI7NEhRJDlr4dojQ8d+uHlijn2zGLZPuxUj?= =?us-ascii?Q?ux2fHjCXiMPdTbr/9RU6D81DcOv5I+sQQ0R32dXznyWM0PZvoQ/yj7iiPG+Q?= =?us-ascii?Q?uH2d1K9G+lYDffy7PvedRvwkojCJg5r069pfiV74T20M8hg+3e2OeOneiex8?= =?us-ascii?Q?+5QluSyRBrZzbu4RafyuNsXejohE8m0CHbinLWmnO2gYP6Rl3Dai+Sll/iMn?= =?us-ascii?Q?Rn+HdNBr8or0OVKBCRBSKbVpKUS9KS2hYcpTbZOe0hFWAibtV8D4XaP3i4TV?= =?us-ascii?Q?B6zesqZbUZ0OfuvfFXHTe0S2?= 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:(13230032)(1800799016)(366008)(376006);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?nzUwNAFfUFjrcQxOC61TsUyS8q20dyMoygOxIgYjnnmbRqZq4Tfe8+6URvp9?= =?us-ascii?Q?CoenrhH7H2w/teDXaQ+CVcdavNNdQNQBrBKND31Mjdawiqd6czcleE6T6Hz/?= =?us-ascii?Q?dw7L0GfZNgYysYiFxQi3MN9s34LyEok8g7ReKP5A33LhfdT170AsfPEPXWXm?= =?us-ascii?Q?f1I++7r9Kbt0v4sLUiX9aPSXQOWnJkl50FhBBnMLchHT/09rF3A/kDTmRdGO?= =?us-ascii?Q?bwXdUqAx25Qy7VUe7dlPYNgXW7hUlUqLSvdBoEpEKz9bbX39720TX0teypLA?= =?us-ascii?Q?F1y/A9DyFMFwrXDZsdodJuA5NNu+dHonR74SMmsoippwR3ArX1moWVUA6tcb?= =?us-ascii?Q?VO75HgUEz752lKevpbsHpYzI518Y1ksOCgNurNYZr1sNkZ6oGKMp2rznOm7Q?= =?us-ascii?Q?dwVc+7bUhjGDYA2WDDpfjPOy1s0lm7yG7UzgbWnbJOnmXpQzTtq9k/xr2MVE?= =?us-ascii?Q?w8yZlom5S9j8g559cojnyyILqPB7Jg1QDlbP5jOAlUMi96CfzR/dMKNbXJBm?= =?us-ascii?Q?ghJrXk9GMztaL+IYLZTeqt3DzINghiJNnNx/4nK3IJutNMdwrSHV6ozXPL0K?= =?us-ascii?Q?b154tHrIjewS3BsI0ChhVTTuQ6cu0Jb3w2dEHncS+cJ9clQlgqd85HtK5oUs?= =?us-ascii?Q?jYgAjRP0wuZSuqhcoeZrCny3Nb/iOKRjH2DRf6Hk6tX4lJGY2m8CBdjqBAZn?= =?us-ascii?Q?8ea/51tjKDGlvbZCUxPiGxBwTNVFcU3T5ee5DL2KRkL2l1lPGM6Zkdl6gZl9?= =?us-ascii?Q?DQ3/eH3L1puJvJNAatGABkNMq85ZWgpGJ2+9dHP9IYWk6AoRf2q7m5sP6dMA?= =?us-ascii?Q?mOtR3FlLnP6rRBL696fUcvJ46rLUMcrXy0RuycKC6jqs95KXOnWxL4TqX7PK?= =?us-ascii?Q?OlLhMiGPKZoz5N1b3rGe7t4n9+SbDFGbaPfWXvfMQeZN661FdWbw6AkqN2tw?= =?us-ascii?Q?1JwIqb5a3lKSUUYqYoEnkOjNeV8XpYF4WZsrfNUNOhGVX0w+um5cbHtry2/b?= =?us-ascii?Q?gLW2EYXaYB8DTRnhsgdupi6ivgcvs0iXbfuDPdhTf++gAi+QCianhYhLD8Fd?= =?us-ascii?Q?Q7fppl7quJIVq0f830yQgQn1tW/X7cCUknf5+6/4mOnAYq6EQnjFQ7/J1Wh3?= =?us-ascii?Q?r86vmNdIs+/zTmw2MBVyWfTut9fGT71Qa8lOy53tCWTcoBmVmY8wSYYk3pws?= =?us-ascii?Q?zks1H2IGbuwOx50dLx/aKCjYLYtL8r1mcMwvVOm0cQMUdJk0MofElFXVt7cx?= =?us-ascii?Q?o5xotc5cTOtPGEg1gU1piJuy3PjOVReoO0lwvamsO9JFJH6hICpION+XPQfr?= =?us-ascii?Q?JX0oZ0nIVG84YIf2ggO9Viszo4TGIq41m4+bqYxeB9weHLYJC+0YLJhGPVCs?= =?us-ascii?Q?IQCOh2PdVOAvbepTsd8gFaHukCNXPE/2osUfNzoENln6RKdGvOKPA1CNtqKu?= =?us-ascii?Q?q9uMPWVqXYZuVIdRrarPCOriYaecgzsiBg1aCUpLg+TnkJp+gS6V+8Qu7de9?= =?us-ascii?Q?GYzyEG78V7GXUANu4llGSqVgWs02S76imJ8jWKEIM2aL643KUwwzERNwDDHM?= =?us-ascii?Q?BzA0by68lagDk6jZVef0kjs1WEsJAVMvGV8lamC4?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: UOV7kouxgIy0GFX/4Atz5gzQrlxH1DeUG4eKhAOQktjYEybGFsDFF1HkWe/GE/VuiCJ6ATGJ8rltbJv6i+7hidxmUNJsjgn0p1KP8BEIW7uKYY0QpXzzo9tHRRgsAwQdOZUTCPoqe01Rxy24Q6+W+vXg2N56E+MkI2T0EOO32Oer4Badfz8x6NuOhBWO4U+CGngN8HktlWlsA8Flsi7XUK51j8z0l/V9RTSySiPonLXN9QtidS9jIn8tSpoF6nq9GYjpiKHUoZUU6OKRNC79oQmn09f4+j/NWiJzxAl0nX5v8/+vBNsiHxhCAGDR3rKf07oOWekHo2NzlPPVz9wnUna34VyCcrS33mYTcDpnLwv/s/PFQ15UizWoE7UhKgtYY04Y4qPpEfGgfCU4oYA8VteB39aHhm8I3UkgBBf+G2TF28CvsCrZlBIDzkW0vNBwJqdBHccdt4WP3APF4hVS9bA7FGwSRycrr2QLAXV57PK57/+K79/k6W6mFStcVBHeqAZiYwG8pRuNNbhAQbe3lEADx2QEZzCJmVHFewoH2HNz44b/kGcdtG0yoo2LGC74B2s2uW0Zi0B0u03QbdSJqtpKCSUqfk0Qz3S08qnKkPw= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: a2313aa7-bf69-4950-5093-08dc8a40a1ba X-MS-Exchange-CrossTenant-AuthSource: DS0PR10MB7933.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 Jun 2024 18:02:17.6861 (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: cv7trV8GOVVAjzCe+hqwlHJf1xr5aaJDHo1DXOZsNEUXXy5xWJieEL5J4mWgeqOvzqT1JHJGDMKsq1utvYoA8w== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR10MB6154 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1039,Hydra:6.0.680,FMLib:17.12.28.16 definitions=2024-06-11_09,2024-06-11_01,2024-05-17_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 spamscore=0 phishscore=0 adultscore=0 mlxscore=0 bulkscore=0 malwarescore=0 mlxlogscore=999 suspectscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2405010000 definitions=main-2406110123 X-Proofpoint-GUID: m1-PEulBQsaQj4vb5Eaw6YtEwU4Llkma X-Proofpoint-ORIG-GUID: m1-PEulBQsaQj4vb5Eaw6YtEwU4Llkma Content-Type: text/plain; charset="utf-8" Extract all necessary operations that need to be completed after the vma maple tree is updated from a munmap() operation. Extracting this makes the later patch in the series easier to understand. Signed-off-by: Liam R. Howlett --- mm/mmap.c | 79 +++++++++++++++++++++++++++++++++++++------------------ 1 file changed, 53 insertions(+), 26 deletions(-) diff --git a/mm/mmap.c b/mm/mmap.c index bcfcbe006b1e..01bef2f7af2e 100644 --- a/mm/mmap.c +++ b/mm/mmap.c @@ -2564,6 +2564,56 @@ static inline void abort_munmap_vmas(struct ma_state= *mas_detach) __mt_destroy(mas_detach->tree); } =20 +/* + * vmi_complete_munmap_vmas() - Finish the munmap() operation + * @vmi: The vma iterator + * @start: The start address + * @end: The end address + * @unlock: Unlock the mm or not + * @mas_detach: them maple state of the detached vma maple tree + * @locked_vm: The locked_vm count in the detached vmas + * + * This function updates the mm_struct, unmaps the region, frees the resou= rces + * used for the munmap() and may downgrade the lock - if requested. Every= thing + * needed to be done once the vma maple tree is updated. + */ +static void +vmi_complete_munmap_vmas(struct vma_iterator *vmi, struct vm_area_struct *= vma, + struct mm_struct *mm, unsigned long start, + unsigned long end, bool unlock, struct ma_state *mas_detach, + unsigned long locked_vm) +{ + struct vm_area_struct *prev, *next; + int count; + + count =3D mas_detach->index + 1; + mm->map_count -=3D count; + mm->locked_vm -=3D locked_vm; + if (unlock) + mmap_write_downgrade(mm); + + prev =3D vma_iter_prev_range(vmi); + next =3D vma_next(vmi); + if (next) + vma_iter_prev_range(vmi); + + /* + * We can free page tables without write-locking mmap_lock because VMAs + * were isolated before we downgraded mmap_lock. + */ + mas_set(mas_detach, 1); + unmap_region(mm, mas_detach, vma, prev, next, start, end, count, + !unlock); + /* Statistics and freeing VMAs */ + mas_set(mas_detach, 0); + remove_mt(mm, mas_detach); + validate_mm(mm); + if (unlock) + mmap_read_unlock(mm); + + __mt_destroy(mas_detach->tree); +} + /* * do_vmi_align_munmap() - munmap the aligned region from @start to @end. * @vmi: The vma iterator @@ -2583,7 +2633,7 @@ do_vmi_align_munmap(struct vma_iterator *vmi, struct = vm_area_struct *vma, struct mm_struct *mm, unsigned long start, unsigned long end, struct list_head *uf, bool unlock) { - struct vm_area_struct *prev, *next =3D NULL; + struct vm_area_struct *next =3D NULL; struct maple_tree mt_detach; int count =3D 0; int error =3D -ENOMEM; @@ -2687,31 +2737,8 @@ do_vmi_align_munmap(struct vma_iterator *vmi, struct= vm_area_struct *vma, goto clear_tree_failed; =20 /* Point of no return */ - mm->locked_vm -=3D locked_vm; - mm->map_count -=3D count; - if (unlock) - mmap_write_downgrade(mm); - - prev =3D vma_iter_prev_range(vmi); - next =3D vma_next(vmi); - if (next) - vma_iter_prev_range(vmi); - - /* - * We can free page tables without write-locking mmap_lock because VMAs - * were isolated before we downgraded mmap_lock. - */ - mas_set(&mas_detach, 1); - unmap_region(mm, &mas_detach, vma, prev, next, start, end, count, - !unlock); - /* Statistics and freeing VMAs */ - mas_set(&mas_detach, 0); - remove_mt(mm, &mas_detach); - validate_mm(mm); - if (unlock) - mmap_read_unlock(mm); - - __mt_destroy(&mt_detach); + vmi_complete_munmap_vmas(vmi, vma, mm, start, end, unlock, &mas_detach, + locked_vm); return 0; =20 clear_tree_failed: --=20 2.43.0 From nobody Thu Feb 12 14:09:58 2026 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 B63CA76041 for ; Tue, 11 Jun 2024 18:02:34 +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=1718128956; cv=fail; b=YIRZyPAQZSBNwljhsmTk7CK3FxjQw4edObIo4wgXGHhEqIdBnjospW1daBr+ATSiHv7WqhkUcmt85LeKto1EFT1e9sGWGUJX+U15h889WPxf4g7IP1tyRkVqMPk7kyG64YK2OfWBaW0PgOGaJiZFttntRpp3TVD3hvnHcag9FUk= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1718128956; c=relaxed/simple; bh=FZbbCVp2xmUqjfEDyOWWeA2fOZisLyjGHCKSMqf8hsU=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=C9aq1YJbDYhmZUmXEeYuIPm+hQzZk43aUNFTSfI6CXHXaQ1NXK5mf8ixUZBpL0/kUZ/B3nxPGq1pZ1n2T2/ILWcs/o9iFYcWV6UqdphvANM7jUl6qj7KUyb1UDP7OWNxR+9JsdeJQI3GUeMdauiKYfV/qyeewLgjBWvou7uuptM= 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=dKddQxoc; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=ZzHLyPvm; 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="dKddQxoc"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="ZzHLyPvm" Received: from pps.filterd (m0246632.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 45BFp4FI008957; Tue, 11 Jun 2024 18:02:23 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h= from:to:cc:subject:date:message-id:in-reply-to:references :content-transfer-encoding:content-type:mime-version; s= corp-2023-11-20; bh=1CE3IuI4PAGwam9D7DPMVIooyKeYHM5LTcACzMyc2Bs=; b= dKddQxocf0eRaue5OeGtxqlfZfbvntIuI4ATAesd0u3pztv0mBtv7zvFh7pyJslw 7HBkGv47bF3XV8k87WUqG8G1Ij6TfQdvuGq2aK/kJisvI5Y7Cr8rbrMqK9RFHndB wqW4+qPmrlDfbc0tX/p5IeZx9GKXMwjM5vNe8zH0G6A2Ym9IuiqJPd+3eb9tx24J BSEtZVDJUOoeGuRHwcTkNmsHlv1WK57WvND4fuvg8qtBX+SXi3GFA8SbNq8VkV+Y +yWZ2RJM0aUJGQGnUQJYL0RCO1TrPdPQoiycHPCW6tuTkTsS/weuCN7/f/PG5Qj5 nRcrkf/CbwzT3Bzntwem/w== Received: from iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta03.appoci.oracle.com [130.35.103.27]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3ymh195evu-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 11 Jun 2024 18:02:23 +0000 (GMT) Received: from pps.filterd (iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (8.17.1.19/8.17.1.19) with ESMTP id 45BHqgIW020424; Tue, 11 Jun 2024 18:02:22 GMT Received: from nam11-co1-obe.outbound.protection.outlook.com (mail-co1nam11lp2169.outbound.protection.outlook.com [104.47.56.169]) by iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 3yncauv0eu-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 11 Jun 2024 18:02:22 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ji9OEqeju9+DIdbsFU9raFd4N/NASL6Ps1m5o/oGjeScx47F52cZybgX4QjvVGx+K4Df+wSIfw3dRxGkx8Z009PxcFZdW9eMm8r+Mb6AqteaJjau2NslkZww7ruiyGjrmlpNnphgHJNXKOoHIvF8PPnG+sqHjDNT1l6e1jsmZrmylnjh8tRoR++heB3aljDcRYXs8Bfsdupku7iyOmawGRU6banXmFaoVNjeHpcHh7c1iDaYKSIxkXX6BuF18NU8nUqlimA8cQAwfyQ/7xspzdbgQKXLbpPz06TLtE2BDMSjx6qy8G6SgN+PEqrEqb+hkm2GC5PsswBGIgRTr93o4Q== 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=1CE3IuI4PAGwam9D7DPMVIooyKeYHM5LTcACzMyc2Bs=; b=AtChKCKlxNil8t23IrwTQqS9tduUfp8gdgRDC2gj21JCS6rf9OSLh4tmHKHSS+Slrem3yLdycawFdfA57Py4MGxCvWcC4bgKI4N5K+R5qfkbRzgV40Np156brkhMjFwzfZcxcY9Hb8tORIUE7KuDtE3Rzt7fboRc6UnSLircCOMv69H4Be99sKbLpGzJ2ufcOIYGaoLm84y37Hp6iwzvtwCxFNXEytPwgWwTbnl4KBPVhH7phQ1OK+lP3DbK3D/a3KuAaoMaj7GVkSlib3ASMx+NKznGiRZhwRk0GcPxK6WnnAGRiJeb1JOZ61NQeUPeATAZyPq1WA3at68jhs0k6Q== 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=1CE3IuI4PAGwam9D7DPMVIooyKeYHM5LTcACzMyc2Bs=; b=ZzHLyPvmwc1MeSQjGnvBbUNF/qiS8zT0o0LFoZ1zG3W+1UgmATUrAEZvKMXboiBPumENuMC4avFWNZIe0hEql6LT4aDtEDBXeYj11e2l6Wc1Tz8ZGXZahKjt2S5pIP3a05qD2gFL3FtmptenRMBMoiAu3qw8Ty/zFCzbrHQbbBo= Received: from DS0PR10MB7933.namprd10.prod.outlook.com (2603:10b6:8:1b8::15) by PH7PR10MB6154.namprd10.prod.outlook.com (2603:10b6:510:1f5::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7633.37; Tue, 11 Jun 2024 18:02:20 +0000 Received: from DS0PR10MB7933.namprd10.prod.outlook.com ([fe80::2561:85b0:ae8f:9490]) by DS0PR10MB7933.namprd10.prod.outlook.com ([fe80::2561:85b0:ae8f:9490%7]) with mapi id 15.20.7633.037; Tue, 11 Jun 2024 18:02:20 +0000 From: "Liam R. Howlett" To: linux-mm@kvack.org, Andrew Morton Cc: linux-kernel@vger.kernel.org, Vlastimil Babka , Lorenzo Stoakes , Suren Baghdasaryan , "Liam R. Howlett" Subject: [PATCH 4/8] mm/mmap: Extract the gathering of vmas from do_vmi_align_munmap() Date: Tue, 11 Jun 2024 14:01:56 -0400 Message-ID: <20240611180200.711239-5-Liam.Howlett@oracle.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240611180200.711239-1-Liam.Howlett@oracle.com> References: <20240611180200.711239-1-Liam.Howlett@oracle.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: YT4PR01CA0305.CANPRD01.PROD.OUTLOOK.COM (2603:10b6:b01:10e::13) To DS0PR10MB7933.namprd10.prod.outlook.com (2603:10b6:8:1b8::15) 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: DS0PR10MB7933:EE_|PH7PR10MB6154:EE_ X-MS-Office365-Filtering-Correlation-Id: 24f1402a-2155-4a4b-3041-08dc8a40a291 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230032|1800799016|366008|376006; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?IZWQtD5kQlhJUsPOlgzIsgtvkz0NKZH9Tyq/8EvJPci6PB/6mR34EsYBd8fy?= =?us-ascii?Q?34WDCS0N1tyntIjC19u8USN9miiDX6CmjUFNI+Cuz75I+L4Mf6in12nAo21B?= =?us-ascii?Q?MggX8sDQ8EIdmbDMZKaiqpABm0vN+53zYRtIW96ycd+DQ9iY+fzCPBuPyKye?= =?us-ascii?Q?T/aw48Ew5kLUBqkYf7kTQN6/0Q32tysc9igz8Bm+mjhUb0x7fZSCCbSfJaaj?= =?us-ascii?Q?CFvX9pK9hu8KmBnaZER2387Fu8iRbjDzR7HfiKMobWt0y1irbromQ0wfXNqq?= =?us-ascii?Q?NOqfxauBYqDUvYIanqe85C0u+XZF16Rndp5aog1rdSl/WlkGEtFYUGxe3X0J?= =?us-ascii?Q?bQg/pnpzvbZVz8/VGPvgGVc1CapxqZ0WBdDip/b6uUO/K55XcxwWEEUKo7E7?= =?us-ascii?Q?Awzd1IbOBpKNrpcQWHGhPYsQafQNtT7nEOfLb3fK1yWIBwqUWtUQoUR6OnmF?= =?us-ascii?Q?+sYTIrBHLxw6/XcQwfR7Z221/Lp2Kf7ocFSSKxiQFIQyEVK7xYfdHe7uRmA6?= =?us-ascii?Q?4e9jXKF+tvvfNKrv6XKsL9m1YcJ0PF/xPJTKNVVvJsy/zvgqT/gL3wBkjQ83?= =?us-ascii?Q?2keM3jd0d0Y49fVfkVl2EyCfxtA/Z7drIs1fGOR43qbcuZFW00uYS+SZ+Q+H?= =?us-ascii?Q?iU7CAk88gudLS3CjFuwtd3MFP2geXIzeQKfTGLcMg3sxh+ux6omH4K7EB5K0?= =?us-ascii?Q?aAh+1W9MkjiEmcw0ohj3fW2B8P6QWIHEwITje8ZrTj8h6WHsytcfZwgyLyyM?= =?us-ascii?Q?RCLoJ8MWwlaQDfOR55N3/1TpMOqTTIj3klOm2mG55bptGaMClV6phmEsi0wI?= =?us-ascii?Q?+dLQcPzceAAYr7cm764H+6pH4dAlmstPp0Z4mK0LwsHyfmA/tnOqwwwsbrLm?= =?us-ascii?Q?8enuBgP3e1oZPOjZVKslKDm3dsD5xmaDNyCjue/HZJFSGhwgfl7QZwv9VKMB?= =?us-ascii?Q?0fQsoDvbiKORyqN2JN0eehfdvNN83FHwekCarrjAaksREbKPJrlVqFP/4uK+?= =?us-ascii?Q?JczTujaEhqN+qbfHVgC0yywWWUuCPTs7umG9B0LtmUIc9K0pisuTPsVm+Nn9?= =?us-ascii?Q?D1TS2Xo6BsqL6y6tJYu3iAwuCI23gLwfV95mZu1mg3oQISnZBkNf1YvVaKLL?= =?us-ascii?Q?8HLaSTDdxUejT65hRzfwODGPfcPsAyKEIs8j8QSok7gZ3OllEb2qrumFApvW?= =?us-ascii?Q?1Ptu18cwgI84wmMxrz1SSIrKfyOUjIybz4zV6bmEnDrQAr+47I/sWMbGI2Hr?= =?us-ascii?Q?6mGoRtvyy4xl7CcdmMZLbsIFptcS1UOy3dFb9urWSyvhP6/WylFh2Al0FIHW?= =?us-ascii?Q?i/HWpbMj75Z1twhhJfQwHgu0?= 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:(13230032)(1800799016)(366008)(376006);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?uWq+BxStc9h3bb2E1yZxRsMi7XYeG0puVjjmIcT7bNcL4Zev2vhNVokMN4As?= =?us-ascii?Q?4f0ZtHYP4Qoy8d2HzRYmU0FKaNS5wRHR+rFl/AFefs+EW+farf15LP64Mzxi?= =?us-ascii?Q?XZppo0l3plm20l3TJChfNuOPeb4Z5hgowr8kcZ2hLXHFaxwQdT1FIFVJM6cC?= =?us-ascii?Q?huS9hIUH2qaGfDpPXxEY1NkPb/PDVXTqX+g7KBZfFathsxh2rhuX39YYkum/?= =?us-ascii?Q?cWXwF0P6kIeEhGMcj6PIXUT1/pK20JkFNc+DiXawZWoDNOzPJ8yyc6rQioPc?= =?us-ascii?Q?J//vYlbGkuT3IZWxEcKTgK8kC8ciEdoiAx4v1CMc73MgFpdVxBMel8Kgt+0X?= =?us-ascii?Q?W7Zh5aTFquVP+Zn+0AN/3RTLXSBb7VIiCZQkKsJGIE3TmU3NhwC9LD4ib1ZJ?= =?us-ascii?Q?3clf+6nP1pzEZihyv7503cqdanJcO43oN/9AUWcIVyaIeK/jGiFVsq7Rcggi?= =?us-ascii?Q?3YJhAjsWVDt6gUMP4Z8UkvLZnAe57406PCuiqWIoBVMhDErs54B81FS9/QqQ?= =?us-ascii?Q?Ppo26qq/Pdc2tnBHQ5spIe7hNowMHmicPbgjlpIGZun1W0jP95di5lgpLTTI?= =?us-ascii?Q?sfR9LBU1r+BUY7og8/kx1IbUXRIZ0/Omt/8W4PVGht8EBejoZL1LdgXAJbpf?= =?us-ascii?Q?hj3vUZHbkNwBn7qNR4IytpkkpeSSGszZ7tlwN6KEbt7lJnTCM2nB12XmLnLM?= =?us-ascii?Q?AnUFxrMtOp5jTANPR+4JEDdN/W6OQLY6sGdHvBO9RhcDK6CU6w/9BZjhjK4F?= =?us-ascii?Q?YcISimkQa5Ou5WhiI/TA6XxR9xlF6eX3F7fsOnTick4CUoWqFT/mLznVfNNJ?= =?us-ascii?Q?GaGVTLr7Ca88acb/WDDqHFLIpehyRavT963pQUe3K4zGJ/73xdUlOSulee28?= =?us-ascii?Q?oyDxurT7HegI0OX0SQLpZlBFYylRFKgst7NZQui+JfwK8JaHG2UUytKzmyrz?= =?us-ascii?Q?tbHq7Kx7RphAJboEkhXF4YFu+k+f5pYIPiTqANsaydVqPHHvCaJrzBLNnflD?= =?us-ascii?Q?fTVxT2VjUyTPjLVCFh6ru322828Ka8n2/JSYa8Sagdp5B06OcerrkkR0RJOH?= =?us-ascii?Q?SYRIUkkla5CdMmjkDFK5wQYl52FnpEtV/EWhVT7S/u4/S7vnuYXpOfcaC+8O?= =?us-ascii?Q?+VL6BLOwn1y1/nSn83vzeTdPgELNFWa3aNNI5N7H5s8FE3V1rP9pDNCzxOsG?= =?us-ascii?Q?NXLe11DUnGXMHmbnSk5nMmvrz1JceQbTgdicied/1Iyv8Ejla8CbIr/SX2js?= =?us-ascii?Q?+Qgk4AJ1o1eCp4ceWUoJD2IRrKjGa1SOLGnMwM+e2QNYVaQh4NqXJbJ+iR/O?= =?us-ascii?Q?wbYqWsch3OlzlhKPmeZNvvn2Ir/EBfBPXNvDfFmp5wmXlzbYG0NCJGnF0yIZ?= =?us-ascii?Q?GkFvPhxvAw/2ebrz8KEaJbiuIW/MzDLKKSjfgctfJztD283VKQAKZZ31vCu8?= =?us-ascii?Q?pCaHQMVaD3V9f53njILKU+RvTv+3haBUcU+x+fD17Xl4+Icrw8qP+nYXNFeG?= =?us-ascii?Q?VvAaJm/TOjfGWRU2oPYylGnP4nx8GYBuOtFdi/mXVcJoIVWIbhk52Ctue9q8?= =?us-ascii?Q?kkdCUOV7aTgRj8/IVjRLMX8icMCACGCjtYDvExu0?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: N4O5JWR6vQsjdtjZ4AojFWNGfm7IScEPpd8T0Ieto9kGGAaDRx8zLOgjS2uOc84uxAXAnUTPtFIoWJOfsPlL4ilinZTlUes+nPI9sblr5O0GE1JiDqrJxsD6hLbvH+w9gUWB7kOrNdOZX/27hn2pVXLN8/hiCQ7IXjDIg1EHlzZGr9fyzNE9u8pnpElKji71JeJBH+ckOI/EPAgXMy7mgW/6zNqCOW43MD5repZJ7CJONtE+L4wA4LJEkQpnLat37oex+fcyDjDLpumTrN4EL+oIpAEHkZqqvKUj7sg4RaCdG1yXVubl7WxVd0OLnT0u980yDiI25zx8wEDNi7zAzbNzBWaTDh3TfU5+Zhefxpdf86DU00SsO4eBP9j1SP70fYjt+V4NQA4Hv4NDWBP+H8HljTEX1ktP3lincl+8Xm+owgsNKHtucEA9HU8O9XyDuKhmhngBN/Pe44hlErxoCuFt6FRFRtFr1XRHwAiDuKRFqzXrEa/CFpXLK8AQ6zuzgYPHT8ZRijxzig9/Jq1O/wjAI5qaZS2rvD1aFo/MWeC/qzwYgZPqdkaZB4798sRVpkUUTFZE31nV8tpPb9ZAMZmEtnwXfgSpmVey4cYsXWM= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 24f1402a-2155-4a4b-3041-08dc8a40a291 X-MS-Exchange-CrossTenant-AuthSource: DS0PR10MB7933.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 Jun 2024 18:02:19.0457 (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: wHpDA7eJiy7yPJ9KOA2iwWuOjbWz93fvLNr9QgpeYn+bxYv1LnGRmY+dGQgn+jXCo6a/hlok3jkXVBT3XljhLA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR10MB6154 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1039,Hydra:6.0.680,FMLib:17.12.28.16 definitions=2024-06-11_09,2024-06-11_01,2024-05-17_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 bulkscore=0 suspectscore=0 malwarescore=0 spamscore=0 mlxscore=0 phishscore=0 mlxlogscore=999 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2405010000 definitions=main-2406110123 X-Proofpoint-GUID: M9ZE3rJwkCJL9Z6J70tyD8w-ZqPzaMBe X-Proofpoint-ORIG-GUID: M9ZE3rJwkCJL9Z6J70tyD8w-ZqPzaMBe Content-Type: text/plain; charset="utf-8" Create vmi_gather_munmap_vmas() to handle the gathering of vmas into a detached maple tree for removal later. Part of the gathering is the splitting of vmas that span the boundary. Signed-off-by: Liam R. Howlett --- mm/mmap.c | 82 +++++++++++++++++++++++++++++++++++++++---------------- 1 file changed, 58 insertions(+), 24 deletions(-) diff --git a/mm/mmap.c b/mm/mmap.c index 01bef2f7af2e..fbd36a8cb031 100644 --- a/mm/mmap.c +++ b/mm/mmap.c @@ -2615,32 +2615,29 @@ vmi_complete_munmap_vmas(struct vma_iterator *vmi, = struct vm_area_struct *vma, } =20 /* - * do_vmi_align_munmap() - munmap the aligned region from @start to @end. + * vmi_gather_munmap_vmas() - Put all VMAs within a range into a maple tree + * for removal at a later date. Handles splitting first and last if neces= sary + * and marking the vmas as isolated. + * * @vmi: The vma iterator * @vma: The starting vm_area_struct * @mm: The mm_struct * @start: The aligned start address to munmap. * @end: The aligned end address to munmap. * @uf: The userfaultfd list_head - * @unlock: Set to true to drop the mmap_lock. unlocking only happens on - * success. + * @mas_detach: The maple state tracking the detached tree * - * Return: 0 on success and drops the lock if so directed, error and leave= s the - * lock held otherwise. + * Return: 0 on success */ static int -do_vmi_align_munmap(struct vma_iterator *vmi, struct vm_area_struct *vma, +vmi_gather_munmap_vmas(struct vma_iterator *vmi, struct vm_area_struct *vm= a, struct mm_struct *mm, unsigned long start, - unsigned long end, struct list_head *uf, bool unlock) + unsigned long end, struct list_head *uf, + struct ma_state *mas_detach, unsigned long *locked_vm) { struct vm_area_struct *next =3D NULL; - struct maple_tree mt_detach; int count =3D 0; int error =3D -ENOMEM; - unsigned long locked_vm =3D 0; - MA_STATE(mas_detach, &mt_detach, 0, 0); - mt_init_flags(&mt_detach, vmi->mas.tree->ma_flags & MT_FLAGS_LOCK_MASK); - mt_on_stack(mt_detach); =20 /* * If we need to split any vma, do it now to save pain later. @@ -2679,15 +2676,14 @@ do_vmi_align_munmap(struct vma_iterator *vmi, struc= t vm_area_struct *vma, goto end_split_failed; } vma_start_write(next); - mas_set(&mas_detach, count); - error =3D mas_store_gfp(&mas_detach, next, GFP_KERNEL); + mas_set(mas_detach, count++); + if (next->vm_flags & VM_LOCKED) + *locked_vm +=3D vma_pages(next); + + error =3D mas_store_gfp(mas_detach, next, GFP_KERNEL); if (error) goto munmap_gather_failed; vma_mark_detached(next, true); - if (next->vm_flags & VM_LOCKED) - locked_vm +=3D vma_pages(next); - - count++; if (unlikely(uf)) { /* * If userfaultfd_unmap_prep returns an error the vmas @@ -2712,7 +2708,7 @@ do_vmi_align_munmap(struct vma_iterator *vmi, struct = vm_area_struct *vma, #if defined(CONFIG_DEBUG_VM_MAPLE_TREE) /* Make sure no VMAs are about to be lost. */ { - MA_STATE(test, &mt_detach, 0, 0); + MA_STATE(test, mas_detach->tree, 0, 0); struct vm_area_struct *vma_mas, *vma_test; int test_count =3D 0; =20 @@ -2732,6 +2728,48 @@ do_vmi_align_munmap(struct vma_iterator *vmi, struct= vm_area_struct *vma, while (vma_iter_addr(vmi) > start) vma_iter_prev_range(vmi); =20 + return 0; + +userfaultfd_error: +munmap_gather_failed: +end_split_failed: + abort_munmap_vmas(mas_detach); +start_split_failed: +map_count_exceeded: + return error; +} + +/* + * do_vmi_align_munmap() - munmap the aligned region from @start to @end. + * @vmi: The vma iterator + * @vma: The starting vm_area_struct + * @mm: The mm_struct + * @start: The aligned start address to munmap. + * @end: The aligned end address to munmap. + * @uf: The userfaultfd list_head + * @unlock: Set to true to drop the mmap_lock. unlocking only happens on + * success. + * + * Return: 0 on success and drops the lock if so directed, error and leave= s the + * lock held otherwise. + */ +static int +do_vmi_align_munmap(struct vma_iterator *vmi, struct vm_area_struct *vma, + struct mm_struct *mm, unsigned long start, + unsigned long end, struct list_head *uf, bool unlock) +{ + struct maple_tree mt_detach; + MA_STATE(mas_detach, &mt_detach, 0, 0); + mt_init_flags(&mt_detach, vmi->mas.tree->ma_flags & MT_FLAGS_LOCK_MASK); + mt_on_stack(mt_detach); + int error; + unsigned long locked_vm =3D 0; + + error =3D vmi_gather_munmap_vmas(vmi, vma, mm, start, end, uf, + &mas_detach, &locked_vm); + if (error) + goto gather_failed; + error =3D vma_iter_clear_gfp(vmi, start, end, GFP_KERNEL); if (error) goto clear_tree_failed; @@ -2742,12 +2780,8 @@ do_vmi_align_munmap(struct vma_iterator *vmi, struct= vm_area_struct *vma, return 0; =20 clear_tree_failed: -userfaultfd_error: -munmap_gather_failed: -end_split_failed: abort_munmap_vmas(&mas_detach); -start_split_failed: -map_count_exceeded: +gather_failed: validate_mm(mm); return error; } --=20 2.43.0 From nobody Thu Feb 12 14:09:58 2026 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 71456770F2 for ; Tue, 11 Jun 2024 18:02:35 +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=1718128957; cv=fail; b=GHuTYPQmeWMz5mWW5dFn+jBoX1ecMypqk8eA7MXVjJljUzKG5nhSpC6eodlxXxUxOwNawHygK1B+tdYi70pIIlrFHhH+UDUVINeHXqVlW1zb6JHrVVzaOs6+9iCVVMO6lN+1z/m+b/gYGiwx31B+Ha/BLLYWHdnFFfKuQQt2pew= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1718128957; c=relaxed/simple; bh=Msuz/RCBmvisxvjydI29R313HReBp+Wriic62eaj4dM=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=FmNIHFD20LWnZcuBXW2hc4qgaDIZ1augO825IV2pvppJsLvenC66AagZFcLKjLMh+PBfFkw5Bo5O/EXpaBbqTbZE93eYrMsiM8e/u7xSyGo5GuOKKPF3bMajJcBE2iYcZwFNWkqrUo5miYTflJ5QIg156FAllJ+TqThc7waWN3M= 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=NATksjLr; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=jWdPaTi9; 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="NATksjLr"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="jWdPaTi9" Received: from pps.filterd (m0246630.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 45BFo9Oq006260; Tue, 11 Jun 2024 18:02:26 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h= from:to:cc:subject:date:message-id:in-reply-to:references :content-transfer-encoding:content-type:mime-version; s= corp-2023-11-20; bh=KBA8tGw7rl5jw3L0KdGMb/amy720aBsEvlEZjXfGWp4=; b= NATksjLrfLoLYpQUrr1Q/gx5/DyDtR5vlIWnJj0jwg7L1dyEFk/0mgdnSb+XSNKf hM6mZgyGGrSNxaei1hmcI816WHhWraAonYyiBVgE+TpPan9AB+Kq4uO+1OHa1Ue7 ZWac3AQCM8+z06Uk2kMfvato7HoMKGoIEgwH1BRUaZWbGxz7rLpLEeItijYcJhyJ jO2NgD3/YCPwdQuB48XbQ47HUPMfnLAc41NqBCi82NuIjlYYU1Ki+YMnO1ZhmGgU lMIKNzvvj230CNZ827GYZyDAUMmGBo5nCkwGl45MxgXys7bHrwNVjEjA+Dzm5GgK RvioMQsLD8GjCDV4bZHUiA== Received: from phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta01.appoci.oracle.com [138.1.114.2]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3ymh3p5ecv-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 11 Jun 2024 18:02:25 +0000 (GMT) Received: from pps.filterd (phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com [127.0.0.1]) by phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com (8.17.1.19/8.17.1.19) with ESMTP id 45BGjHfH019928; Tue, 11 Jun 2024 18:02:24 GMT Received: from nam04-dm6-obe.outbound.protection.outlook.com (mail-dm6nam04lp2041.outbound.protection.outlook.com [104.47.73.41]) by phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 3ync8xjusx-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 11 Jun 2024 18:02:24 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=gowg9d3noO3ZtNOMw0vltVwUS6hjiMcqflzqAQ0rJRUQeQozerhkJ8AvsD6kjNvaIwO3EqiqtOgOwXHRqeJfrA19n65yrA5rmJ/s0Irl3upFGUn75vkjjITBJ6mwljvvkjXdJHYTg0p74ceihx451ncsST5PxUHW7ayFql1O+PP8UHj5KOJR958Wi93qdwZKDw2i4o4uTVAiC+GXqW9GyPqbCqUXgq4QFnaFftxd8NmcqjNJphGQXnbpxT6zklwhLRpP11ml4/0OzXXd49C03OB8jsBZ0EfW/OGn9zwnBVAnUDrKttXGiJ7RoRsdH7HZDnjSDrXfTIEl29vfQAZcjA== 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=KBA8tGw7rl5jw3L0KdGMb/amy720aBsEvlEZjXfGWp4=; b=ZET3uc2QCOB6Dul29KJZFgQPY+3uy947SQYAm7uyCnRqro5Brz10DUqq2afW1QfiZZhXS6IISGvoUrVydrS3zM5NWVkRXscSuiJzz0TNuULsc838S4twXOQ3lnAtulti7dgxlPR6WEMJKMogsLRaqpqXmxMUI2cfC7lo/SY7z3pxsYXEMwXnlSFCX8AM2Bd2+GI+uXj22nrbBs7uugkuXrwImZP6YWqmemp/jQ1N8UNORS7U8EgrXVUK+gvXUkviWz0lJHbDa+675+LMVv7X1yv53mOljGxiPKc6wfzP8J659qv9C07w65+udcJaTsR8g8Cksj/MYm5PxqPDfrTtgA== 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=KBA8tGw7rl5jw3L0KdGMb/amy720aBsEvlEZjXfGWp4=; b=jWdPaTi9Js6tCs0xITIkrCcfoWFiLQwX8YfbcPwNzQJMLVldYCHAvaKwDmzQ3tICDk0dmDJpbIiy6UL/9atylie7b2N68MaWh6d1u1ehukhA0KCcESU29CKxFYlC9VjQLM0sMX4rPSoGLsqn2rvqOtJ7sTYVMr8sJay1JIC4DWA= Received: from DS0PR10MB7933.namprd10.prod.outlook.com (2603:10b6:8:1b8::15) by PH7PR10MB6154.namprd10.prod.outlook.com (2603:10b6:510:1f5::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7633.37; Tue, 11 Jun 2024 18:02:21 +0000 Received: from DS0PR10MB7933.namprd10.prod.outlook.com ([fe80::2561:85b0:ae8f:9490]) by DS0PR10MB7933.namprd10.prod.outlook.com ([fe80::2561:85b0:ae8f:9490%7]) with mapi id 15.20.7633.037; Tue, 11 Jun 2024 18:02:21 +0000 From: "Liam R. Howlett" To: linux-mm@kvack.org, Andrew Morton Cc: linux-kernel@vger.kernel.org, Vlastimil Babka , Lorenzo Stoakes , Suren Baghdasaryan , "Liam R. Howlett" Subject: [PATCH 5/8] mm/mmap: Introduce vma_munmap_struct for use in munmap operations Date: Tue, 11 Jun 2024 14:01:57 -0400 Message-ID: <20240611180200.711239-6-Liam.Howlett@oracle.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240611180200.711239-1-Liam.Howlett@oracle.com> References: <20240611180200.711239-1-Liam.Howlett@oracle.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: YT3PR01CA0083.CANPRD01.PROD.OUTLOOK.COM (2603:10b6:b01:84::11) To DS0PR10MB7933.namprd10.prod.outlook.com (2603:10b6:8:1b8::15) 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: DS0PR10MB7933:EE_|PH7PR10MB6154:EE_ X-MS-Office365-Filtering-Correlation-Id: 0c350ef5-baa7-4aaf-968f-08dc8a40a3ef X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230032|1800799016|366008|376006; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?Eifz2AK6w1pnEwJ0i40szH3ifhIlJ5CLf3OJjiw42mbKC8LutphhbwI9LktR?= =?us-ascii?Q?EFNViaFH4PuQh60XehMly9JSXUsyxHsZ8JVcPNZSMADt0iX8w2vOj3Wo+o2p?= =?us-ascii?Q?atFacXyj06pCG40hCmhLK6cecuxDMONpnjmhvbxYExNC5LrlkSzJaG53yU9m?= =?us-ascii?Q?M1erto5ecmdvZGBihW7b4K9dp2xWUq2/FtD1eo9gMgml9BQD0ySQcCGC31q4?= =?us-ascii?Q?+OSrc3ssw0ihgWgy2pGajJdnNGPFI+b2cPE6j6MIg8HJNOVh1AsQpNHDcIlJ?= =?us-ascii?Q?ZxUqPjem5o3wyWhSsDBySjMVvJOV34GaZ/HNcwviIJLH+CWo9jM8OOY+wbWh?= =?us-ascii?Q?k2xdai3cszV6FE1or7WA58koWrVi0vRUxvGVhIYeW9QyxtHeawL0ZouiPSTV?= =?us-ascii?Q?XaqktVXqkteaW+tF2Pc6JzUVh2Sc2dTNMfWQZS3vSiKGyD+ZVZydbzGc7VsY?= =?us-ascii?Q?v/vqS6svHZm/rUgZQcxEpu0JRoXYn2jFJ5hZ03WBdikeiGr9wfcQrmlBRPWI?= =?us-ascii?Q?EGNaEFA4uAVDnhsWk7BRzKoHrMzAoDbg9tB4zKex4kF5K9lPYSHqHYmijdFE?= =?us-ascii?Q?bCfABO2dZmKyoF8fB5E2674AyYXUxZcFH3HuCsHA2hGLbMoRg28uCJc27w+B?= =?us-ascii?Q?xIFs7woLdUeh9aA9gDiY3ecCUVckwTGSBbDMIYI4RPIlRQyqoh+WhaHG/lat?= =?us-ascii?Q?DIoRgf2lCL+GvWK8YZx1hmn+alokinqyUmXsx5Q/DwSpm1OGZEcoyY771rid?= =?us-ascii?Q?gbj6Q/q2pOLLJcAE++VjCVFPN8p01DjbCkR5G36SR4VYd0Wu/J833PuoUcWg?= =?us-ascii?Q?RThPrR8+OGzqwcFgxC2AkQ/xRNwtQ2dulp4ur0IztO0esppfPNhJS0lMs9cu?= =?us-ascii?Q?7YQWwsRhz0j/7iARoAgnJe/z5F9NSCGKq5Pozb8y+Moi1oURlqJHZdF2K53Z?= =?us-ascii?Q?MrqrzTQX3StBp0zA+vRm16ErxH91FaV0gK+XqnK/hlZF9XszlpzWYrHLMFqg?= =?us-ascii?Q?wbUsoA4L8djKUffzftWr1h8d0THxvQHatA1FX2FY4Z65W24v297crtnZjjbG?= =?us-ascii?Q?KWRQ8jcGE0tUQsb6Br0QHAZvWRKORyemIKIkj11y/dLhN/y5Jcu5ff7yqlW1?= =?us-ascii?Q?UN/XOUcga3kiucOHc6G5ymzL/TYS0XU4G3vMHYWJV8VXORaEJ2cTLStbcmgQ?= =?us-ascii?Q?8nglHgGIXAA7w08Ix4GqiiSHlygy2/RtEE1aCB8Whh3Z7CzZLcDRckVXuV4v?= =?us-ascii?Q?WRJUopa4wVu3hGfw4EzJ1NL0vghyq/wFAMTWVR7WilW6OH1e+uqJJ98C6CZK?= =?us-ascii?Q?bYGoNfORtTfUz0R7q1VGo4lX?= 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:(13230032)(1800799016)(366008)(376006);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?2IzT7YiMFhS8OGjrVvbDe8KRZ1njORfCBCYdzWYQ+QtHAm/c+XkxKGy80Df0?= =?us-ascii?Q?p/jhlbpTnbwbabNsY31qisrFrO1cPxPNWaPaNqE2dmMIZnrCk4q7fYLP5u0h?= =?us-ascii?Q?0cZGVsSlazZFwn2AwFGqkgjoYYmvAzJCvGLmLHNtnF8IgJRFIW9RVVTpPC0s?= =?us-ascii?Q?y/bu0Y+Ww/Hiv9ROeoCwvdRw8138o+V0Zbd0rXlKzZKf33AY5JL5HajAODeL?= =?us-ascii?Q?i2fOcx3odZYdNIeBnmxNJKeUKSXbLOc3fw45S6nu3yqrrepKF2A8S/hLoEkn?= =?us-ascii?Q?XiPd9eV32VxrQHyO7SfYzit0VitPxJmkJ7YqStIOJsDXcIWqrCFSVfXd9K5q?= =?us-ascii?Q?/E4b0dLsX24yjHmWwdqn1C4N5oCLkbIWjWqzygQot25VDvqASdtKbU1ZHC3P?= =?us-ascii?Q?leysbichIcUUhQgVa5E5EPkACYaGtS7QTLB7oQEkEgE2+ObNuSi8ufExbK/e?= =?us-ascii?Q?cYlNKPGr09P3S7nPUN81VHZGCGquO6Z7yTd5bAB32h00mAzO4IuS1yizc/Ng?= =?us-ascii?Q?ypu5rvCbybWYlY1ucJ153hRjkgucs6yMIohZZkLkOHQwhOq0ei/6a9d0w8n3?= =?us-ascii?Q?Sz1vJCkefW0ywdALFfdhqjp9bSp9Xs/grJD0GDIufI9Q/U+fwvyS4AHApt5r?= =?us-ascii?Q?MAV6JPiMf46DqR79DDUJp/SVBwu1SH19f57MftALJf7d0fXEVQVvZm7fZWd+?= =?us-ascii?Q?SHXnXXWXdTZYKOcwvyAcZgApZk7nKyvLFcLpEaOwtDt0kKaPrRCWtdEgt48n?= =?us-ascii?Q?fVkzuRzDOjMJwx0WpHfyX23Kdn2ErY8NgLuIGUo/Wqhtf8a/e7DPuskvDLpG?= =?us-ascii?Q?Bm7z5My8bWFm1rqGgJ+JQhfsamifOpwZoUvCWDy1CcPbXoUk7bc7y4KMiQdj?= =?us-ascii?Q?sPApTGpN1fLJRryaNOQzGmeaLRTe5jWpyFPbmvR+O5ZCp7OGIFw0Rgr9SfBj?= =?us-ascii?Q?CZukjTOxaWy3xaBBLqdZxUU1KtOTR2uCMNCPh/Ns2rSK3Kmi65bUb9iEcuvy?= =?us-ascii?Q?Z2xIhRm9IuxM6vBvdYzQIFueFQ6vVtLYF7T5za+15nAI86DMubNIECk0+EyC?= =?us-ascii?Q?bxi5h0txczDY865YAAD7aI5uEYY0o+MH8hmf0emF1VmpCHa1YdEQkWGLaIj7?= =?us-ascii?Q?2adAyCC18nx9RB3NX0SPb4X6e5Ho98XNNUQ/aGyD6bA4N4fVvjLz7qHtxrEu?= =?us-ascii?Q?PsjV1ceNBF8pul16TvLaJ6ZTWWu5FI+EzJZsPZkqDKcYWviuECgyzphNLX9c?= =?us-ascii?Q?sRDvow84KRUq8OXXnpFSpQq/NaONWnGJkC76PD6ik73SfgjcQ8g4TlrRMs8C?= =?us-ascii?Q?rK5bde80lsy9Nw9eQGhw7XLpZ5k/USJZmQtT1rV+pkB162kj00l4QcuCKBXv?= =?us-ascii?Q?4aM1Em+kQXZetfw60NW2xGSRQkGc3NwXoRUu5LLTXz4tF/oZhAfQ7aAKkLMm?= =?us-ascii?Q?lsZj8WpCdbltQqZnJBSzLLAsdIunHmXqZPiXEM3HUc48LrZ2c/BPjmcwxTZ5?= =?us-ascii?Q?fYRVLXfgfrIJhNeDllZwYAyaSxOefSvs9dFa5raG2eLaRuVWmJAWjiWGveWF?= =?us-ascii?Q?QFH/dUeEqqrofnZvbC+5WTCbEIOt5pZmOWdAsPKp?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: p1+K1sGG374JkDHRuu9pWQcZQsY/sPevC5xdax3F6vvhnLlqd5YFuqtiXIpsfVtemMPe1wtXUP/NUIm4/7P2gidD5zXbstX+uyzknU0e/IxKzHXH9gN+UiIag3vp92G1lLYJCbs1xdckz8GYTOKQOZScArs6LTxztyJP7YTeECSmZOQ5cs/qFQknhf/hfCDijQ7Y4fusfKaBrWB/X3r2sh4XCyJf6PGX6FFEn4euG9OaJQgAqDWCfACUbZV6hHwivSMF8gyK/6wVwNWxFEkZ4hB1QYVudg7Hz28wBG29GFGdojOdWwOpADOYUDmlUeC0ntuIEDp9lzIMrL2OiytjxkWHT2tC/NVVdj6wx5d6iy6QwXrDOx9ZtDVaN26ZH+51YXF765KPmT+n5TCgcUzDjVpsbYp1palLrCHNTK9zZZxfpBuAOJdXBmzTwENtW04ROLdsLqtRpJEAJXANZjDGQ227GaF2pW1Foo6hFyYyL/YTsoQ1sYiP6mP+gLxDf4UHPSdOCBD2enmox6Sf+emy9Q+jmKaeXG+lc9LuGhq9Deg920K9AUrNK29vSjdBtEyFmh3GOg0GIZ/9+aMZ6WlmmEDoidimlIoZ+wkciZ81P/k= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 0c350ef5-baa7-4aaf-968f-08dc8a40a3ef X-MS-Exchange-CrossTenant-AuthSource: DS0PR10MB7933.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 Jun 2024 18:02:21.3650 (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: H4xqKB+RvJPlZoOv8HRg/wjRZCwEv+sZqoUvCnzXuoljDUydxds4Y4Q4LldB8+h9s4WN69k+Yw9hHGo7xloWkA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR10MB6154 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1039,Hydra:6.0.680,FMLib:17.12.28.16 definitions=2024-06-11_09,2024-06-11_01,2024-05-17_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 suspectscore=0 mlxlogscore=999 bulkscore=0 malwarescore=0 spamscore=0 phishscore=0 mlxscore=0 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2405010000 definitions=main-2406110123 X-Proofpoint-GUID: UniNJZxVF_UX5RQbU53Tvvbu4bB0hwWI X-Proofpoint-ORIG-GUID: UniNJZxVF_UX5RQbU53Tvvbu4bB0hwWI Content-Type: text/plain; charset="utf-8" Use a structure to pass along all the necessary information and counters involved in removing vmas from the mm_struct. Update vmi_ function names to vms_ to indicate the first argument type change. Signed-off-by: Liam R. Howlett Reviewed-by: Suren Baghdasaryan --- mm/internal.h | 16 ++++++ mm/mmap.c | 137 ++++++++++++++++++++++++++------------------------ 2 files changed, 88 insertions(+), 65 deletions(-) diff --git a/mm/internal.h b/mm/internal.h index b2c75b12014e..6ebf77853d68 100644 --- a/mm/internal.h +++ b/mm/internal.h @@ -1428,6 +1428,22 @@ struct vma_prepare { struct vm_area_struct *remove2; }; =20 +/* + * vma munmap operation + */ +struct vma_munmap_struct { + struct vma_iterator *vmi; + struct mm_struct *mm; + struct vm_area_struct *vma; /* The first vma to munmap */ + struct list_head *uf; /* Userfaultfd list_head */ + unsigned long start; /* Aligned start addr */ + unsigned long end; /* Aligned end addr */ + int vma_count; /* Number of vmas that will be removed */ + unsigned long nr_pages; /* Number of pages being removed */ + unsigned long locked_vm; /* Number of locked pages */ + bool unlock; /* Unlock after the munmap */ +}; + void __meminit __init_single_page(struct page *page, unsigned long pfn, unsigned long zone, int nid); =20 diff --git a/mm/mmap.c b/mm/mmap.c index fbd36a8cb031..374cf89f0c30 100644 --- a/mm/mmap.c +++ b/mm/mmap.c @@ -459,6 +459,31 @@ static inline void init_vma_prep(struct vma_prepare *v= p, init_multi_vma_prep(vp, vma, NULL, NULL, NULL); } =20 +/* + * init_vma_munmap() - Initializer wrapper for vma_munmap_struct + * @vms: The vma munmap struct + * @vmi: The vma iterator + * @vma: The first vm_area_struct to munmap + * @start: The aligned start address to munmap + * @end: The aligned end address to munmap + * @uf: The userfaultfd list_head + * @unlock: Unlock after the operation. Only unlocked on success + */ +static inline void init_vma_munmap(struct vma_munmap_struct *vms, + struct vma_iterator *vmi, struct vm_area_struct *vma, + unsigned long start, unsigned long end, struct list_head *uf, + bool unlock) +{ + vms->vmi =3D vmi; + vms->vma =3D vma; + vms->mm =3D vma->vm_mm; + vms->start =3D start; + vms->end =3D end; + vms->unlock =3D unlock; + vms->uf =3D uf; + vms->vma_count =3D 0; + vms->nr_pages =3D vms->locked_vm =3D 0; +} =20 /* * vma_prepare() - Helper function for handling locking VMAs prior to alte= ring @@ -2565,78 +2590,59 @@ static inline void abort_munmap_vmas(struct ma_stat= e *mas_detach) } =20 /* - * vmi_complete_munmap_vmas() - Finish the munmap() operation - * @vmi: The vma iterator - * @start: The start address - * @end: The end address - * @unlock: Unlock the mm or not - * @mas_detach: them maple state of the detached vma maple tree - * @locked_vm: The locked_vm count in the detached vmas - * - * This function updates the mm_struct, unmaps the region, frees the resou= rces - * used for the munmap() and may downgrade the lock - if requested. Every= thing - * needed to be done once the vma maple tree is updated. + * vms_complete_munmap_vmas() - Finish the munmap() operation + * @vms: The vma munmap struct + * @mas_detach: The maple state of the detached vmas */ -static void -vmi_complete_munmap_vmas(struct vma_iterator *vmi, struct vm_area_struct *= vma, - struct mm_struct *mm, unsigned long start, - unsigned long end, bool unlock, struct ma_state *mas_detach, - unsigned long locked_vm) + +static void vms_complete_munmap_vmas(struct vma_munmap_struct *vms, + struct ma_state *mas_detach) { struct vm_area_struct *prev, *next; - int count; + struct mm_struct *mm; =20 - count =3D mas_detach->index + 1; - mm->map_count -=3D count; - mm->locked_vm -=3D locked_vm; - if (unlock) + mm =3D vms->mm; + mm->map_count -=3D vms->vma_count; + mm->locked_vm -=3D vms->locked_vm; + if (vms->unlock) mmap_write_downgrade(mm); =20 - prev =3D vma_iter_prev_range(vmi); - next =3D vma_next(vmi); + prev =3D vma_iter_prev_range(vms->vmi); + next =3D vma_next(vms->vmi); if (next) - vma_iter_prev_range(vmi); + vma_iter_prev_range(vms->vmi); =20 /* * We can free page tables without write-locking mmap_lock because VMAs * were isolated before we downgraded mmap_lock. */ mas_set(mas_detach, 1); - unmap_region(mm, mas_detach, vma, prev, next, start, end, count, - !unlock); + unmap_region(mm, mas_detach, vms->vma, prev, next, vms->start, vms->end, + vms->vma_count, !vms->unlock); /* Statistics and freeing VMAs */ mas_set(mas_detach, 0); remove_mt(mm, mas_detach); validate_mm(mm); - if (unlock) + if (vms->unlock) mmap_read_unlock(mm); =20 __mt_destroy(mas_detach->tree); } =20 /* - * vmi_gather_munmap_vmas() - Put all VMAs within a range into a maple tree + * vms_gather_munmap_vmas() - Put all VMAs within a range into a maple tree * for removal at a later date. Handles splitting first and last if neces= sary * and marking the vmas as isolated. * - * @vmi: The vma iterator - * @vma: The starting vm_area_struct - * @mm: The mm_struct - * @start: The aligned start address to munmap. - * @end: The aligned end address to munmap. - * @uf: The userfaultfd list_head + * @vms: The vma munmap struct * @mas_detach: The maple state tracking the detached tree * * Return: 0 on success */ -static int -vmi_gather_munmap_vmas(struct vma_iterator *vmi, struct vm_area_struct *vm= a, - struct mm_struct *mm, unsigned long start, - unsigned long end, struct list_head *uf, - struct ma_state *mas_detach, unsigned long *locked_vm) +static int vms_gather_munmap_vmas(struct vma_munmap_struct *vms, + struct ma_state *mas_detach) { struct vm_area_struct *next =3D NULL; - int count =3D 0; int error =3D -ENOMEM; =20 /* @@ -2648,17 +2654,18 @@ vmi_gather_munmap_vmas(struct vma_iterator *vmi, st= ruct vm_area_struct *vma, */ =20 /* Does it split the first one? */ - if (start > vma->vm_start) { + if (vms->start > vms->vma->vm_start) { =20 /* * Make sure that map_count on return from munmap() will * not exceed its limit; but let map_count go just above * its limit temporarily, to help free resources as expected. */ - if (end < vma->vm_end && mm->map_count >=3D sysctl_max_map_count) + if (vms->end < vms->vma->vm_end && + vms->mm->map_count >=3D sysctl_max_map_count) goto map_count_exceeded; =20 - error =3D __split_vma(vmi, vma, start, 1); + error =3D __split_vma(vms->vmi, vms->vma, vms->start, 1); if (error) goto start_split_failed; } @@ -2667,24 +2674,24 @@ vmi_gather_munmap_vmas(struct vma_iterator *vmi, st= ruct vm_area_struct *vma, * Detach a range of VMAs from the mm. Using next as a temp variable as * it is always overwritten. */ - next =3D vma; + next =3D vms->vma; do { /* Does it split the end? */ - if (next->vm_end > end) { - error =3D __split_vma(vmi, next, end, 0); + if (next->vm_end > vms->end) { + error =3D __split_vma(vms->vmi, next, vms->end, 0); if (error) goto end_split_failed; } vma_start_write(next); - mas_set(mas_detach, count++); + mas_set(mas_detach, vms->vma_count++); if (next->vm_flags & VM_LOCKED) - *locked_vm +=3D vma_pages(next); + vms->locked_vm +=3D vma_pages(next); =20 error =3D mas_store_gfp(mas_detach, next, GFP_KERNEL); if (error) goto munmap_gather_failed; vma_mark_detached(next, true); - if (unlikely(uf)) { + if (unlikely(vms->uf)) { /* * If userfaultfd_unmap_prep returns an error the vmas * will remain split, but userland will get a @@ -2694,16 +2701,17 @@ vmi_gather_munmap_vmas(struct vma_iterator *vmi, st= ruct vm_area_struct *vma, * split, despite we could. This is unlikely enough * failure that it's not worth optimizing it for. */ - error =3D userfaultfd_unmap_prep(next, start, end, uf); + error =3D userfaultfd_unmap_prep(next, vms->start, + vms->end, vms->uf); =20 if (error) goto userfaultfd_error; } #ifdef CONFIG_DEBUG_VM_MAPLE_TREE - BUG_ON(next->vm_start < start); - BUG_ON(next->vm_start > end); + BUG_ON(next->vm_start < vms->start); + BUG_ON(next->vm_start > vms->end); #endif - } for_each_vma_range(*vmi, next, end); + } for_each_vma_range(*(vms->vmi), next, vms->end); =20 #if defined(CONFIG_DEBUG_VM_MAPLE_TREE) /* Make sure no VMAs are about to be lost. */ @@ -2712,21 +2720,21 @@ vmi_gather_munmap_vmas(struct vma_iterator *vmi, st= ruct vm_area_struct *vma, struct vm_area_struct *vma_mas, *vma_test; int test_count =3D 0; =20 - vma_iter_set(vmi, start); + vma_iter_set(vms->vmi, vms->start); rcu_read_lock(); - vma_test =3D mas_find(&test, count - 1); - for_each_vma_range(*vmi, vma_mas, end) { + vma_test =3D mas_find(&test, vms->vma_count - 1); + for_each_vma_range(*(vms->vmi), vma_mas, vms->end) { BUG_ON(vma_mas !=3D vma_test); test_count++; - vma_test =3D mas_next(&test, count - 1); + vma_test =3D mas_next(&test, vms->vma_count - 1); } rcu_read_unlock(); - BUG_ON(count !=3D test_count); + BUG_ON(vms->vma_count !=3D test_count); } #endif =20 - while (vma_iter_addr(vmi) > start) - vma_iter_prev_range(vmi); + while (vma_iter_addr(vms->vmi) > vms->start) + vma_iter_prev_range(vms->vmi); =20 return 0; =20 @@ -2762,11 +2770,11 @@ do_vmi_align_munmap(struct vma_iterator *vmi, struc= t vm_area_struct *vma, MA_STATE(mas_detach, &mt_detach, 0, 0); mt_init_flags(&mt_detach, vmi->mas.tree->ma_flags & MT_FLAGS_LOCK_MASK); mt_on_stack(mt_detach); + struct vma_munmap_struct vms; int error; - unsigned long locked_vm =3D 0; =20 - error =3D vmi_gather_munmap_vmas(vmi, vma, mm, start, end, uf, - &mas_detach, &locked_vm); + init_vma_munmap(&vms, vmi, vma, start, end, uf, unlock); + error =3D vms_gather_munmap_vmas(&vms, &mas_detach); if (error) goto gather_failed; =20 @@ -2775,8 +2783,7 @@ do_vmi_align_munmap(struct vma_iterator *vmi, struct = vm_area_struct *vma, goto clear_tree_failed; =20 /* Point of no return */ - vmi_complete_munmap_vmas(vmi, vma, mm, start, end, unlock, &mas_detach, - locked_vm); + vms_complete_munmap_vmas(&vms, &mas_detach); return 0; =20 clear_tree_failed: --=20 2.43.0 From nobody Thu Feb 12 14:09:58 2026 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 E5095768F0 for ; Tue, 11 Jun 2024 18:02:34 +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=1718128956; cv=fail; b=sWccI5WvehrIG6FJkVyj6uvD6lnBZJQ7UFSyMYMsxIVec8D/W7mhQanjlrt6zM6Rp4hob2tzg8kEkJxUjL7TDB4oYcFlLL8gUMvuaXAmY4mhH3YvsFO1BM+HSuBsOFgX6rVCuAIs++Y161EvF3A3hPgrJBWZAUaXFBFZs+rjn90= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1718128956; c=relaxed/simple; bh=Oo3iet3v3cMcoPvhPpngz3jP7uQATPzhq+4h0U4944A=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=cRWWBduXFW7cRxI6oNFdQ4SJCzOR3MJpsIvNCemIkGf1uNyYX+3k7Dx0lQcuANhaQh4Ddt1AdjghDfsEVBu36h3+Hj54TC7ac+rzYsxnbu0RnSQj6lxFdEJrYkXv6cXuyAS59sfoYcqA7LBGuNCkTJAWqKpaIDSU7s9vPA0+/2M= 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=NGzu64w5; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=kzvHeBJu; 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="NGzu64w5"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="kzvHeBJu" 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 45BFp2AT026892; Tue, 11 Jun 2024 18:02:26 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h= from:to:cc:subject:date:message-id:in-reply-to:references :content-transfer-encoding:content-type:mime-version; s= corp-2023-11-20; bh=NtDTgpOYmw2L9sa30CTDrsZtbzbSrSA9HR48G2SIoc0=; b= NGzu64w5f0IROt8lzQ8T/byFU1em0jhOC+Y27ozpl7BUJdmE/5U3AVfp+1UjmkKj oe+/8PFCd5mMxX5/XkFm8REhoWcT+xXmEO45HrhsxKHii0GTfVn41hWqdRLPfDRO cUHSPTpNXfnOGg3UmB3z14Hv8ZDxl9mEKpB6SRp/joU7sngxhDlS+gA6tVEo3xgB cLDXNPxkeBwLGSElvWgdiDHM7R7bBdI2OzxPIpveDiztBj7eIdThH5l+/H8YM0oi 0xeqoZWcNKDMshtdl5/LSSOUWkmoyvN6uD/xecl/ohoe0EfRWuIKM/v4WDXQssKg 8nAq+lRMpOnpLYbYylJ7mw== Received: from phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta01.appoci.oracle.com [138.1.114.2]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3ymh1gdh53-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 11 Jun 2024 18:02:25 +0000 (GMT) Received: from pps.filterd (phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com [127.0.0.1]) by phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com (8.17.1.19/8.17.1.19) with ESMTP id 45BGjHfI019928; Tue, 11 Jun 2024 18:02:24 GMT Received: from nam04-dm6-obe.outbound.protection.outlook.com (mail-dm6nam04lp2041.outbound.protection.outlook.com [104.47.73.41]) by phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 3ync8xjusx-2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 11 Jun 2024 18:02:24 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ogmRZTe+atuIevziUbJsXFQ8xKRskGoVJa20ZHNM/OKVeRpVjXCZx5Oy0wlDRRK/jOsxL/ya1AAnV0blEqNJFJ/ED9tGL0MT9+/p9hKkRlenCAZu9oBS706fuEtWFHZAEcaHqS4FhHvSwNGV1M7FMZ9h0jKVLJkKzTCYEkh668SLBBCz4GSdNNbroqf3JjTJ+23M8BM1Dh3u4tfAppiy5zMpbOH09HYbdiG/H0c2iytu3d8wkCU4muaiUmif6nm5dgXIYIdF0I/GPXr4QKUuZ9D/Qa2+36r8nWQDrhOtCu3tG0NN9MatNJ7kAvMigmkp7TlZtDo170vr4DANuQLlOA== 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=NtDTgpOYmw2L9sa30CTDrsZtbzbSrSA9HR48G2SIoc0=; b=KnTLPt6o2QCZ9jJbf7rjso7KV7wY47c0P9YH+nYExX/EBgvrspNLE4kCHw/JQeQaOsw8g+hix54N55oqy1tOORq5CpicB8WjG21DdCfQm5GM2F2w5rxtrgNexXDY25kdtlQf/xid9jX5cQO/EiYXI5maxqnqNJ5k4FSZq1ifWVfL9ZwNLLBjsZ5LywkHrLhLXLSwAnhxDGv1bJgLfu8Y/+/P6OeKmU3RAeDFzL9FC4/G68QaOp+6TcZ23/gfsQ5djwDtr3gwvY3R5MTdSYy4DMxYS5YyhqnTR1+LjD40ptgT/9XDrq0ddvWsndyxeYTUKGg6FWzNeynHfrY0Df3rWA== 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=NtDTgpOYmw2L9sa30CTDrsZtbzbSrSA9HR48G2SIoc0=; b=kzvHeBJuQT8lpMSWhKuFJ8FMAbBHFDUgdn+j65ynUvowrp3nmgoL9VOGq7RMRHuM9TJLfUkbrIcOtwhOyE4BubbTcaXlf/EYdyRQeRJh0NZ4xNoFYZ4a46p4dGQVGW/VWj8bk6fIZcS3z8OVIZiVIwm7ZYDDo+5oEZgiWqoFwmk= Received: from DS0PR10MB7933.namprd10.prod.outlook.com (2603:10b6:8:1b8::15) by PH7PR10MB6154.namprd10.prod.outlook.com (2603:10b6:510:1f5::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7633.37; Tue, 11 Jun 2024 18:02:23 +0000 Received: from DS0PR10MB7933.namprd10.prod.outlook.com ([fe80::2561:85b0:ae8f:9490]) by DS0PR10MB7933.namprd10.prod.outlook.com ([fe80::2561:85b0:ae8f:9490%7]) with mapi id 15.20.7633.037; Tue, 11 Jun 2024 18:02:23 +0000 From: "Liam R. Howlett" To: linux-mm@kvack.org, Andrew Morton Cc: linux-kernel@vger.kernel.org, Vlastimil Babka , Lorenzo Stoakes , Suren Baghdasaryan , "Liam R. Howlett" Subject: [PATCH 6/8] mm/mmap: Change munmap to use vma_munmap_struct() for accounting and surrounding vmas Date: Tue, 11 Jun 2024 14:01:58 -0400 Message-ID: <20240611180200.711239-7-Liam.Howlett@oracle.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240611180200.711239-1-Liam.Howlett@oracle.com> References: <20240611180200.711239-1-Liam.Howlett@oracle.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: YT3PR01CA0009.CANPRD01.PROD.OUTLOOK.COM (2603:10b6:b01:86::21) To DS0PR10MB7933.namprd10.prod.outlook.com (2603:10b6:8:1b8::15) 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: DS0PR10MB7933:EE_|PH7PR10MB6154:EE_ X-MS-Office365-Filtering-Correlation-Id: 3187f6e1-d892-41f4-110b-08dc8a40a532 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230032|1800799016|366008|376006; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?0XbtzXmbM9JUbznRhTXlNqduItg/IvPhUM7XXsA++SWuIUKLCoc9AmQeslQn?= =?us-ascii?Q?t89ldx7dXEJAnX8uYFjpXvCfMVU3yfA3y4Jhi8pf3QgysE+Ybhl3N1eQ/MHL?= =?us-ascii?Q?HSEVCdRxbrZ3YBCQFCaK+54+WLvW6YSR4wcD/xxh+ZZHybyInBpE39cyXHNo?= =?us-ascii?Q?t19qCMGpcrU9kY7+xDAUPivp2bdMoSrVQItXpbtkemh2Uq+Rtkh3N0lyvosh?= =?us-ascii?Q?0joLM6xA11f70ffKbWwfM/Wg/jl9DGpfQ/y1ubAJ6ysHq0MDd+6GcrzK8wPv?= =?us-ascii?Q?sWE9Vy6c1RiSjFcEvpbu5VhU9yvEJwOCcjctBHX+g/3nrI4slz9BTYWErUSD?= =?us-ascii?Q?sV7pJa08llqdUaATDL/B7BiL9W5tGCqLyHVcZYPIjos7ufsCzZ/xVQZlVbUO?= =?us-ascii?Q?6yxsuxfF8gyr4aL9G3ZdpqNxrc4mJqHsUAftyrL13vIduPHOrnq7FClCpFPL?= =?us-ascii?Q?78n9NUd6JT3X/f+DOmHBSiz95HRu98sSgeJukSdW16F7NR5lGAJNPo4xdDH5?= =?us-ascii?Q?TgzsHFhmsvgMCR38jU0dKRh0uNeO2G7ziH5EMAYcotc5OhPrNQ6hR3apsEca?= =?us-ascii?Q?WUUh91C7gh5Q/gxtkkB6UxDyrDwv0YP1sw+ryIYtu+XfJ/mqhovKSiIdnjQb?= =?us-ascii?Q?M6+f9VdpX93EVlte+ukJnDopZAJBBdoAGmwNr+lt/Yo/jYKPA2760EK4nuFT?= =?us-ascii?Q?I1FTlX1q7ts0AcS7H/NV5FHODuC+hUDaJutRrHbJ7I2F3G9+CkrneTIxqCMF?= =?us-ascii?Q?PJ5tANOoctLaCflgM9Stp4kroIZHJcAHphwgM35sCbwW0MPttxRUHruCaGw9?= =?us-ascii?Q?2wo+RlJwPS0C8hzsUNUsubqtTE2F7dZCtqde6+8dyfcI5sdKBNmqgzflwpNH?= =?us-ascii?Q?Cb5vEdrTuNScz3SZFKqOXVhxqEr8FJ+JsvoUZydtImRiKrjwT3hCoxtk2w4t?= =?us-ascii?Q?MyfPrdkvHv+mbesv10QJNUkUuNW6aD3nV28nAxG8VxSkh9xVNevMUHCE944E?= =?us-ascii?Q?bSvZtJE8/lmPM0M1bloheXpemYVjzTQelV9sNORLOdp7CwCHPXeJwF0x9bpk?= =?us-ascii?Q?iqP4tc6ZD7mv5MyaRvxqLzGprg+cuzn3DRx8yBJrs99uaSk3T5zRd87ko/I8?= =?us-ascii?Q?2TYABq6sn4y8jm7mQDyPEUUtNIDlMKl6mSE5iwy9EAPYMZI1CNa1YckTQ/O3?= =?us-ascii?Q?N8DnQ9lfbd/2PEWrOaOKgrdLc1Kb0C9nzEVHgDCtKsvpP+WkWPEJnRvyUCO/?= =?us-ascii?Q?3b1PhHuj6tDv/xTPh+9LCSU46BmbutaesBIpmAAMTD5GFiMTnMJvJYhRMV7j?= =?us-ascii?Q?oJ48XIcCoIfkc+jO3NEPLzEK?= 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:(13230032)(1800799016)(366008)(376006);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?o4GWb2izDziZVHgIyX7EalBsdWarTn+TH5Z2jEAvTzsn9M7dQSbAl/s5wLxO?= =?us-ascii?Q?doLPego8bQhNHS0h12q5gGG49272WjWKNfjz5p/vdV6joL2yRNFRHNA2Zqpl?= =?us-ascii?Q?izke1OQXS3lKqb0NhUjZtittarlHBfD8ncyO3nfZ0dFjOQeozJtoOthx3XIn?= =?us-ascii?Q?q1UheU1H1LGNTHUx8OKSpGYul5Tdc2D7cXAosgtTNi2jUHIj70EhVXAyolUu?= =?us-ascii?Q?mZmnmdOojDH4RT10ZGkmtwO3Po/9NVzKiCUAhMwIxb0N4O8CNWnjU2t+5732?= =?us-ascii?Q?pdHPrtjE+axR3MT5z76s9EBf5cnS1rEDnK6uaS6t4h9R7Ptv9RVJLgEVKRXK?= =?us-ascii?Q?nj4v30BewqZXaNENa4NTcxCh4xsZ/QFOhHnWXnzUO+/oZ9KIblg3nb5l5UPW?= =?us-ascii?Q?gc2w4Ew1emTJ9aG1T3NK+03JibrhkQHjAg7PbUYMeEA5uiPv8MI9sJOMldk1?= =?us-ascii?Q?LJ1T4hc8HFxzkaa3caHHLajJ9/RVZ303mm97OfRbDFPD8oOzGY/aT1Nx9lns?= =?us-ascii?Q?r3F6/NJKqUp+UJELde76bK+3z1FEXQBQvViNX3XyPK7uc6IzxHJlS+GPAbC3?= =?us-ascii?Q?WH+Akx4jdO+BbifvoJAhtbZmnSj9xxKGM1ifGfApoipGEbZhR79fGf2iCP6V?= =?us-ascii?Q?0Wf0Okr9T6Bkhnzxz80cWWakRg1553RxALuX3tXrfufLZbA0aFtZ8hZT4Ek4?= =?us-ascii?Q?xZ+PDO170n0uWUADvze97E5APiGphcTdZZhUhuzGYueZSii6SKNJ6luIglXT?= =?us-ascii?Q?LmeJT8HKy71d9G+PVZ5vmZ5AtP1r7K8wzCZ2+h23X+PmPIrijc2IuOlLZMXn?= =?us-ascii?Q?1kzibqnNMILoc9BJUjAZqlbq060knr9buaiUNgf6sOox2szGPQ6bl+94HvNj?= =?us-ascii?Q?Ew2x5uTFuSU0k2x2rJDAnXSp6ErQrXc6K7vpw0oUIKPALItvoQDkwPq+nE7+?= =?us-ascii?Q?AjvgQIGpkvZOSZqIuEq3eySFak5Beamgxwfs44mLIr9yQ0wBeZ5I1uWdaQZT?= =?us-ascii?Q?hlH9FmaLMt6SUtQQ3/fiA+SHKIkvoTvK0LNemU+Dhx0WMwS3Vu47wX87TvKn?= =?us-ascii?Q?IKeTRCS9Kpvtc3vN14WzaE7DNoukeckQHWAP5AMeEOdZT91FJf71tIn9DxJW?= =?us-ascii?Q?Nw04EZWl6gMudZ+s7bZPNXWk8PMRNJA6ku3LG391PDnEm6yggW7tU6miY8Qw?= =?us-ascii?Q?IZR74A+Slm7LQhj0Bw7K6Iw8g9OrWwH56qlLAMc3TJ3C9RQkiH3NsWkTcL71?= =?us-ascii?Q?Wb1gAZt6dI9/jakHnqxeanYF0ttM1RFyIvSge3qz6q8mKmnAORZQSGxd9iY8?= =?us-ascii?Q?5mCNNZlFMayyAxX98nq9nF9nZo8RpJogGhmyrUURstcP+WhBWElE11T1UlFI?= =?us-ascii?Q?SRrH3/ydwkuDYxCDAPpu8A3aAM8u3Bi+UfjB2mvljMcMVcF4BDtUmwOO1Rp+?= =?us-ascii?Q?FHoYlVXcI35xkeWF4GWYO+TJFqb8+nvFG7E+WbeKWQezYt2utDvKcPYYGRm6?= =?us-ascii?Q?RdbYLjHVSadzJ6ww1hZA8o/rS5i11npriSp47HK1wXHAghsd6+opqQDtdjjq?= =?us-ascii?Q?CwV8qv1zBgUNDT75kL3OUHVdjKFF6mFUpPm4osyT?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: OPM+h9LuSIngl06PhoJ4aKBobfckAayNaafSg4UpZUM+apc+Arw5Oi2VmIHtR7Q8dofLLmJDoRgtBhgXiMWMm4OavP+jWb3RVu598Hi/pw+8ns8cDDWvL3qpZ3KHDBbUbgcC5m3JcUch0KDaWuCrdmGY4r2g7bn2ctLxR78YvF2JkRHTu62dCPru72PaW//RkDx7DccIM+CdL17CytcRsc4YwqT5OYk0LthQu5a3OTWT/jR7Uqf28sDIURJy/+1EOctCNDqwJG5TORHH7IZmWzhTmf324G3x0zIztFTG41545UmY4aclURQ2CRP5JAKCTZQhr6mFPQhxj0VN8a7a3peyI9lvscUm/wjWQTOyWt0MATNSOUOqkVEyRyp7smo0IkKITIjEAMHHFQmZGBd/rwSrzQ5EA2AdJfSMaLgoinws0zqJ4/p0MeGKv5QfBVTFxupBWlI9RLQxK+7sDcAtWk4YDeXr6TKOZ0MGss6JSjMk2tq4NpERXzvxvZdPGojRIuC/aa8NGRpUybyC3N3Tln3p7C6BVVIPP0Y7voMp/nXQDYH9kbaIuStAo59W5kceZmkoIcXaV+hhjhGwvMuXMYXJS/irO81SWawN9g/Zv7I= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 3187f6e1-d892-41f4-110b-08dc8a40a532 X-MS-Exchange-CrossTenant-AuthSource: DS0PR10MB7933.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 Jun 2024 18:02:23.4824 (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: 9DTdHcJn6TSRE3l6n5ryphVKXFN79MYxfOcizABuOXTSWCPqVxxYa0UOnd/UoM0GjqWo8qpak6JsTGm8no7jKg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR10MB6154 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1039,Hydra:6.0.680,FMLib:17.12.28.16 definitions=2024-06-11_09,2024-06-11_01,2024-05-17_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 suspectscore=0 mlxlogscore=999 bulkscore=0 malwarescore=0 spamscore=0 phishscore=0 mlxscore=0 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2405010000 definitions=main-2406110123 X-Proofpoint-ORIG-GUID: uqKKyjR7leLkN6epM_XFWB4dKcB75pwl X-Proofpoint-GUID: uqKKyjR7leLkN6epM_XFWB4dKcB75pwl Content-Type: text/plain; charset="utf-8" Clean up the code by changing the munmap operation to use a structure for the accounting and munmap variables. Since remove_mt() is only called in one location and the contents will be reduce to almost nothing. The remains of the function can be added to vms_complete_munmap_vmas(). Signed-off-by: Liam R. Howlett --- mm/internal.h | 6 ++++ mm/mmap.c | 88 ++++++++++++++++++++++++++++----------------------- 2 files changed, 54 insertions(+), 40 deletions(-) diff --git a/mm/internal.h b/mm/internal.h index 6ebf77853d68..8c02ebf5736c 100644 --- a/mm/internal.h +++ b/mm/internal.h @@ -1435,12 +1435,18 @@ struct vma_munmap_struct { struct vma_iterator *vmi; struct mm_struct *mm; struct vm_area_struct *vma; /* The first vma to munmap */ + struct vm_area_struct *next; /* vma after the munmap area */ + struct vm_area_struct *prev; /* vma before the munmap area */ struct list_head *uf; /* Userfaultfd list_head */ unsigned long start; /* Aligned start addr */ unsigned long end; /* Aligned end addr */ int vma_count; /* Number of vmas that will be removed */ unsigned long nr_pages; /* Number of pages being removed */ unsigned long locked_vm; /* Number of locked pages */ + unsigned long nr_accounted; /* Number of VM_ACCOUNT pages */ + unsigned long exec_vm; + unsigned long stack_vm; + unsigned long data_vm; bool unlock; /* Unlock after the munmap */ }; =20 diff --git a/mm/mmap.c b/mm/mmap.c index 374cf89f0c30..ea3edfa8b22c 100644 --- a/mm/mmap.c +++ b/mm/mmap.c @@ -482,7 +482,8 @@ static inline void init_vma_munmap(struct vma_munmap_st= ruct *vms, vms->unlock =3D unlock; vms->uf =3D uf; vms->vma_count =3D 0; - vms->nr_pages =3D vms->locked_vm =3D 0; + vms->nr_pages =3D vms->locked_vm =3D vms->nr_accounted =3D 0; + vms->exec_vm =3D vms->stack_vm =3D vms->data_vm =3D 0; } =20 /* @@ -2347,30 +2348,6 @@ struct vm_area_struct *expand_stack(struct mm_struct= *mm, unsigned long addr) return vma; } =20 -/* - * Ok - we have the memory areas we should free on a maple tree so release= them, - * and do the vma updates. - * - * Called with the mm semaphore held. - */ -static inline void remove_mt(struct mm_struct *mm, struct ma_state *mas) -{ - unsigned long nr_accounted =3D 0; - struct vm_area_struct *vma; - - /* Update high watermark before we lower total_vm */ - update_hiwater_vm(mm); - mas_for_each(mas, vma, ULONG_MAX) { - long nrpages =3D vma_pages(vma); - - if (vma->vm_flags & VM_ACCOUNT) - nr_accounted +=3D nrpages; - vm_stat_account(mm, vma->vm_flags, -nrpages); - remove_vma(vma, false); - } - vm_unacct_memory(nr_accounted); -} - /* * Get rid of page table information in the indicated region. * @@ -2589,16 +2566,20 @@ static inline void abort_munmap_vmas(struct ma_stat= e *mas_detach) __mt_destroy(mas_detach->tree); } =20 +static inline void vms_vm_stat_account(struct vma_munmap_struct *vms); /* * vms_complete_munmap_vmas() - Finish the munmap() operation * @vms: The vma munmap struct * @mas_detach: The maple state of the detached vmas + * + * This function updates the mm_struct, unmaps the region, frees the resou= rces + * used for the munmap() and may downgrade the lock - if requested. Every= thing + * needed to be done once the vma maple tree is updated. */ - static void vms_complete_munmap_vmas(struct vma_munmap_struct *vms, struct ma_state *mas_detach) { - struct vm_area_struct *prev, *next; + struct vm_area_struct *vma; struct mm_struct *mm; =20 mm =3D vms->mm; @@ -2607,21 +2588,21 @@ static void vms_complete_munmap_vmas(struct vma_mun= map_struct *vms, if (vms->unlock) mmap_write_downgrade(mm); =20 - prev =3D vma_iter_prev_range(vms->vmi); - next =3D vma_next(vms->vmi); - if (next) - vma_iter_prev_range(vms->vmi); - /* * We can free page tables without write-locking mmap_lock because VMAs * were isolated before we downgraded mmap_lock. */ mas_set(mas_detach, 1); - unmap_region(mm, mas_detach, vms->vma, prev, next, vms->start, vms->end, - vms->vma_count, !vms->unlock); - /* Statistics and freeing VMAs */ + unmap_region(mm, mas_detach, vms->vma, vms->prev, vms->next, + vms->start, vms->end, vms->vma_count, !vms->unlock); + /* Update high watermark before we lower total_vm */ + update_hiwater_vm(mm); + vms_vm_stat_account(vms); mas_set(mas_detach, 0); - remove_mt(mm, mas_detach); + mas_for_each(mas_detach, vma, ULONG_MAX) + remove_vma(vma, false); + + vm_unacct_memory(vms->nr_accounted); validate_mm(mm); if (vms->unlock) mmap_read_unlock(mm); @@ -2669,13 +2650,14 @@ static int vms_gather_munmap_vmas(struct vma_munmap= _struct *vms, if (error) goto start_split_failed; } + vms->prev =3D vma_prev(vms->vmi); =20 /* * Detach a range of VMAs from the mm. Using next as a temp variable as * it is always overwritten. */ - next =3D vms->vma; - do { + for_each_vma_range(*(vms->vmi), next, vms->end) { + long nrpages; /* Does it split the end? */ if (next->vm_end > vms->end) { error =3D __split_vma(vms->vmi, next, vms->end, 0); @@ -2684,8 +2666,21 @@ static int vms_gather_munmap_vmas(struct vma_munmap_= struct *vms, } vma_start_write(next); mas_set(mas_detach, vms->vma_count++); + nrpages =3D vma_pages(next); + + vms->nr_pages +=3D nrpages; if (next->vm_flags & VM_LOCKED) - vms->locked_vm +=3D vma_pages(next); + vms->locked_vm +=3D nrpages; + + if (next->vm_flags & VM_ACCOUNT) + vms->nr_accounted +=3D nrpages; + + if (is_exec_mapping(next->vm_flags)) + vms->exec_vm +=3D nrpages; + else if (is_stack_mapping(next->vm_flags)) + vms->stack_vm +=3D nrpages; + else if (is_data_mapping(next->vm_flags)) + vms->data_vm +=3D nrpages; =20 error =3D mas_store_gfp(mas_detach, next, GFP_KERNEL); if (error) @@ -2711,7 +2706,9 @@ static int vms_gather_munmap_vmas(struct vma_munmap_s= truct *vms, BUG_ON(next->vm_start < vms->start); BUG_ON(next->vm_start > vms->end); #endif - } for_each_vma_range(*(vms->vmi), next, vms->end); + } + + vms->next =3D vma_next(vms->vmi); =20 #if defined(CONFIG_DEBUG_VM_MAPLE_TREE) /* Make sure no VMAs are about to be lost. */ @@ -3632,6 +3629,17 @@ void vm_stat_account(struct mm_struct *mm, vm_flags_= t flags, long npages) mm->data_vm +=3D npages; } =20 +/* Accounting for munmap */ +static inline void vms_vm_stat_account(struct vma_munmap_struct *vms) +{ + struct mm_struct *mm =3D vms->mm; + + WRITE_ONCE(mm->total_vm, READ_ONCE(mm->total_vm) - vms->nr_pages); + mm->exec_vm -=3D vms->exec_vm; + mm->stack_vm -=3D vms->stack_vm; + mm->data_vm -=3D vms->data_vm; +} + static vm_fault_t special_mapping_fault(struct vm_fault *vmf); =20 /* --=20 2.43.0 From nobody Thu Feb 12 14:09:58 2026 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 C0BBF59162 for ; Tue, 11 Jun 2024 18:02:37 +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=1718128959; cv=fail; b=bjd9II7PIIOHOgEczFtgZsTA/7DU+Zllg5555wD3cvME58x03/oSH9DSzLCZ2iFWQtJbedKc5iSbE5so/fFIamoF8SHOjzJ6KQmt2cU1AJ8/VP7vQ9u/iQ87GJXArpQRdSiLs7G+bNdOwOzpMr9DjH5KqjSrGzYaHBzeEHO+NuU= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1718128959; c=relaxed/simple; bh=ige4gjkJgBojvifjpmFqPADl8rqQyWYK4vlX3BABb1U=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=rS2GzNIL6D/1k89rMm10S1SGBGVg3+S8XSTm/8f0A6upXPVEoMp2x3tmkH17rBDLW1Ql8kK82RZ/dUDPdrvEs9q8hyTHA8mHn2kQV1cmvnBy8kGALlTZU5JRsPHgtmit+cE2/v9APr7MJ67IbPc7CEO54Eob8zrdy+VAZal07kY= 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=b8HQwjlG; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=qGr4oAUc; 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="b8HQwjlG"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="qGr4oAUc" 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 45BFqPDK026906; Tue, 11 Jun 2024 18:02:29 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h= from:to:cc:subject:date:message-id:in-reply-to:references :content-transfer-encoding:content-type:mime-version; s= corp-2023-11-20; bh=DzwidLfB2+Oj4+gECndOMyGaNu4vWwb1mc2Xd3lGz3k=; b= b8HQwjlGnarCPuefJnRVLTOazKiTqg2JJ6eJ2gbqgUSOALvJF6BsBJPSxdRz96mk 7f5pbSkgMbbKYJ1gEIWhU4H4UTpbnj8AXpL4YVT3LLALbG73/pppABCFpPXU54jy 9xtxKwVdclwoPObIWlQiglwn5tdnE76MFxouGAAlNRsrSZfSP6zjJVgXVzYNCxJj IwYDCGJo5CgzxbAGk+wLu8kVyyHCsGgkW3z3inlwAR3sFMd+HlaIdxXrvaJ3Eupu 5ioW1MEGDpZu0DRIbIFKJ/RkvbOUzka2QKxE2ADHMFlB13nFNbXmVbKcr/YWo+h4 S1HYXHv/dBjz3IA3i/886w== Received: from phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta03.appoci.oracle.com [138.1.37.129]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3ymh1gdh5c-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 11 Jun 2024 18:02:28 +0000 (GMT) Received: from pps.filterd (phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com [127.0.0.1]) by phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (8.17.1.19/8.17.1.19) with ESMTP id 45BGbsre012576; Tue, 11 Jun 2024 18:02:27 GMT Received: from nam11-dm6-obe.outbound.protection.outlook.com (mail-dm6nam11lp2168.outbound.protection.outlook.com [104.47.57.168]) by phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 3ync9x86xn-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 11 Jun 2024 18:02:27 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=WVcVZK7pelpYaH/RVTAH6yp9cN/XTIvAMF3RW1mhURKuz/fxBwSuI0OT5ri6Su2l+SufhzmPd/J609bFFOzC0pgKROprN+md8Uy977XW4oKOiUXrCYelm1+hYgjNRNlFUxUUwbFwma3jP3mL2Tg5H/dYARZDlI3a3G5N/wZaUi/rmvkmptqDeKfWtOkGYuTpWwo/yLFtN0f0sZBFcBHMap37wG2zGH7oDnxGmBrp9eWXdRDHk3UILVztnlRFkNdubnXFyk/6k5Fy9XIeqzsbGRmLvtZAy4rce1GVFaqt/vdbQD9HlKHDkpF/9FyBL2W4iduGF3giPaEluASJoSuatg== 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=DzwidLfB2+Oj4+gECndOMyGaNu4vWwb1mc2Xd3lGz3k=; b=lt/L1RDPjiNngtQoBtiNIzexkpfx44XwPs06jKl2s7fIzSXfKMkpu5mfX9UAMb/c5wmgdH96QCTknyKzfNPLGkv9OpHpZ7/HAETepqZR9yZLqmj9ZOiTsLyOWqsit6xq7lcwijbPb3p72QtHX4xSYGbOa++5fgaGQfejqLwfJvFvXapMVAOxr1q/Hv/P08SPKJv7y2PYii6PVeGNIdsqqxG5tr1lAMxf3vNUPGGsKP71AIG6jqLfYNnmYFXXeh9zdgu9scfDloqb96AXBgNONtYu6a4dE1PcXeV8C63Qv7oYasMRipYvdZcn0ZYAI+esfMFrpE+hTVhUixxbmlYiCQ== 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=DzwidLfB2+Oj4+gECndOMyGaNu4vWwb1mc2Xd3lGz3k=; b=qGr4oAUcHsiCt/GA6uvWkJVHCHCDyn8Yvq6qPRuIVa2T8/2hXXmdegJuKLFCHIgkdR1e5B6i9+JHyJARSnxhKWxxg9DyeY+s10C1kJiA9MqC2zypJCJFho4fWa1sHwyhsT+uCQulO4HiS15pQTnh12bX6l6RMqPhm8R3Ii6sAVo= Received: from DS0PR10MB7933.namprd10.prod.outlook.com (2603:10b6:8:1b8::15) by LV3PR10MB7817.namprd10.prod.outlook.com (2603:10b6:408:1b8::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7633.36; Tue, 11 Jun 2024 18:02:25 +0000 Received: from DS0PR10MB7933.namprd10.prod.outlook.com ([fe80::2561:85b0:ae8f:9490]) by DS0PR10MB7933.namprd10.prod.outlook.com ([fe80::2561:85b0:ae8f:9490%7]) with mapi id 15.20.7633.037; Tue, 11 Jun 2024 18:02:25 +0000 From: "Liam R. Howlett" To: linux-mm@kvack.org, Andrew Morton Cc: linux-kernel@vger.kernel.org, Vlastimil Babka , Lorenzo Stoakes , Suren Baghdasaryan , "Liam R. Howlett" Subject: [PATCH 7/8] mm/mmap: Extract validate_mm() from vma_complete() Date: Tue, 11 Jun 2024 14:01:59 -0400 Message-ID: <20240611180200.711239-8-Liam.Howlett@oracle.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240611180200.711239-1-Liam.Howlett@oracle.com> References: <20240611180200.711239-1-Liam.Howlett@oracle.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: YT3PR01CA0028.CANPRD01.PROD.OUTLOOK.COM (2603:10b6:b01:86::34) To DS0PR10MB7933.namprd10.prod.outlook.com (2603:10b6:8:1b8::15) 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: DS0PR10MB7933:EE_|LV3PR10MB7817:EE_ X-MS-Office365-Filtering-Correlation-Id: 8378824b-18c7-4d01-6dd3-08dc8a40a63f X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230032|1800799016|366008|376006; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?dMVU7J/jJ0bQ00uLB3NSnV1oBVOBSJK8RxxjPaqZQgNBHKVbNHo0QFTQrLfX?= =?us-ascii?Q?FC6v/sq0864WFC/EgeAEvhikMEOj834XlwHLDRKBFhtQRiXXuFxmY1P1u177?= =?us-ascii?Q?057OKD+V/rSyvMxZx1t8r1PVboLO6ZWV9EVJb2LLsgJZH0SQmwdnujKjwU0Z?= =?us-ascii?Q?WOmC3cqdy3g0tUdjJ04Df2kQZfv4F3RasZ7M8ow0KkDEISmv9Qu9ZoznbS0t?= =?us-ascii?Q?1GJzwBSrvQ/leinPnTfQX0eFcZmjM9GcpsFgOLbJGhrhUBd+dT/MZDwLOxA6?= =?us-ascii?Q?hIh9gm5Idx2UT941cBGmmeYXW/5m1HSRiY2hltl3biHdLveLVZlldZPrGQjQ?= =?us-ascii?Q?RvK3eMAqBd8jy27UTpbNxAg7cz8Nd5H8Ys/EPPvXUhny9UWJtLf6cjvBd/9p?= =?us-ascii?Q?zxFkM8fJkGU1pxJUefnK2rPvwbHOCaueCiwCSDKM9KXRKaUceVT3T4DjrYVW?= =?us-ascii?Q?Pvv2ik2vQQonsPXVYxgN4lL100KR6gBluIHozWUPmvROBPC6goyRa2dOjfZL?= =?us-ascii?Q?JSqH3WTwdihvsz5Rq44KoY93TkI3baNlGrUYCIYzsUB4KlAhij+DwkVa5Y6G?= =?us-ascii?Q?j3TRJMhxXK1JwsC+NxII+3VZXvWU1ug5ln/bLhOxh/H14IwH+fH0aDhGY0sW?= =?us-ascii?Q?DRqkyQaumgeNFM2BmfMGpwKdLYS6aZRTxNxSV9D5bmWLvXdoEoGuNhASCmBh?= =?us-ascii?Q?Ox4Cw3GYYxH4YHuo9ybWdvoyV/M/0utr6+UqoeXO2vH8a5NZXYW/9KTt0rHG?= =?us-ascii?Q?UDt+Zo1xV4lFbdGIya/83VPP3Zy4mYxSMdosSba+lCP06JtNwjlk4yy/fYx0?= =?us-ascii?Q?d2JI9ABlZKIaAE/1eiiOyhZ5hhZe6gFuKfQocKM5IsR0n+U+lBhLCs7HtQMx?= =?us-ascii?Q?tbjiMBjJjcixiHe7aghtqEORVY+7UWbFX/yj7PGVb49KExviTI2JVeTDZPj8?= =?us-ascii?Q?jSclmm13aeNV0cv7CQTFzGEdXBq2oWYUt5XBGvjvJg2GjVnUBmcdeCFmovE1?= =?us-ascii?Q?IlP8IxkiQt47pwAtbE8IHMeQQWG0MB6dD14pvNJTpuZMl8YjahOHBsDgfAre?= =?us-ascii?Q?ULvO44LkHbMab2gkdwH69/r/05N18QNpZ8R5xaEUZGnjo6HimdNmkY9ffuu6?= =?us-ascii?Q?ibVY0D58i58ThifTdFvpcCEJrEWVldMZ7j5Ek8nDpvsKGdCJ2ZWvK5pjFFUQ?= =?us-ascii?Q?lk4LPuosTeuKCLY38qp1B11iGf7jMBJpzi7F9BJfJa0kPY/SoaS3IDhYbbHa?= =?us-ascii?Q?sR0DIhL6dm4iXaUcr9EJuJIWIpIdQBT3s5HCXTlJjCAWq0R6uEhJvbVM7u8S?= =?us-ascii?Q?lijB8RerW9UpEStAC6HgmAss?= 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:(13230032)(1800799016)(366008)(376006);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?VNQ1vRrzmDRQ5I+BOLrqOrqSHqbMgYvB8WScX+YZq/Ebwf+Yw4yvfqlq6QX8?= =?us-ascii?Q?eJX3pz93g2epm/tfj3P9vN3O8j59VY/2U64nAv9rDVd8FNs5WAf+zYzGcG/6?= =?us-ascii?Q?0b8V/OqDje9rTDI8w9mWedMC0pmXRkRKv70PnbBnpR9DS0KEMMYub0tpRVqA?= =?us-ascii?Q?dArKOw7CShBl9TCqCtx0AgvmYXDgKOnQCa1yvGq2TJZXyHVFN7/nsmNktNI4?= =?us-ascii?Q?6F9BHPswA5RQpJbmJhsPyBBndfurizHGWbVU9eLuJqcgkxlukNulQ9cHMZVy?= =?us-ascii?Q?onCLPFW7VJvhHDgqrNZWdLdQozBjYA1ulhJCPwyUEbRMrBkpO1SSTFx+QYsC?= =?us-ascii?Q?3cgwPsSdKbGz19x/60n79pEAh1V03yrKLB7shChtbOAt5DstLKNgoVIhpzTf?= =?us-ascii?Q?q5v4GhiGOOfhQldwDvalqLuPSWMTWylNNmA3dY9V0K8pBk3ycD700GudjXtC?= =?us-ascii?Q?mh5AwYnNJtcuBQpCDcaMxcjeR/8HFhVDQYL/yzwHxmsMAivgUR/g/ixAqpdj?= =?us-ascii?Q?l4Y1/ZtfNYuY4kCj40YTSAowyAacA1s3dxQW/vul7zGhD6czJYFhKKejChZf?= =?us-ascii?Q?HJ3M/yA/nKbBpqTDU2M9OTdfhKcC6JQE+GveMTZX9gIS/vEMrnNuf2r4BTsJ?= =?us-ascii?Q?7PnKWW1vmZKyL8sZdvK8qv+OladGdLYczsVNPwNColgAfHUbTxExA6+1mf/D?= =?us-ascii?Q?G9nYIS6LXZF9tJwFaoach9lxgs0jL6J4lOIIHnze+3GHuaCk+VRr00n6A/ya?= =?us-ascii?Q?8YTvcOcM/s7wp12EX4y5WIYqOfBdIkp6Q7sGV3/K8JU1Q8DY4oWIyApHti4F?= =?us-ascii?Q?zIpocll800qn3ZfxSmiF3KnHM1AHuj//IkKxdCkB0duB9joMlExuwZ/lo5pc?= =?us-ascii?Q?7K47Mhff8bMmUGq/FdLr3a50LonooLxsIFUasJVqUM1vfmWfWIxEcB60LLd1?= =?us-ascii?Q?1QIqM8Sb84xIkyhGob5QC6dd0GOQYbwMprvaKKD+X7V/aGl77N/4O5Ry3oUp?= =?us-ascii?Q?lQfvGHZ62PRX9o20XAMU3EJzbGiIMX/n+pQUAcfhoi7B69OLIik08S5UcTiS?= =?us-ascii?Q?mJ3YPkpcbHkrjm0tar+xR59ZDJVt1aaIuVMBuUmKE2Dvmx8TZlFJ8AnW9tqP?= =?us-ascii?Q?VVmF80fyKDZrAwbcedDXu06hb2em3dlm2HC3IRG0S33GA/ocOE/SpCY83A3Z?= =?us-ascii?Q?v6uF43k7OcNU6M4p2rHv0NuwIta22lDwcGBTKuZw3LndNZoLtOVLa5Jdzb5x?= =?us-ascii?Q?D6gLOYUlHZ/YrAg2M3X8cQxm1JL8OXr1vXK2aBH4xfmQPw3simQnq+7V3Z8Y?= =?us-ascii?Q?Fn6VppVFJmaehTGMCW/TriN+6Der/lYQGQDSPGiEEJWASzcJzHVZcInRcv2S?= =?us-ascii?Q?NYNJt4caCSiQYu7AgNLdsVwawpwllvL89K14vnDYp6N9EZox6lRZzr1Z8MQY?= =?us-ascii?Q?eg/Bw5RDR6wiQjnHE/kj5Pf7w0901eDfAZLdvuH1dcqBKFno20X5Z1m2XkLF?= =?us-ascii?Q?ExMmBKcWtkVC38A1xRJfgWMPNREGm2v1PWKO6Y4fbwhiA1/W/AcxajW3BSVH?= =?us-ascii?Q?7diiWnsoN4kq51kHc2c2y27zJp2+R60ZPJ8OYxFar3Qm8lZWv8kuMIa93HCE?= =?us-ascii?Q?sg=3D=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: +aTpRKI4Be8pr+4jI4QJGAvqKugDsgk8TgdR4X2kmqMddjXldK1aiS6ldC2YHnRXYdpxYYgG/BUrHv+ilBduzF71LKDETDtLetHXtgyfya2gX5MUld6MqAohjpnVJepOMNz4vo1FfhlosPJJMaEmTws+RPtYizH4xWCE7Fdwch9pYpxXnrx3PFiIAq4Tospmnx8SpS7kEuRb8l49JvsZnIBFRya+cwtVFj7xZjgCf9MBR6lvNPMPAAKKVEB48r6X3a6i9OGltVUetdGYpKgQsL8yniQI6LE/xN4MycxltZxHR2vS2kl3oLLULmDnt1+XCg+cgtfF6gQsKWgYOTUo0HR2lGmEFWvHSCU9OYFjq8XSvGbfOCrT1VTX1ciM/6B7iB2EA1ja2L6jJDnEeJqsLtajDbgwZ8zx2j/kte2BIsDF5KsY3MY89zgnqvGUAzMo7Pv6xRM+TA4zVo2T1YuXpIZ21v3dZd2yx2rKrwgULjHTJyJlyBrz4fLIdoxs33UhoS0yv2nLosQj5GK9HvkkqKh3wv4sAw3yxOCS3b0/VTtzRAnRuNzIYYmtB8WlqJYWWy+oKHiCCZCq7RDLFtsCgJGKevNnAUbIdaWnn6S4WYg= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 8378824b-18c7-4d01-6dd3-08dc8a40a63f X-MS-Exchange-CrossTenant-AuthSource: DS0PR10MB7933.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 Jun 2024 18:02:25.2374 (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: /0d3TzjGmzFbQ+5k2hRd2pg6/B1S6mBMf9n93T0B3tqEB/asqVaj7dU4Fu3xKs/no3KdX11FEwVKCFleyTRjXg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: LV3PR10MB7817 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1039,Hydra:6.0.680,FMLib:17.12.28.16 definitions=2024-06-11_09,2024-06-11_01,2024-05-17_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 mlxlogscore=999 adultscore=0 phishscore=0 suspectscore=0 malwarescore=0 mlxscore=0 spamscore=0 bulkscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2405010000 definitions=main-2406110123 X-Proofpoint-ORIG-GUID: U_PXfPpToUWq1fxUhMUwCixk-rr7Ugv2 X-Proofpoint-GUID: U_PXfPpToUWq1fxUhMUwCixk-rr7Ugv2 Content-Type: text/plain; charset="utf-8" vma_complete() will need to be called during an unsafe time to call validate_mm(). Extract the call in all places now so that only one location can be modified in the next change. Signed-off-by: Liam R. Howlett --- mm/mmap.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/mm/mmap.c b/mm/mmap.c index ea3edfa8b22c..5334077964b9 100644 --- a/mm/mmap.c +++ b/mm/mmap.c @@ -605,7 +605,6 @@ static inline void vma_complete(struct vma_prepare *vp, } if (vp->insert && vp->file) uprobe_mmap(vp->insert); - validate_mm(mm); } =20 /* @@ -693,6 +692,7 @@ int vma_expand(struct vma_iterator *vmi, struct vm_area= _struct *vma, vma_iter_store(vmi, vma); =20 vma_complete(&vp, vmi, vma->vm_mm); + validate_mm(vma->vm_mm); return 0; =20 nomem: @@ -734,6 +734,7 @@ int vma_shrink(struct vma_iterator *vmi, struct vm_area= _struct *vma, vma_iter_clear(vmi); vma_set_range(vma, start, end, pgoff); vma_complete(&vp, vmi, vma->vm_mm); + validate_mm(vma->vm_mm); return 0; } =20 @@ -1062,6 +1063,7 @@ static struct vm_area_struct } =20 vma_complete(&vp, vmi, mm); + validate_mm(mm); khugepaged_enter_vma(res, vm_flags); return res; =20 @@ -2440,6 +2442,7 @@ static int __split_vma(struct vma_iterator *vmi, stru= ct vm_area_struct *vma, =20 /* vma_complete stores the new vma */ vma_complete(&vp, vmi, vma->vm_mm); + validate_mm(vma->vm_mm); =20 /* Success. */ if (new_below) @@ -3308,6 +3311,7 @@ static int do_brk_flags(struct vma_iterator *vmi, str= uct vm_area_struct *vma, vma_iter_store(vmi, vma); =20 vma_complete(&vp, vmi, mm); + validate_mm(mm); khugepaged_enter_vma(vma, flags); goto out; } --=20 2.43.0 From nobody Thu Feb 12 14:09:58 2026 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 8D2F381AD0 for ; Tue, 11 Jun 2024 18:02:40 +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=1718128962; cv=fail; b=NpQD9n76HVTa49aw2hrQVUFfW/GXnPr3cwZBda3i34vF8Sy9mcLEWY7hNoFeydDo+K6+wdp8/qJk+hDiz/4Vh5dybtIuzqVJfK9ZrjR305uooA+qeyHjXrb1MHkOdDM/81Xv5vz+ogOExHDSAYYtDPPSsOATFkbtGMffZnuSMb0= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1718128962; c=relaxed/simple; bh=2Qxvlqn684ELb88HmNbn4S3Hq7wIhyhTAIJfO3K0Zno=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=VS3lrOtAkmHFnpW2TZVq5vBXJ4GOtSt8c/SmN09KTeQQP9wxjqVI7H05mZIp0N73vd0jK9YV9CQH4T0rudyIsJuEU2IbnxPoB6CS0olLc/iFaAQ6Asn20hK0TsH9bSDo+w5dn0t9kPCK2VtYMu+zXTdRBu/hZknzILQkHit+F1w= 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=X9kCJdvL; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=R7zF95PN; 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="X9kCJdvL"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="R7zF95PN" 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 45BFkYpW028066; Tue, 11 Jun 2024 18:02:30 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h= from:to:cc:subject:date:message-id:in-reply-to:references :content-transfer-encoding:content-type:mime-version; s= corp-2023-11-20; bh=bMNMMbkVdKsWL+X9S/u4EznZThp+EIj+7eh8ailBinM=; b= X9kCJdvLz/Dnl7kAgMYiERJQ2BT379238nsGBNUlSQkvoE0X+RcXgUkQwyWd9wwK lj7zMv//k2HLxrxe1HYH9b32GFACNEBW7Vs3uD0mJ/DGw5ACGdjXzJFqf6+88rcY 2uuFcbf+7DHEfASaYWM1IXblyFIjIf+Ghkj9d8MuGj39NRjuSmAKk9v8gWjluSCz o7SxjZ+6kN4oYO4dg7PEWOpUtOreA3jWgw9Amz7nZ/91vYdXfcfeeb9LMDchsbrZ neOk3eA7K90iGl3u4FZQAaxedZSY5HD/pHRR7xpn7QQRs7kHOG0lMMm9OldXfur9 eHIb+dF0ekeiTLb1mXhvaA== Received: from iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta02.appoci.oracle.com [147.154.18.20]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3ymh1mdfxq-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 11 Jun 2024 18:02:30 +0000 (GMT) Received: from pps.filterd (iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (8.17.1.19/8.17.1.19) with ESMTP id 45BGVBTk036740; Tue, 11 Jun 2024 18:02:29 GMT Received: from nam11-dm6-obe.outbound.protection.outlook.com (mail-dm6nam11lp2169.outbound.protection.outlook.com [104.47.57.169]) by iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 3yncdwm88r-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 11 Jun 2024 18:02:29 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=V/rGPrgSXpvlMPYciMgsd1+xUJDfKK5UIrEVivMgzaeUgWrp0DYgyPlYIauJFIRx9aWRhBckDaiYbL+SxGC/jNIq2yVXF8x8GQGwXlI2/FUB9ySOYz3NkydmMFOi54iQuBiiH1drtTFFsc381+cB1cTDqWlJplOKgCqzV5l0UFr9XaTdnpBmqfw4RHiiMPmvbZexuEEUeNJ2dyCFx+nHTpdDpGwCrNRNRQYnpLrsyna4Zda66p/jah6c755qG228O8+zbL7yXia77JNyq2FlP6SStPg/vZTtAl7C5vZsr5aMpMCoudmrqJFgx6j8GDnFkU1VagZPElcST7OgYPetQQ== 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=bMNMMbkVdKsWL+X9S/u4EznZThp+EIj+7eh8ailBinM=; b=lNQaPNf3ietpYRiIqz11Ws8xVWI3W6DObdJXaWy0DSbEaw5GlBamQYVgvhBUvSv//JAQQBZQvXKes0imnIP4CKSK+M2eaaIZc+VSySIi0iOmwkZdDHdTgObVm2gZLgVZUdfNA02nxwiCnSxQGMk2Nmd5S1pTgZKKFQt7LgQwqWtX9zC8cu6JDjjYE/uqG73WEKmZbtxxFk/Oc7gKACTARwlDkJwqxXxl/9t9LVfchgCTD2JqhR2Mw6Jj2Um8x+i1xy6yAwKoVAumtlNBkt3NdKve7cP5AkLcc6t9wztFHVz3APb8hh8jbKSBL1Ud87rXJ+u5qThxsRBnNM+ZOlAO/g== 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=bMNMMbkVdKsWL+X9S/u4EznZThp+EIj+7eh8ailBinM=; b=R7zF95PNZt+tu5UCY3jKy2DX73A6J/uPMtI0hoz+LwbHZvdo/5l7RxxaDKS98fH+29RguYuwlDUahet2zvTXiVTYvMMidpzjfdC/btBOmhjJOxClHmWjkazmobtdPkxzvSiTP1NhrDf54DbJjsXQGv8bz/zVP6Qcc4MHbTYJA5Y= Received: from DS0PR10MB7933.namprd10.prod.outlook.com (2603:10b6:8:1b8::15) by LV3PR10MB7817.namprd10.prod.outlook.com (2603:10b6:408:1b8::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7633.36; Tue, 11 Jun 2024 18:02:27 +0000 Received: from DS0PR10MB7933.namprd10.prod.outlook.com ([fe80::2561:85b0:ae8f:9490]) by DS0PR10MB7933.namprd10.prod.outlook.com ([fe80::2561:85b0:ae8f:9490%7]) with mapi id 15.20.7633.037; Tue, 11 Jun 2024 18:02:27 +0000 From: "Liam R. Howlett" To: linux-mm@kvack.org, Andrew Morton Cc: linux-kernel@vger.kernel.org, Vlastimil Babka , Lorenzo Stoakes , Suren Baghdasaryan , "Liam R. Howlett" Subject: [PATCH 8/8] mm/mmap: Use split munmap calls for MAP_FIXED Date: Tue, 11 Jun 2024 14:02:00 -0400 Message-ID: <20240611180200.711239-9-Liam.Howlett@oracle.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240611180200.711239-1-Liam.Howlett@oracle.com> References: <20240611180200.711239-1-Liam.Howlett@oracle.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: YT3PR01CA0015.CANPRD01.PROD.OUTLOOK.COM (2603:10b6:b01:86::24) To DS0PR10MB7933.namprd10.prod.outlook.com (2603:10b6:8:1b8::15) 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: DS0PR10MB7933:EE_|LV3PR10MB7817:EE_ X-MS-Office365-Filtering-Correlation-Id: d7a2ba15-4c2e-4087-8e95-08dc8a40a77a X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230032|1800799016|366008|376006; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?h/jw1PkvYZs3tplSB/lHzlMddBKywz55DpWVKPg64DblTOGue1CmiWFPB2e0?= =?us-ascii?Q?5iA1qag+Tk6rPMnRajAWzCKp2XvLPbZO+nGu+SCVrawsgDm7Ewmvfqd5XRNu?= =?us-ascii?Q?w4ieqkJfato6gm88Ocnos0sc6fNr1Nxsi+ncy9pHI7MNy2f0Pb63BYIZ4lLY?= =?us-ascii?Q?F1NPyIRnHt2WHhHWDxmFxPjKLxzv/r5IDB7pmeQABqYOxrrqUGS++SC0usgK?= =?us-ascii?Q?IkkLqgBcy+M8t85SyaNzvxKsqZ9MTAinGa3DccCWaJuxWMnb1HxPeGpOYzKV?= =?us-ascii?Q?aaWXS1WM1qJFp+BEEVdXUyMHAJLaaCxEdqMqOdl4muWb5eR1xmijQsHSghDx?= =?us-ascii?Q?0c3sWKbOwOkJFg11BAHZZPcA2K+TIcnBmwCmQ1kcHOhaDo79iDcqSQr5ERgz?= =?us-ascii?Q?dsVwf2QjbLPPvfRzrndua+pvM6Ikkx3HoO1vnyYOKWs37cGP/CynfntXL1a+?= =?us-ascii?Q?NarCUCZbnuTzHW4IXOENcOLSqjHRIwDcX8sE7kIILV085aU9n6J8vclHa78Q?= =?us-ascii?Q?AUYY0QfWI5cBKenABYPeBxg5B2HtTUNBxSFDyz30Zv+pV67riedNgGr8L/d1?= =?us-ascii?Q?0idyyFW1bTBo5fkYM4ivsuD3f2z3/aYXmu7ee/WA5Xj7YKQm+IVkErSz9V6R?= =?us-ascii?Q?s7FuqmfEHbxLIe9IEycRPGl0kc0A0BlrVCN8D0HBoAvasdBWrNkwoNVKrSN9?= =?us-ascii?Q?6ieWITqYbRpUrECBpfD95OnFkpswMsnAT6c06gL9I9pRUNkAkIWqM+dUVGoJ?= =?us-ascii?Q?Y3Sw7qg1XUiJSeHg0IPfp4Ysh9rcQbVk2G07CEK84JgwEBlfmLl5Bm5YbfHK?= =?us-ascii?Q?hoWbQe50L+J5p4zaDziMNN+IzvYvTNeZkA09bmTEYNeELpG+3SeiKB+1JAHG?= =?us-ascii?Q?8doKRhIObPGz7Dn1n/uFxPEIDuiSuqnig9NJMRhr3BoAhQPUMIAIyuqrSwOg?= =?us-ascii?Q?OBg1ZbUzrypmmt5wzL2MP/BUlVQYfGWhG6ww8zIZOe7vhlFFcDZFfN4TVwc7?= =?us-ascii?Q?KuZwBlnIi6FIFYAEw1BJzLAoIorD88zoBL5HQzH/GOarHnBkZmpbEJTbAX7f?= =?us-ascii?Q?yKtcohiLQGZ10pYCMEcA7amwjOhKoLkyfwrZ6qBD01YClbP0vB2y8uOqujuA?= =?us-ascii?Q?WdS1GmxxmmsmgYwN5L7HB1N1zeNKTSGhQIEv1RAptE/y54nZDNoqY9Kx24xD?= =?us-ascii?Q?thBax0rvWT8ZVsjHHzNmEwflNNsjxkl90nhXbeQUBKhaWFyjDYDLeeThQ7F4?= =?us-ascii?Q?1EOCLRD3kItMs8POjjxA+v1/aCCj+Kt6TkTupb30/3UjjIkTDTfey4k4JEVv?= =?us-ascii?Q?1EQ+xtX5IhwX7923Q6cYmhTi?= 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:(13230032)(1800799016)(366008)(376006);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?jf6GsIjh9iPCsDf95Q2U6lVvbXAcNzHt270ExBOBbkiEX5tHYcGoKOO7ekGY?= =?us-ascii?Q?u/USv2EjicyMWwX2OG2PwYtZ5LGTpKWD1SlJnBPB/iHm3ZaAy8fy53H8kXT3?= =?us-ascii?Q?YGRluxup3LlPIEpn9Pf4+t4Yu/vG29DcNEVp9ltuU0YGGCiUsbjPw/WtwAZ3?= =?us-ascii?Q?TQYMq0MVJa3RiSloypc4DFcruXiXjy2FOi8rMyeuZtqTl7RWTyoi/bCL4t2F?= =?us-ascii?Q?af3xfYQQnGGcZUp863HDLOBNt/I26vRcNVJuHeA4iryikEn6TYN9yFkOTMzk?= =?us-ascii?Q?fKuN+t6ZOby7Zyd8A9Z3TBPz94Kiy0L+Ql30UjlaJH6pkPegPlQtu7Xj2R/5?= =?us-ascii?Q?vzw28YMAwmcatFmo8FKhXqtcL5Zs6HmQFOJ16R5H+JzNhXXS23Q5jU3ST4mj?= =?us-ascii?Q?CmFZFbnIx09DlLyeeGx/M6z4wqT4VFzNrlbMJaEqTEjpa6hfC9vD8OfMYiaC?= =?us-ascii?Q?Px7Y705+NMzTqgbd1qGh5KmxIKtRBQwEweRSTt6dRVw+MfbGpmNySj80rHTi?= =?us-ascii?Q?0BlzfWwQNlMM35uPWgABir0gyhYKjUpnXQ9T1cBc750aDyqh4cmRzulJOikG?= =?us-ascii?Q?YZrmIWQDXhQvHGaYzTxycc9EHuD4VPXBq0b5A5hGCT6lAy9Ib6jZegl2bfgj?= =?us-ascii?Q?PLqeHheNy/TT7IBl6UNX/2xwnbtuKJ2eGkGIL/Yn2TsmBF0R6d2gvA0EOZ8N?= =?us-ascii?Q?DoAMwBD+s9iZKcJz2wrG33RrCcCN58lL8JZVtsjasI8T4h3o7AEBPbjf4tB6?= =?us-ascii?Q?8NuWbxddR1whGlR6+7RoGe44+bNuen++ifyq3AvOyAIJcrT5YndNS8saL608?= =?us-ascii?Q?HjhiT7RPcaSSYeATO/Aian3D1/Wc0Aeuzg66HHKiIns1SlGnKXLyTaz5BHM8?= =?us-ascii?Q?QctJ5tALB+7Ypxywzx76Uln0x2o+1x4Nytv8FixLKY06ht+RQFXNublvQS7a?= =?us-ascii?Q?vMlYQkz7lKg3QLir/rrfvtWmo0mm6s1eL+HVKIsQxIHKs6vITtvpSDIHXc/d?= =?us-ascii?Q?RytWKQcg8tyicjqxK35HE6ot1nJjB5IEUxTkVwZeNNcHr7mxRkC05xA8wNlk?= =?us-ascii?Q?bog+uJiLUaDax5VQAVAlVZ5RkTRP/ltglqXLaSgQhvEtzbkIJtZRWGvWcJDw?= =?us-ascii?Q?Uf6In3luN03PNIYjQ7JDnIElG4i42ALfGywU98TAb5n4ucyijC6Zwr3/uA5P?= =?us-ascii?Q?uoluN2wV3u/alibFabcEGZIzahogMUw8fkQKHX4JciJiHpH4A/fWpwsupV/b?= =?us-ascii?Q?OMm2PRscEYnceSHsSJ1O31uzwOv0IMin/TVrKQNvFRUTgXb7IRHdEwGtLd4d?= =?us-ascii?Q?QOG/tqKfBQSwVDe6QAJ/4CFDKmmbQFszgXE+hD1npJkBT5ag8Xfk9vAUq588?= =?us-ascii?Q?y8CY1DU4xgaeDuWF5+RxYnBAeXcgHWw1s4fgN9kD2QlBQ7AKJSc7ZJ4Ocrxm?= =?us-ascii?Q?mBD4XsSnNpGLaa397G5pM1HD714BAln7oCeexj4hS56CtDeqqM9M+cpayKUp?= =?us-ascii?Q?8VleBkSlMtXZ702vfsJ5+9wnRhs8tiLV7LjF0GI6Rf/iDjR2sUOtAEGQOiBi?= =?us-ascii?Q?pRCSFXZRWSeShzma1hRmMwnHVhcMcaQFnWvfLF/v+F+rE2UONJDptvGicYn8?= =?us-ascii?Q?Gw=3D=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: 7q9HAcuNcMq8hsO6KfBq/ofsMhgpU52EATv2ACEoE4VuOZFHhnMBmxwsjzK9tkfYdCp7Aj0xBceKvVJOMfBDOG+/Y8hzlFqDDmEL7X0YrrYCkJYnCsRZL8IVZQVy+sFb6HBcnAq51F6gq+z2Auw0Gf86svGZH17Eu6Dkvqgr1//MEmhIcq/sQADMiTQpjylDHMGcZkZehs4aYNWQnX+HwxC0Bcb9bcN92teJ3bu7Hns+AuL1BEyMzVgVzwIK+q2C2Au6UH3nuPwtVDuHABd9wJhrY9l1N0k6bI+wuB3sbLKp2PrGm2U2KA+yaY5/7fZTcJ0OFCNpTUaECj5T8kGNFJHS9MlbGkFoky/gYyAvxt7U9/mi1hu+Rnc13mi8IzXcuwAL74vUNDTSShhUcxWOENnE3DAoKfAhcRebQ3+2lI6rn+iY+qaQpYVOcBKt54KNrknRhnmeQpetSku/UcTEeeIc9EpKjbV73KFQot0OCEHSMyNgdNLhBYNRFIRZyaxPIc+s/Q6rIkBXIQ8eUZNIeu7bTyWET8N0cXE7ax8iHe1/gNSDZHvoVHieQOu+pDEwBo7Q8oMadcCKTjfrjWjGPy3e05sBERfEtVmN9C5tIaQ= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: d7a2ba15-4c2e-4087-8e95-08dc8a40a77a X-MS-Exchange-CrossTenant-AuthSource: DS0PR10MB7933.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 Jun 2024 18:02:27.3447 (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: Kr0Ij3bgVe8GBlOBLnEtPBT3gZ41HtUZWy2KEc5B0O03RqAswbTkVUL9LW0Dh00i6c+5wBrNySworcHoGB56FQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: LV3PR10MB7817 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1039,Hydra:6.0.680,FMLib:17.12.28.16 definitions=2024-06-11_09,2024-06-11_01,2024-05-17_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 spamscore=0 phishscore=0 adultscore=0 mlxscore=0 bulkscore=0 malwarescore=0 mlxlogscore=999 suspectscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2405010000 definitions=main-2406110123 X-Proofpoint-ORIG-GUID: JH-8Vu6UdR-jT6FDVW5I5Pt1QCmeYvYq X-Proofpoint-GUID: JH-8Vu6UdR-jT6FDVW5I5Pt1QCmeYvYq Content-Type: text/plain; charset="utf-8" Use vms_gather_munmap_vmas() and vms_complete_munmap_vmas() to prepare and execute the unmapping after the new area is written to the maple tree. Delaying the unmapping avoids RCU readers seeing a gap in the vmas, which isn't supposed to exist logically. Gathering the vmas that will be unmapped allows for the accounting work to be calculated prior to checking if there is enough memory. Using the number calculated during vms_gather_munmap_vmas() allows code to be reduced in mmap_region(). This removes the only caller to count_vma_pages_range(), so the function has been dropped. This does have the side effect of allowing vmas to be split for unmap and fail may_expand_vm(), but the number of pages covered will not change. The validate_mm() call in vma_expand() must be dropped as the MAP_FIXED munmap may be in progress. There is still a validate_mm() call at the end of mmap_region(), which calls vma_expand(). Note that do_vmi_munmap() was previously used to munmap, which checked alignment and overflow. These checks were unnecessary as do_mmap() already checks these cases, and arch/mips/kernel/vdso.c arch_setup_additional_pages() uses predefined values that must already pass these checks. Signed-off-by: Liam R. Howlett --- mm/mmap.c | 85 +++++++++++++++++++++++++++---------------------------- 1 file changed, 42 insertions(+), 43 deletions(-) diff --git a/mm/mmap.c b/mm/mmap.c index 5334077964b9..e9f91b7b17b6 100644 --- a/mm/mmap.c +++ b/mm/mmap.c @@ -364,23 +364,6 @@ anon_vma_interval_tree_post_update_vma(struct vm_area_= struct *vma) anon_vma_interval_tree_insert(avc, &avc->anon_vma->rb_root); } =20 -static unsigned long count_vma_pages_range(struct mm_struct *mm, - unsigned long addr, unsigned long end) -{ - VMA_ITERATOR(vmi, mm, addr); - struct vm_area_struct *vma; - unsigned long nr_pages =3D 0; - - for_each_vma_range(vmi, vma, end) { - unsigned long vm_start =3D max(addr, vma->vm_start); - unsigned long vm_end =3D min(end, vma->vm_end); - - nr_pages +=3D PHYS_PFN(vm_end - vm_start); - } - - return nr_pages; -} - static void __vma_link_file(struct vm_area_struct *vma, struct address_space *mapping) { @@ -692,7 +675,6 @@ int vma_expand(struct vma_iterator *vmi, struct vm_area= _struct *vma, vma_iter_store(vmi, vma); =20 vma_complete(&vp, vmi, vma->vm_mm); - validate_mm(vma->vm_mm); return 0; =20 nomem: @@ -2870,47 +2852,61 @@ unsigned long mmap_region(struct file *file, unsign= ed long addr, struct vm_area_struct *next, *prev, *merge; pgoff_t pglen =3D len >> PAGE_SHIFT; unsigned long charged =3D 0; + struct vma_munmap_struct vms; + struct ma_state mas_detach; unsigned long end =3D addr + len; unsigned long merge_start =3D addr, merge_end =3D end; bool writable_file_mapping =3D false; pgoff_t vm_pgoff; - int error; + int error =3D -ENOMEM; VMA_ITERATOR(vmi, mm, addr); =20 - /* Check against address space limit. */ - if (!may_expand_vm(mm, vm_flags, len >> PAGE_SHIFT)) { - unsigned long nr_pages; + vma =3D vma_find(&vmi, end); + if (vma) { + struct maple_tree mt_detach; =20 - /* - * MAP_FIXED may remove pages of mappings that intersects with - * requested mapping. Account for the pages it would unmap. - */ - nr_pages =3D count_vma_pages_range(mm, addr, end); + /* Prevent unmapping a sealed VMA. */ + if (unlikely(!can_modify_mm(mm, addr, end))) + return -EPERM; =20 - if (!may_expand_vm(mm, vm_flags, - (len >> PAGE_SHIFT) - nr_pages)) + mt_init_flags(&mt_detach, vmi.mas.tree->ma_flags & MT_FLAGS_LOCK_MASK); + mt_on_stack(mt_detach); + mas_init(&mas_detach, &mt_detach, 0); + /* arch_unmap() might do unmaps itself. */ + arch_unmap(mm, addr, end); + init_vma_munmap(&vms, &vmi, vma, addr, end, uf, + /* unlock =3D */ false); + /* Prepare to unmap any existing mapping in the area */ + if (vms_gather_munmap_vmas(&vms, &mas_detach)) return -ENOMEM; + next =3D vms.next; + prev =3D vms.prev; + vma =3D NULL; + vma_iter_prev_range(&vmi); + } else { + vms.end =3D 0; /* vms.end =3D=3D 0 indicates there is no MAP_FIXED */ + vms.nr_pages =3D 0; + next =3D vma_next(&vmi); + prev =3D vma_prev(&vmi); } =20 - /* Unmap any existing mapping in the area */ - error =3D do_vmi_munmap(&vmi, mm, addr, len, uf, false); - if (error =3D=3D -EPERM) - return error; - else if (error) - return -ENOMEM; - /* - * Private writable mapping: check memory availability + * Check against address space limit. + * MAP_FIXED may remove pages of mappings that intersects with + * requested mapping. Account for the pages it would unmap. */ + if (!may_expand_vm(mm, vm_flags, (len >> PAGE_SHIFT) - vms.nr_pages)) + goto no_mem; + + /* Private writable mapping: check memory availability */ if (accountable_mapping(file, vm_flags)) { charged =3D len >> PAGE_SHIFT; + charged -=3D vms.nr_pages; /* MAP_FIXED removed memory */ if (security_vm_enough_memory_mm(mm, charged)) - return -ENOMEM; + goto no_mem; vm_flags |=3D VM_ACCOUNT; } =20 - next =3D vma_next(&vmi); - prev =3D vma_prev(&vmi); if (vm_flags & VM_SPECIAL) { if (prev) vma_iter_next_range(&vmi); @@ -2957,10 +2953,8 @@ unsigned long mmap_region(struct file *file, unsigne= d long addr, * not unmapped, but the maps are removed from the list. */ vma =3D vm_area_alloc(mm); - if (!vma) { - error =3D -ENOMEM; + if (!vma) goto unacct_error; - } =20 vma_iter_config(&vmi, addr, end); vma_set_range(vma, addr, end, pgoff); @@ -3082,6 +3076,8 @@ unsigned long mmap_region(struct file *file, unsigned= long addr, vm_flags_set(vma, VM_SOFTDIRTY); =20 vma_set_page_prot(vma); + if (vms.end) + vms_complete_munmap_vmas(&vms, &mas_detach); =20 validate_mm(mm); return addr; @@ -3107,6 +3103,9 @@ unsigned long mmap_region(struct file *file, unsigned= long addr, unacct_error: if (charged) vm_unacct_memory(charged); +no_mem: + if (vms.end) + abort_munmap_vmas(&mas_detach); validate_mm(mm); return error; } --=20 2.43.0