From patchwork Tue Nov 29 16:44:37 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Liam R. Howlett" X-Patchwork-Id: 13058846 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id DCEF5C4167B for ; Tue, 29 Nov 2022 16:45:28 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 2BC048E0017; Tue, 29 Nov 2022 11:45:20 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 21E588E0013; Tue, 29 Nov 2022 11:45:20 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id EA2128E0017; Tue, 29 Nov 2022 11:45:19 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0014.hostedemail.com [216.40.44.14]) by kanga.kvack.org (Postfix) with ESMTP id BE26D8E0013 for ; Tue, 29 Nov 2022 11:45:19 -0500 (EST) Received: from smtpin07.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay09.hostedemail.com (Postfix) with ESMTP id 57DE080FC1 for ; Tue, 29 Nov 2022 16:45:19 +0000 (UTC) X-FDA: 80187055158.07.5B34308 Received: from mx0b-00069f02.pphosted.com (mx0b-00069f02.pphosted.com [205.220.177.32]) by imf03.hostedemail.com (Postfix) with ESMTP id B3DE120015 for ; Tue, 29 Nov 2022 16:45:18 +0000 (UTC) Received: from pps.filterd (m0246630.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 2ATGNtDq022642; Tue, 29 Nov 2022 16:45:18 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=from : to : cc : subject : date : message-id : references : in-reply-to : content-type : content-transfer-encoding : mime-version; s=corp-2022-7-12; bh=bibIZw68jKM6/uSNMDgXMSuiC65j2yL2vL8bwK3qLaA=; b=mitwURNqfD3H6fZoQqVUYL++dihePF16FpYmgeYuFRD/TSiVe/16i/Tu8zcCy6SuExCy dl+akCMdG4DaCcvHqdkjjbotqrI/2C5gIvqY7aDH2PfcnabbajerHThX36/NMCMPnNyx c6k6geCB1gkKSqpTU7Zy1oav7sI+44dffNA7uNWdeiT2WVsZ47Sw/8ndScyB+4h3YkHR rluwB6DAAcWd8rVfY3DixvHmfpfvOw8sNnoY8ubam886MBvOXEWdbI4ZGhJ9Gh296wwP 79mVmpZ/pjIC4hbvvS6o1d8onxpuwGJF4tFIRaLiLB+m26wji3fSExwczwbKd7mHTMx0 Ug== Received: from iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta01.appoci.oracle.com [130.35.100.223]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3m397ffc72-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 29 Nov 2022 16:45:17 +0000 Received: from pps.filterd (iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (8.17.1.5/8.17.1.5) with ESMTP id 2ATFgHOU011450; Tue, 29 Nov 2022 16:45:16 GMT Received: from nam02-sn1-obe.outbound.protection.outlook.com (mail-sn1nam02lp2040.outbound.protection.outlook.com [104.47.57.40]) by iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 3m398drgfk-3 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 29 Nov 2022 16:45:16 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=WqAyUsjlX8bJeOMhsX1yVpnO7U2SaFyH0ndHGr4IaaOKHzzfMxXFZ+umrKFXHLJyP1EE+7VP/heEH+FD/TqTZRET5j5JFxzCyCxWidp9vpDXLr7x31KFsLLIkCRmOXjChKfa/t441aLUVCkGdZWrF1e0uOhZJisPz/m4R/uZKN/ux8rX5cB3/qL8OsbcUeft1NR3lfjIgtOM3FWxsIbe9kkI9cOK/j/OSFk4cYKtvGlFXwiWg1EKTJkU5uuwmjv0UTZE0Jk/DW5pe6FF0ppRl68Q8vkZwy+PnOP15i/20+AqjHEiXGU211uForSu4WE5IXa7Bi6pNUB/n2yIJmX5ng== 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=bibIZw68jKM6/uSNMDgXMSuiC65j2yL2vL8bwK3qLaA=; b=S5B3AJ7M81uRsCmh0MxmrIxKXIeIhx4rkB4PhbHrLqqsEik5HK0cCYSnqQagA+xOOGiylLi0AjUiw0ptdp3Bm/K+xpDW56xuAs8anvQ6ZSi6rDT0eDvbppbM7pdVSA3ZJ6Togaklb+ysYpWpFAmso57gopCanxFQ1eJ5q8E7+gHJWAyTosZJEhOXGghzdqTLpAGeNXBrfd6n0OlJ7UXhGXH+GmfGGcJZny6PE2d3dMRtebIONR9kmWO5OSMG+0sL/mW96itzeaSybbsjUpy7tIEdVQCjPREsUq1XDzDngvzYrp042lxvdY2NbObKx8eGREQsudn04r2gVoH0N0Kb0Q== 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=bibIZw68jKM6/uSNMDgXMSuiC65j2yL2vL8bwK3qLaA=; b=u9DXT5d3h1efm4BHmBUmAfitBSkp2k+GZ3cFZBuwKZ3esroaoNXwLNXYK9YlSeW2KbkhmcVkfswNvSGKyPK1cOYC8IJXR0B8l4th7ZH+a+YSCXQzHx2rQ/oilJ+kV7649BZrPsc2d7jNr+mnOKuJHjPfQKAm9xnoUFXcuVMACUs= Received: from SN6PR10MB3022.namprd10.prod.outlook.com (2603:10b6:805:d8::25) by CY5PR10MB5937.namprd10.prod.outlook.com (2603:10b6:930:2e::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5857.18; Tue, 29 Nov 2022 16:45:11 +0000 Received: from SN6PR10MB3022.namprd10.prod.outlook.com ([fe80::a02:2ac8:ee3e:682]) by SN6PR10MB3022.namprd10.prod.outlook.com ([fe80::a02:2ac8:ee3e:682%4]) with mapi id 15.20.5857.022; Tue, 29 Nov 2022 16:45:11 +0000 From: Liam Howlett To: "maple-tree@lists.infradead.org" , "linux-mm@kvack.org" , "linux-kernel@vger.kernel.org" , Andrew Morton CC: Liam Howlett , Liam Howlett Subject: [PATCH 40/43] mm/mmap: Introduce dup_vma_anon() helper Thread-Topic: [PATCH 40/43] mm/mmap: Introduce dup_vma_anon() helper Thread-Index: AQHZBBHeo+xNPyC1gUmxR1c2o4ECWQ== Date: Tue, 29 Nov 2022 16:44:37 +0000 Message-ID: <20221129164352.3374638-41-Liam.Howlett@oracle.com> References: <20221129164352.3374638-1-Liam.Howlett@oracle.com> In-Reply-To: <20221129164352.3374638-1-Liam.Howlett@oracle.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-mailer: git-send-email 2.35.1 x-ms-publictraffictype: Email x-ms-traffictypediagnostic: SN6PR10MB3022:EE_|CY5PR10MB5937:EE_ x-ms-office365-filtering-correlation-id: c819ed59-c4b3-4876-d3db-08dad2291505 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: V+dhywVXrp6p1aZHb9yJwqnDjsmBhumLXkkF4hHRhrBlh56sqs6pp1spYanz/vcC0cb/adZOl57tHdwVDAKXctn3sM5kM8Rc3t9TvL6FSvQddHRfs9lLah89C+v81HCZToWZj0u+CvyYSjCSkM9ddXXysaczx6asgD5O82Vpqx8ACseL4BL5BBst/uNF+Xi4R5vr4RvvTZRxNRqMUqs98MIQlVZWIOGphN16roWuw3PODGv4rcYBMTz+s0ux5pmBNgdPrJFQ6sLm4gUwrrLEpb8iuHF8W1tMOb712oTgSjGZIc9Q5VMH5UhlAurvz2ik9PSYBzNi8dIvMD0EOdqxD7TRW0kKYGvOtGmXoW+8hDHi7qxkEjt4ZFU3cJNnHCey6pSQdCLcie4RKtfzSVmj5uzIQEz5qEDY++svVPbGw6NtYk/yYlouWkW99WPp4fy6smsZh68n5nyvfmp59gzvjxtJ39eqXXOd0uxpgLgrFTQ4vlGb4SSWoROLdO0BsHi4HY1iUBnAAgVsMe3LpnPoAMEP60KjZiVJvu8d0YyVR+TTnXQffSDY6DNo/WAFcHt5o6F7p1UPCLo9WUrtKoVCK2sCGcJkRB/Hfe9dZNvr2SUJm5WNqx5qMpoxQRH1Y7ekbpt3eSWDqCAOzi0X1Lt0kNBWnaYaZSBTHuWCCf9mMKQu/wCxwBR03yRxCxCbIzvp4D5oKZC14fByf/VKVaS95g== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SN6PR10MB3022.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230022)(376002)(346002)(39860400002)(396003)(366004)(136003)(451199015)(8676002)(66446008)(66946007)(86362001)(66556008)(66476007)(4326008)(64756008)(91956017)(2906002)(76116006)(110136005)(54906003)(41300700001)(38100700002)(122000001)(6512007)(83380400001)(186003)(8936002)(1076003)(36756003)(2616005)(316002)(5660300002)(107886003)(26005)(44832011)(6666004)(6486002)(71200400001)(478600001)(6506007)(38070700005);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?q?hdnSDxQ3isBWOLl41VSkLii?= =?iso-8859-1?q?RIOUVNjoos4tvvHXigv0a9QbgqIVp124UTHPu6/MCLyGPBqo1+tn63ym0AqJ?= =?iso-8859-1?q?KXWyKkoswTDLCmgq8UXoswXxImTOBogAhe8Q7TsPTzl0j6rZpyBCvfnOMGbF?= =?iso-8859-1?q?gOQLgPL8sVBSpiUD2fBpIO8oaUzGPgM4aoVuuWSjqMOiSwS3G1rUWGH9WW+u?= =?iso-8859-1?q?TtFdPm6tbuN9bjznQ6KPxPFX0EMq+gGJiuU6p6AfQT2AidyMsYBdg/mmmDyK?= =?iso-8859-1?q?CwstQhgmueOYLNxDK7SPKLI7reraULezOjd2xL5mnuR8MyqSz6XgSGo0kW+o?= =?iso-8859-1?q?1z7tAlPswkP8vF5OvKvOlne8/jiASwFUKaHZ2632oaZvBRR3Pq3KG4a00u3F?= =?iso-8859-1?q?J2Duc/Lw4m6Ak+MmhSHZrYvLJ37DGacW0267auavygW5LLk6XRz8hDrX+Wk3?= =?iso-8859-1?q?G79vVVDVaJPibxE1Xyx4itaa3iR7pNt0klz4EZn7IJgNU5dMswJynMsYAjr2?= =?iso-8859-1?q?oGLaa1cGbr7QTnEojAHIF8u4TsBfhBy43ALQ3PzDCg+UfIK+1cLATXPuvaVc?= =?iso-8859-1?q?/G9n9AcXakblhfA0y6hqe9bv8Y4kfCAGTNLOhzzW4J3NIjnn/fIm9T/LOYpM?= =?iso-8859-1?q?JLYq7+9lhhrDEPl05MzoHGZ4ntra10gRHRmwndd/QEq5CSAkpzI5N/ymF9OX?= =?iso-8859-1?q?74aBEHQBAkIZfj1V4die8QptPXkbN7OuCveYY6nr/9wHoyHE1QvtKWD/v1aH?= =?iso-8859-1?q?XMSS35bTiB5FOqYJmAWQ8gFpdcwvr12hhWjJCH2+ZAUpp4QFqziPf6eppZRj?= =?iso-8859-1?q?/UnLszY8gnmj3GPZLfgaW0MSJkbJnz0n/83jw/s4mEB+oM1RGuHT9bPhX1z4?= =?iso-8859-1?q?jO0QU0o1fCHZ24a34W5BoUAsNBu9ae3yn+l0A2/SBNTjh1Cxkb6pBGHRh0lj?= =?iso-8859-1?q?IpDCJj2QmQQTn+enM+HiawaDYN0P/sNxX6t15bpx0kmN30bUIXtsBV0FrYwG?= =?iso-8859-1?q?zmCPsexSazVsEEghLzPKkRbyT3++XrJcrR+0F+qLlXwq5Ej5xJkEIJvT5gMr?= =?iso-8859-1?q?HKZJ33m+adRHnXMzRjePPwKT6vCn0aD7Z/nNdBNb/L0/N53G8VyNd62dMLP0?= =?iso-8859-1?q?FQrcQmG6abhebJqqtYWCW2aSHG5fjJhF+pG03LBEjYK5Bl7duWdLcjEfr2oH?= =?iso-8859-1?q?pfGwnWXQt3MPVqq3JV8tU8oeo6kw7VyBC26ccWSDB42FVg5FfRe/S7AzO9UV?= =?iso-8859-1?q?lwyFyuhM+DOCs8YJW5AFUDrpRd5LC8/HSI6clNMShLmN89cIspf0wgsW3hgy?= =?iso-8859-1?q?az0R2wpkU8XW2bk9F6fkjctX9k0oA+Q3gwEGek2wLYPbYJ+5thR9C/spuA/f?= =?iso-8859-1?q?EUOnNqX7Tq4g7t4kR/QHXxm/SnmqiXoY4Of6ZcnqoD4JVB4ySfXbae4Asmov?= =?iso-8859-1?q?SKA2/BZl+5GKKAmeTOfO0vB12jUlREhVe+14c2VfKULQy+g+LZHFwBhRm5D+?= =?iso-8859-1?q?tjwwa+4hPfys3TQx0WGeIEKhK82dhu10YS8Dp+4IfdAroJKfreEzisqjWGcH?= =?iso-8859-1?q?/uXjrHojYpcuspiiqL/cdycNrE1tNcEClV9/cpeIfWui/q7GHsDW9w1xk/Qv?= =?iso-8859-1?q?GdGUiUUpQ5XEt1x4OhX8waEHtToy4h+qNM8tqWw=3D=3D?= MIME-Version: 1.0 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: 456lEmjrR4A3NuJvXTchDBzo1NFVFVc6DJbZjYv2ZFMkxCB2IjkXp/oY6wkzeAz6wTxpEXTLnEfIKxrXUyfTt0a4EwfebauoidqUYMJg57enA6ULGQg1E0Re/pxu3dYkA2EkGc09KkgsxgxDrzfdnCkLmS8ckI/Szs7LCcDXgSCAcmJ7vz6FAucDGhMGYuu7huo8BTrSn9b5vsxUK2hLduapElzJq7pKzALguWL7pAOkmgHFZSXc5khprN4j2QfhjCbecp30DdPdkgza4aFds9yoTv7KT1UV7VfNuKVEFkKRNLRkCTlCEXtpPLYYEs5BAhatKtpNXY11m6KKrE8rTDVsRlHbsFz1dpXQ9Wx+yXXgYkSQrYjOuE3ZSKmKwA6WIqt09Fr0zFGhR1DV+US9xbsyeX9Tu2CzuxhUV5LLsb64+EDf7A1XbX3tdW0IS7t2PqqfPXxz59RZuMidWD71GcEmxG7wgMpGNf/bgEAR3me7kmUaFNE4PwdJIaUpfOuDHxyfvmKZljBE4wtDvsYluJtH7vRV3F6CJXmbs/cW25PCIFco6uB97UPcQRjshW0diHGeQAMdCUYhb5PbDeC9bj62uMAqVPmrxC5fCvw8csanCrZO3EvavMcBA9ObuVW1SqPYWLDsRvKSxxPwze8JvBQv2VIB88AuM2I6dfmdfIwowCt/L8caiJjDN5ns86Fo/o7Z5apDifPNr+K1ZBimvxoVRS0rfsSqsqBlb5eaXhGDGiNzAClr5uDrMi3bhapj+2ETCzJvy6fQQJCQ0w3YZiZnIxdMLD0Zx1oo7mV4HWp98EQ5tPHqpiAGsVGfa0dzr0zzd8APHnnoRJOJKpF5nlA85v+0V56sImeCXF9bemQ7CfWsE/pBQyrN2pGK450ehptBKjzaWbtE5U0DWWfvAw== X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: SN6PR10MB3022.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: c819ed59-c4b3-4876-d3db-08dad2291505 X-MS-Exchange-CrossTenant-originalarrivaltime: 29 Nov 2022 16:44:37.1752 (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: eFRm/xgTBzQo6t2Mc1Q1eDTV8b0j/gRE5TbNYHCVNaLMiz4r9zrfurbIW+yaOz+mRpB23ZQCXR/PDUzIOMQ4Ag== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY5PR10MB5937 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.219,Aquarius:18.0.895,Hydra:6.0.545,FMLib:17.11.122.1 definitions=2022-11-29_11,2022-11-29_01,2022-06-22_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 adultscore=0 mlxlogscore=999 spamscore=0 malwarescore=0 phishscore=0 suspectscore=0 bulkscore=0 mlxscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2210170000 definitions=main-2211290093 X-Proofpoint-ORIG-GUID: ooy_Be-8Z6HOcvNnCbqO1_88IpW67NR7 X-Proofpoint-GUID: ooy_Be-8Z6HOcvNnCbqO1_88IpW67NR7 ARC-Seal: i=2; s=arc-20220608; d=hostedemail.com; t=1669740318; a=rsa-sha256; cv=pass; b=X6ZECw9/7HSNJ+D94mYyHR6sUqobKw2r9aigVW2qMyMpe/ko4e2piGTMawNgH7r2jfAokY jqEe0kVw4DuLSgfLECRU9Ne/C97zQkK96FJLxMadW278qMyE2yLpJ1cksEPNIIDUcamBmm JqodeVasraYY15Me+2fYWL2rt1zH9WQ= ARC-Authentication-Results: i=2; imf03.hostedemail.com; dkim=pass header.d=oracle.com header.s=corp-2022-7-12 header.b=mitwURNq; dkim=pass header.d=oracle.onmicrosoft.com header.s=selector2-oracle-onmicrosoft-com header.b=u9DXT5d3; dmarc=pass (policy=none) header.from=oracle.com; arc=pass ("microsoft.com:s=arcselector9901:i=1"); spf=pass (imf03.hostedemail.com: domain of liam.howlett@oracle.com designates 205.220.177.32 as permitted sender) smtp.mailfrom=liam.howlett@oracle.com ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1669740318; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=bibIZw68jKM6/uSNMDgXMSuiC65j2yL2vL8bwK3qLaA=; b=DV6qYRvXk8+mfDLYeJSEwF235R7UFwscHM7B4EoVxLoAs9J2mJpEDZU3oDAA7Ya5JZ2vRG morgJvGplxDIyXVbAk6xP3Mcd/mJgF7gzUgdh5WSZrqwJViPJoYnXqmMczn02Sq+69rf7i mcf7vstitHk1OYOmRG9PSSwFjO4iwLk= X-Rspamd-Queue-Id: B3DE120015 Authentication-Results: imf03.hostedemail.com; dkim=pass header.d=oracle.com header.s=corp-2022-7-12 header.b=mitwURNq; dkim=pass header.d=oracle.onmicrosoft.com header.s=selector2-oracle-onmicrosoft-com header.b=u9DXT5d3; dmarc=pass (policy=none) header.from=oracle.com; arc=pass ("microsoft.com:s=arcselector9901:i=1"); spf=pass (imf03.hostedemail.com: domain of liam.howlett@oracle.com designates 205.220.177.32 as permitted sender) smtp.mailfrom=liam.howlett@oracle.com X-Rspamd-Server: rspam12 X-Rspam-User: X-Stat-Signature: kz3drewg6eixx5bapz9gpgw6fwsps7by X-HE-Tag: 1669740318-285711 X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: From: "Liam R. Howlett" Create a helper for duplicating the anon vma when adjusting the vma. This simplifies the logic of __vma_adjust(). Signed-off-by: Liam R. Howlett --- mm/mmap.c | 74 ++++++++++++++++++++++++++++++------------------------- 1 file changed, 40 insertions(+), 34 deletions(-) diff --git a/mm/mmap.c b/mm/mmap.c index 519cdff9d135..2b41e7882639 100644 --- a/mm/mmap.c +++ b/mm/mmap.c @@ -677,6 +677,29 @@ static inline void vma_complete(struct vma_prepare *vp, uprobe_mmap(vp->insert); } +/* + * dup_anon_vma() - Helper function to duplicate anon_vma + * @dst: The destination VMA + * @src: The source VMA + * + * Returns: 0 on success. + */ +static inline int dup_anon_vma(struct vm_area_struct *dst, + struct vm_area_struct *src) +{ + /* + * Easily overlooked: when mprotect shifts the boundary, make sure the + * expanding vma has anon_vma set if the shrinking vma had, to cover any + * anon pages imported. + */ + if (src->anon_vma && !dst->anon_vma) { + dst->anon_vma = src->anon_vma; + return anon_vma_clone(dst, src); + } + + return 0; +} + /* * vma_expand - Expand an existing VMA * @@ -702,15 +725,12 @@ int vma_expand(struct vma_iterator *vmi, struct vm_area_struct *vma, struct vma_prepare vp; if (next && (vma != next) && (end == next->vm_end)) { - remove_next = true; - if (next->anon_vma && !vma->anon_vma) { - int error; + int ret; - vma->anon_vma = next->anon_vma; - error = anon_vma_clone(vma, next); - if (error) - return error; - } + remove_next = true; + ret = dup_anon_vma(vma, next); + if (ret) + return ret; } init_multi_vma_prep(&vp, vma, NULL, remove_next ? next : NULL, NULL); @@ -799,10 +819,11 @@ int __vma_adjust(struct vma_iterator *vmi, struct vm_area_struct *vma, struct file *file = vma->vm_file; bool vma_changed = false; long adjust_next = 0; - struct vm_area_struct *exporter = NULL, *importer = NULL; struct vma_prepare vma_prep; if (next) { + int error = 0; + if (end >= next->vm_end) { /* * vma expands, overlapping all the next, and @@ -837,15 +858,14 @@ int __vma_adjust(struct vma_iterator *vmi, struct vm_area_struct *vma, end != remove2->vm_end); } - exporter = next; - importer = vma; - /* * If next doesn't have anon_vma, import from vma after * next, if the vma overlaps with it. */ - if (remove2 != NULL && !next->anon_vma) - exporter = remove2; + if (remove != NULL && !next->anon_vma) + error = dup_anon_vma(vma, remove2); + else + error = dup_anon_vma(vma, remove); } else if (end > next->vm_start) { /* @@ -853,9 +873,8 @@ int __vma_adjust(struct vma_iterator *vmi, struct vm_area_struct *vma, * mprotect case 5 shifting the boundary up. */ adjust_next = (end - next->vm_start); - exporter = next; - importer = vma; - VM_WARN_ON(expand != importer); + VM_WARN_ON(expand != vma); + error = dup_anon_vma(vma, next); } else if (end < vma->vm_end) { /* * vma shrinks, and !insert tells it's not @@ -863,24 +882,11 @@ int __vma_adjust(struct vma_iterator *vmi, struct vm_area_struct *vma, * mprotect case 4 shifting the boundary down. */ adjust_next = -(vma->vm_end - end); - exporter = vma; - importer = next; - VM_WARN_ON(expand != importer); - } - - /* - * Easily overlooked: when mprotect shifts the boundary, - * make sure the expanding vma has anon_vma set if the - * shrinking vma had, to cover any anon pages imported. - */ - if (exporter && exporter->anon_vma && !importer->anon_vma) { - int error; - - importer->anon_vma = exporter->anon_vma; - error = anon_vma_clone(importer, exporter); - if (error) - return error; + VM_WARN_ON(expand != next); + error = dup_anon_vma(next, vma); } + if (error) + return error; } if (vma_iter_prealloc(vmi, vma))