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: 13058847 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 AB648C46467 for ; Tue, 29 Nov 2022 16:45:30 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 8640F6B007D; Tue, 29 Nov 2022 11:45:23 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 7A08C8E0013; Tue, 29 Nov 2022 11:45:23 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 490926B0080; Tue, 29 Nov 2022 11:45:23 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0016.hostedemail.com [216.40.44.16]) by kanga.kvack.org (Postfix) with ESMTP id 294C86B007D for ; Tue, 29 Nov 2022 11:45:23 -0500 (EST) Received: from smtpin20.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay01.hostedemail.com (Postfix) with ESMTP id D8D431C68A2 for ; Tue, 29 Nov 2022 16:45:22 +0000 (UTC) X-FDA: 80187055284.20.14E179A Received: from mx0b-00069f02.pphosted.com (mx0b-00069f02.pphosted.com [205.220.177.32]) by imf17.hostedemail.com (Postfix) with ESMTP id 58C494001A for ; Tue, 29 Nov 2022 16:45:22 +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 2ATGNtE0022642; Tue, 29 Nov 2022 16:45:21 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=JW6+9UwXWDgFrVRJ2ctqJ0TYYaXuE5oGeSURV6qoIDc=; b=hEVX0NuNJT2MTasPCWsYQCZ5SjQ6jZ0SpzuWgdlT84y6Wp92kTnrkksyY7AKzZT7+CNR d+MMJMbHszOmxwheev39P7F9jq1BcF8y2IqW58GJ/wMPLwsPX2rz20eUvVP0cFWutkHS N3lFmqoQ5q36OSjww3jTbX1uHgUwtrLCbaApGzK5F54UzUVGc5S6qF3vQd6KXcH9Okmv 8OviGxdA5KHBcYzZM85GUPWPOYYXKlNpC523Ba8payiOzp7JJkcZVTaXlXcQ4HRQld4C 9YU4mk3SlQNZDJJpVTLKy6HfF/b0W+NzKC5yYOlQDGOd196tMTzkWFhRGbtEhTXOO24m Fg== Received: from phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta02.appoci.oracle.com [147.154.114.232]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3m397ffc7j-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 29 Nov 2022 16:45:21 +0000 Received: from pps.filterd (phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com [127.0.0.1]) by phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com (8.17.1.5/8.17.1.5) with ESMTP id 2ATFn6v4028010; Tue, 29 Nov 2022 16:45:20 GMT Received: from nam02-sn1-obe.outbound.protection.outlook.com (mail-sn1nam02lp2041.outbound.protection.outlook.com [104.47.57.41]) by phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 3m3987f3xj-3 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 29 Nov 2022 16:45:19 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Zh2YaYyERgXtikjVOybGhmSEvPsgfHL7V3ivf+cXMa8WTTiuECjLSW5Y9GAMk9fmRvE0F28MUFjtidSd+/omWXgp7ysERgV9QgZKFB0s5d96cgXbPpQ5U+wDDwKmNXt22reNJE1DPgXCbfC/WCqUKu2E/eWYJ3//qniOkyI9r2UZct/lRDbGYKsXoPxcAo9iAfxH+y7cWrB8qVbkfiIkCRvzt3HpW/Tst+awnZZyHJGxrGuWeZsXzz8Y5uJXhNxgvf2WmXNtpi92oSl2Y+xl+LmDHrMqoIoK/nt0TYIQ9B1wkNjZHfFK0uLnAcDkojUfz9ArDVxV1Do7iWVzrvO6kg== 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=JW6+9UwXWDgFrVRJ2ctqJ0TYYaXuE5oGeSURV6qoIDc=; b=BXquxgiYEbA5wL23+9V3NZmpmCupgN7aiej0xoLcclPg3vXTBPd3fuvuSl5EXKO49BkagUoFqzWJxnMTu7yLyq1dlDIn5QRDM9vjg9JkirFMNbWhQKKsWbc5zipBlJzU3kXlYy1C/mh+WJYJrfKYSlZqV6j9+jLWK+eO/rwuA+Bc3AT4vO9AW2SBz94wMjW0UDYi49g+6sIL1nU26PVvkDYedQ9sfl8iF5haueed4kyKekTZsV2jxxg2LLVHZeyaispN1OQEd6IIKtnHojm/j69qIwTbLHgVclCm63hE7NWtYhOIE5ueAKNSnZpzYmyoCg3Z8Uqm/SGtH6QMr70+zA== 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=JW6+9UwXWDgFrVRJ2ctqJ0TYYaXuE5oGeSURV6qoIDc=; b=VFmtwPYsRgBTS+IaH1OhRYqJb0tHJv6N49lZ127sxGFHWMGm2nt/12WVvMjjnSag2jj5gAj+Lg56vHzqXAfCZWvAmeqGguaNnSN2cXo43x3ANMHAadtmVsG9L2j2r6mYq3Z6E2E3kIm2+LM4iKURJlTka1/UYu4xkfgEDT3c+yI= 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:12 +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:12 +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 42/43] mm/mmap: Remove __vma_adjust() Thread-Topic: [PATCH 42/43] mm/mmap: Remove __vma_adjust() Thread-Index: AQHZBBHezj+OnykxmUqqUb+jwvJ8PQ== Date: Tue, 29 Nov 2022 16:44:37 +0000 Message-ID: <20221129164352.3374638-43-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: a9eedd6a-f0e7-4345-da82-08dad22915d2 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: Sf/h7U6IYxuPEKHZJKfMSg/NjbSxP7DZ1QitCNfZxS74JznTmP6jpSZ4ZVLsPve/e2fCgfOR22W36aRH+xVUVd0356Gk8Ip1eu6hGA3yKpL1ODMiD9rOveZa2bDybxLwhzI0QWBRTral6w/dPCzod496FsfCfhdn8BREMbyBxUWI//sDhA8ilB6aO1tvlJrgoClyMbsliYY2TY9A7OIG+7FDNKYp9Dnnm2W3P0J/bu+CLFe6DPp4SsWlLeVl6KQDe+yEYWsJZpBdTGS7ArFVr2b4CpWcXBiQW/IdNaGQPRQKU540S4XfPtzllrn+Qk2qoPC+wMZB00f+5Yyuhk5Rg6SyncxBTf1S4GhzpNoXpO+MFRQ5QIWubS/W2TTMFXVX4E1wWM1xt5cHtaxaBU4ik98AQVCkWVK5ukV+bbN+d2Zape7ceo1QjNSrG8UwMfwSvOEnKHBSQQ7RqL7rDHL/oJedTWkto/6lmGet1+oGL6bUwohSgJrRddVu4Tanb9L5WtCjL+x7aaxfjbmH1kcrbBE82wH9O0CJNQJtFGOcbHr7xyY6RMOFaYI+NLjwQTjIYhvRPEvFwHXGtS3bvNRmzYfEfmlTzvO8Ts+ittf3yxqUBY5rDZwK8Q++1WeYpdp6VpQtFDjiT4YXn+ZwHUeVV8ApZU8CZpayoPSvY4OXuV7rz2Hfom2O3tKLDAFt+zGt7G+re55x/NovEZTFxRW8EA== 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)(30864003)(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?FZpkfbhUBNcd1FYDjYJ1PTT?= =?iso-8859-1?q?SXfHnpn0CugpcP8wLkpaMdnVB0L85xxyaTP5gz+7AMT6BeEQLCxN/Y/+ilMw?= =?iso-8859-1?q?pnI/R3XS3ld1kvHeMWi/xujkBOH+jfRUbAVHl0nEnlWOV6ckj6HQSaH8wTe7?= =?iso-8859-1?q?R/rR+vFhec0JBqB5kVqsiy4T2oYIl2RI8HdaSPD+0XphyNQgNRV8FGL3i1G3?= =?iso-8859-1?q?SN/S/Swa0hoGicA7YclSdu5pKArfW7gwHJk4iPAUaUe50Psdylu+H/etNQU8?= =?iso-8859-1?q?A6IUiYObm/r8udABj78nBRtg1arKO9whAKh6Edz0ovXuj6UxB9gvc+OWzhEz?= =?iso-8859-1?q?hL8W+pSCZTIDcM4ew2rbqfPibpARC5bOXxzJMr3Sdu57iCyrsJ4DBS6WcgYj?= =?iso-8859-1?q?aLO0mUInE2D6re1u1uh6EQp6GVa1XK6aTsECGOohOoqlDAsT3K5+yZWNTdKL?= =?iso-8859-1?q?iC2J3QyTBbSeRjJTCSln2SjguTiy6WnXK2LNzr9aoqZgyGHB1RUM6o/NAd2S?= =?iso-8859-1?q?nXLY/hoMvEFsLJG3r8RRKnk9Qo1NE2AVT9Ec2RkSuVzOc1JcdMVWkhOB6PJh?= =?iso-8859-1?q?VTAo8YQ6J8elO0V0B22zT43H1q7lrO+rGEkTeZv6d/vUi6t2wbVE+i7+dEgp?= =?iso-8859-1?q?opoibRoU26sqmuj7JM3r4CLpqfQe9ldhrS8+KipBayWkDkR5iBbJEWIdYaBs?= =?iso-8859-1?q?tj3oed+00nJzKbk/5hQuER64KwlwxnCgzfEpF6L4Buv0LhnX70xLAz/rWtz5?= =?iso-8859-1?q?X0w76QKY7CvLt/IAjiJ95hYe5vQiPjrl9b4Wkpe/McS7YST8bjP4NSfmzcf3?= =?iso-8859-1?q?PGQUHiMOpxxjWc14OCW/NstjReKqPfB11SBNV69Tt/JPeSFztE7VID249YKO?= =?iso-8859-1?q?RXWR97KDIzs+BW64EJ75i30ENUFlK7zH445pwu/MGUeDu8r8xZk9htJ9qVzw?= =?iso-8859-1?q?kikN9xmww6xrm+ovNTUHq2dsFkTI1bBnaUne/2n0IuuMW8VinI11RaBM8g6W?= =?iso-8859-1?q?LGFpK+PKLzDTV1/0HePJf2VeIlvn9CvEjwQYKrCSRUP9voxg9ly+D/0ztghV?= =?iso-8859-1?q?NcfbA/SYQ+QK/aCDnn1s8g6sK1Mx+UBtPM2GFMI7R/alwtzXyb3o2p7AqnWH?= =?iso-8859-1?q?YX+8Gh9wdXzzjXF9Kt7W3NaUat1YNe62IFAKVZ/w+n67i7MLADSpiRcwQ0/j?= =?iso-8859-1?q?MKtgkZqJuGxLog0HE2lRA458Qwsj9JKuV3eagWSFC2G8ISaZhgQ5S5XGPnWD?= =?iso-8859-1?q?w7tQVBD6y00bYV4mZvJeidiqp5gBodUVR6UjrQyF/P9VFRy1ozHwTBHw2I+f?= =?iso-8859-1?q?4rHg1F/v8y1IwZgVK9u22AC2DIcZVX7Nv8uvZu374Hzl7vJbZ/NmDqkeSJyw?= =?iso-8859-1?q?IpFc1Iq2HAZo+7cfjf4fGszIcHZfwKCFMyoQGHFQiFCnkM3nCdyGwTHiPnt6?= =?iso-8859-1?q?dMaCdvtkeI/V2gDPvDoPjRVngHXIt1QGBbZ9Oc/VlNr5mQ7GBdsNWVy9Dy1j?= =?iso-8859-1?q?Lh+11iTol4+cYdatxfjcz300iWdxy1rtPLeyON06o3qmRB3gj7j0JupTDVTQ?= =?iso-8859-1?q?sxqsJ9DSJ8PMLFuHsltCLe0XELYctsbD0k13zKUHgwK9AQLUyYXH3CI+J1K5?= =?iso-8859-1?q?x6rrHSPrzY8iOh/V4z8smEDKy/EHgwTIR3v7izA=3D=3D?= MIME-Version: 1.0 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: 4GA0TEz38UmreIP4VkX89p01OBIiU2N2hQxV1km3zOrEIfA3HH+rJB7BMZmhLGnzQ31exgz/ImEcjIgxGU8QvGRCfPACl7kmLDu1cu3w0EJGKMGhm2IJ4+izOdQTcQyI3kYEbTluTsunBy7Wz+pz2feh7+TzEEGxbfu4xr6zJv1lrvkfCodWu4Vg1DSIhI0fohqDhIryRngsFlCwSA8SNzkyezkuJcLhM+VyJa7va2Gd7l5uot0oJOgOKrsLhb5wo1ZQYbxukPN3FZp4oxxQsXpCYDF/ceyOpfW/aV/U2f/d6vovQ9/3SGSS4l0cd2scmwN0piwkFEewuJ9Vqb2NbQhljiD4067UXnVEdXUrJa/Yf6AAMWPo7JXVirDCba+9urDL8OtxoO2eDxmc8n8H7t/iFJVkUB0aklaGeG3hAECK64Lkh3omqj4izwawKxXEl7k1FgWH5k4ZuQ+xtgy96ACzHRgFLUfmywmfYhSROpSntTgV8BLAm1mZ5kRAfxQR7HRcB/f5zXgA9O2DZNiwyHzEOnAei4zXEXnmjbPtSMXOG+iBxye2L8lxjALQ6Zkz3A97UuzDCWuxqBmB7jpA4ZLwFLI2vnKERzj2Gtbl2MY7GhCzQ9qEk2dF+PVCRj7nY1ci/9zZfW0OU3I1S5qKU6FElswNkXCEiKsEj56oMaf2ZbeZKPNg7C7eny/xagUYcHizwn2qaovnDf+mXragvn4rq0abnmi3fYLrkf5zodlQLlULpDUyg5ryu4sNlU3MD7fAJwbBsfqbM6k4Ltc35IVUkSpH2S2p1P7E5XzmKl0fwMzzEROp0rzlsLMWtF6Q4kRIPl6b75fxaNCgKr73L07AhVR7F4rlO40WposHglIncaxty2PAtfXNyvRzqVnG2rJ+J4PPeHOh5Grl5ejaAw== 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: a9eedd6a-f0e7-4345-da82-08dad22915d2 X-MS-Exchange-CrossTenant-originalarrivaltime: 29 Nov 2022 16:44:37.8314 (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: Veb6m7DiT+PSCx7TZ9nVmNTnm5cPZjREtp0bAb163ZxUqFTWT7ExJbUuQatAFXd7iNsPwVtZopSWJWNxltxx1Q== 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 bulkscore=0 suspectscore=0 phishscore=0 mlxscore=0 spamscore=0 adultscore=0 malwarescore=0 mlxlogscore=999 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2210170000 definitions=main-2211290093 X-Proofpoint-ORIG-GUID: 95AGOufnystP_fTVVyiQKyre-jYcUdi- X-Proofpoint-GUID: 95AGOufnystP_fTVVyiQKyre-jYcUdi- ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1669740322; 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=JW6+9UwXWDgFrVRJ2ctqJ0TYYaXuE5oGeSURV6qoIDc=; b=mgLoCVA6OtOqm+xhK/fx99DAMcMRvotrQQw0AMpv6+kCc5juTZ54NcCkyf7g6WvPDcsHCd BSavhBgB9wRT1BJ6sC0Wr4D+ioQHyqXFvgN9lqktK4CrfC+ppznTOw2tKadkXEHsNnDArc yqGJEkPZpPKlFO+8lp1lELetsDxSPYY= ARC-Authentication-Results: i=2; imf17.hostedemail.com; dkim=pass header.d=oracle.com header.s=corp-2022-7-12 header.b=hEVX0NuN; dkim=pass header.d=oracle.onmicrosoft.com header.s=selector2-oracle-onmicrosoft-com header.b=VFmtwPYs; arc=pass ("microsoft.com:s=arcselector9901:i=1"); spf=pass (imf17.hostedemail.com: domain of liam.howlett@oracle.com designates 205.220.177.32 as permitted sender) smtp.mailfrom=liam.howlett@oracle.com; dmarc=pass (policy=none) header.from=oracle.com ARC-Seal: i=2; s=arc-20220608; d=hostedemail.com; t=1669740322; a=rsa-sha256; cv=pass; b=zW1KuN9dL9ZdaSwEp8iLGxNjQImRnaLl2pHGZUJEBO9ETZ/j2bJmnoA+X4rok6iG6N8HEm 7FAkYxeTRajxfhTzpfjWwTtI0oncMrkWlsCnC+Ln5wa5pooGi7tYdjEqlBrmf4eMvffInr slL2wEXOQ8nd/IY6qDC4rbHl+ppJiaw= X-Stat-Signature: kq13dusfyggku34o87fd6sdqosejn9uk X-Rspamd-Queue-Id: 58C494001A Authentication-Results: imf17.hostedemail.com; dkim=pass header.d=oracle.com header.s=corp-2022-7-12 header.b=hEVX0NuN; dkim=pass header.d=oracle.onmicrosoft.com header.s=selector2-oracle-onmicrosoft-com header.b=VFmtwPYs; arc=pass ("microsoft.com:s=arcselector9901:i=1"); spf=pass (imf17.hostedemail.com: domain of liam.howlett@oracle.com designates 205.220.177.32 as permitted sender) smtp.mailfrom=liam.howlett@oracle.com; dmarc=pass (policy=none) header.from=oracle.com X-Rspamd-Server: rspam06 X-Rspam-User: X-HE-Tag: 1669740322-671163 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" Inline the work of __vma_adjust() into vma_merge(). This reduces code size and has the added benefits of the comments for the cases being located with the code. Signed-off-by: Liam R. Howlett --- kernel/events/uprobes.c | 2 +- mm/filemap.c | 2 +- mm/mmap.c | 250 ++++++++++++++++------------------------ mm/rmap.c | 4 +- 4 files changed, 101 insertions(+), 157 deletions(-) diff --git a/kernel/events/uprobes.c b/kernel/events/uprobes.c index d9e357b7e17c..c5d5848e2c3e 100644 --- a/kernel/events/uprobes.c +++ b/kernel/events/uprobes.c @@ -1352,7 +1352,7 @@ static int delayed_ref_ctr_inc(struct vm_area_struct *vma) } /* - * Called from mmap_region/vma_adjust with mm->mmap_lock acquired. + * Called from mmap_region/vma_merge with mm->mmap_lock acquired. * * Currently we ignore all errors and always return 0, the callers * can't handle the failure anyway. diff --git a/mm/filemap.c b/mm/filemap.c index 08341616ae7a..e28fb229f6b4 100644 --- a/mm/filemap.c +++ b/mm/filemap.c @@ -97,7 +97,7 @@ * ->i_pages lock (__sync_single_inode) * * ->i_mmap_rwsem - * ->anon_vma.lock (vma_adjust) + * ->anon_vma.lock (vma_merge) * * ->anon_vma.lock * ->page_table_lock or pte_lock (anon_vma_prepare and various) diff --git a/mm/mmap.c b/mm/mmap.c index 8ca40efb82f9..be01ffb96ecf 100644 --- a/mm/mmap.c +++ b/mm/mmap.c @@ -800,133 +800,6 @@ int vma_shrink(struct vma_iterator *vmi, struct vm_area_struct *vma, return 0; } -/* - * We cannot adjust vm_start, vm_end, vm_pgoff fields of a vma that - * is already present in an i_mmap tree without adjusting the tree. - * The following helper function should be used when such adjustments - * are necessary. The "insert" vma (if any) is to be inserted - * before we drop the necessary locks. - */ -int __vma_adjust(struct vma_iterator *vmi, struct vm_area_struct *vma, - unsigned long start, unsigned long end, pgoff_t pgoff, - struct vm_area_struct *expand) -{ - struct mm_struct *mm = vma->vm_mm; - struct vm_area_struct *remove2 = NULL; - struct vm_area_struct *remove = NULL; - struct vm_area_struct *next = find_vma(mm, vma->vm_end); - struct vm_area_struct *orig_vma = vma; - struct file *file = vma->vm_file; - bool vma_changed = false; - long adjust_next = 0; - struct vma_prepare vma_prep; - - if (next) { - int error = 0; - - if (end >= next->vm_end) { - /* - * vma expands, overlapping all the next, and - * perhaps the one after too (mprotect case 6). - * The only other cases that gets here are - * case 1, case 7 and case 8. - */ - if (next == expand) { - /* - * The only case where we don't expand "vma" - * and we expand "next" instead is case 8. - */ - VM_WARN_ON(end != next->vm_end); - /* - * we're removing "vma" and that to do so we - * swapped "vma" and "next". - */ - VM_WARN_ON(file != next->vm_file); - swap(vma, next); - remove = next; - } else { - VM_WARN_ON(expand != vma); - /* - * case 1, 6, 7, remove next. - * case 6 also removes the one beyond next - */ - remove = next; - if (end > next->vm_end) - remove2 = find_vma(mm, next->vm_end); - - VM_WARN_ON(remove2 != NULL && - end != remove2->vm_end); - } - - /* - * If next doesn't have anon_vma, import from vma after - * next, if the vma overlaps with it. - */ - 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) { - /* - * vma expands, overlapping part of the next: - * mprotect case 5 shifting the boundary up. - */ - adjust_next = (end - next->vm_start); - 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 - * split_vma inserting another: so it must be - * mprotect case 4 shifting the boundary down. - */ - adjust_next = -(vma->vm_end - end); - VM_WARN_ON(expand != next); - error = dup_anon_vma(next, vma); - } - if (error) - return error; - } - - if (vma_iter_prealloc(vmi, vma)) - return -ENOMEM; - - vma_adjust_trans_huge(orig_vma, start, end, adjust_next); - - init_multi_vma_prep(&vma_prep, vma, adjust_next ? next : NULL, remove, - remove2); - VM_WARN_ON(vma_prep.anon_vma && adjust_next && next->anon_vma && - vma_prep.anon_vma != next->anon_vma); - - vma_prepare(&vma_prep); - - if (start < vma->vm_start || end > vma->vm_end) - vma_changed = true; - - vma->vm_start = start; - vma->vm_end = end; - vma->vm_pgoff = pgoff; - - if (vma_changed) - vma_iter_store(vmi, vma); - - if (adjust_next) { - next->vm_start += adjust_next; - next->vm_pgoff += adjust_next >> PAGE_SHIFT; - if (adjust_next < 0) { - WARN_ON_ONCE(vma_changed); - vma_iter_store(vmi, next); - } - } - - vma_complete(&vma_prep, vmi, mm); - vma_iter_free(vmi); - validate_mm(mm); - - return 0; -} - /* * If the vma has a ->close operation then the driver probably needs to release * per-vma resources, so we don't attempt to merge those. @@ -1053,7 +926,7 @@ can_vma_merge_after(struct vm_area_struct *vma, unsigned long vm_flags, * It is important for case 8 that the vma NNNN overlapping the * region AAAA is never going to extended over XXXX. Instead XXXX must * be extended in region AAAA and NNNN must be removed. This way in - * all cases where vma_merge succeeds, the moment vma_adjust drops the + * all cases where vma_merge succeeds, the moment vma_merge drops the * rmap_locks, the properties of the merged vma will be already * correct for the whole merged range. Some of those properties like * vm_page_prot/vm_flags may be accessed by rmap_walks and they must @@ -1063,6 +936,12 @@ can_vma_merge_after(struct vm_area_struct *vma, unsigned long vm_flags, * or other rmap walkers (if working on addresses beyond the "end" * parameter) may establish ptes with the wrong permissions of NNNN * instead of the right permissions of XXXX. + * + * In the code below: + * PPPP is represented by *prev + * NNNN is represented by *mid (and possibly equal to *next) + * XXXX is represented by *next or not represented at all. + * AAAA is not represented - it will be merged or the function will return NULL */ struct vm_area_struct *vma_merge(struct vma_iterator *vmi, struct mm_struct *mm, struct vm_area_struct *prev, unsigned long addr, @@ -1073,11 +952,19 @@ struct vm_area_struct *vma_merge(struct vma_iterator *vmi, struct mm_struct *mm, struct anon_vma_name *anon_name) { pgoff_t pglen = (end - addr) >> PAGE_SHIFT; + pgoff_t vma_pgoff; struct vm_area_struct *mid, *next, *res = NULL; + struct vm_area_struct *vma, *adjust, *remove, *remove2; int err = -1; bool merge_prev = false; bool merge_next = false; + bool vma_expanded = false; + struct vma_prepare vp; + unsigned long vma_end = end; + long adj_next = 0; + unsigned long vma_start = addr; + validate_mm(mm); /* * We later require that vma->vm_flags == vm_flags, * so this tests vma->vm_flags & VM_SPECIAL, too. @@ -1095,13 +982,17 @@ struct vm_area_struct *vma_merge(struct vma_iterator *vmi, struct mm_struct *mm, VM_WARN_ON(mid && end > mid->vm_end); VM_WARN_ON(addr >= end); - /* Can we merge the predecessor? */ - if (prev && prev->vm_end == addr && - mpol_equal(vma_policy(prev), policy) && - can_vma_merge_after(prev, vm_flags, - anon_vma, file, pgoff, - vm_userfaultfd_ctx, anon_name)) { - merge_prev = true; + if (prev) { + res = prev; + vma = prev; + vma_start = prev->vm_start; + vma_pgoff = prev->vm_pgoff; + /* Can we merge the predecessor? */ + if (prev->vm_end == addr && mpol_equal(vma_policy(prev), policy) + && can_vma_merge_after(prev, vm_flags, anon_vma, file, + pgoff, vm_userfaultfd_ctx, anon_name)) { + merge_prev = true; + } } /* Can we merge the successor? */ if (next && end == next->vm_start && @@ -1111,32 +1002,85 @@ struct vm_area_struct *vma_merge(struct vma_iterator *vmi, struct mm_struct *mm, vm_userfaultfd_ctx, anon_name)) { merge_next = true; } + + remove = remove2 = adjust = NULL; /* Can we merge both the predecessor and the successor? */ if (merge_prev && merge_next && - is_mergeable_anon_vma(prev->anon_vma, - next->anon_vma, NULL)) { /* cases 1, 6 */ - err = __vma_adjust(vmi, prev, prev->vm_start, - next->vm_end, prev->vm_pgoff, prev); - res = prev; - } else if (merge_prev) { /* cases 2, 5, 7 */ - err = __vma_adjust(vmi, prev, prev->vm_start, - end, prev->vm_pgoff, prev); - res = prev; + is_mergeable_anon_vma(prev->anon_vma, next->anon_vma, NULL)) { + remove = mid; /* case 1 */ + vma_end = next->vm_end; + err = dup_anon_vma(res, remove); + if (mid != next) { /* case 6 */ + remove2 = next; + if (!remove->anon_vma) + err = dup_anon_vma(res, remove2); + } + } else if (merge_prev) { + err = 0; /* case 2 */ + if (mid && end > mid->vm_start) { + err = dup_anon_vma(res, mid); + if (end == mid->vm_end) { /* case 7 */ + remove = mid; + } else { /* case 5 */ + adjust = mid; + adj_next = (end - mid->vm_start); + } + } } else if (merge_next) { - if (prev && addr < prev->vm_end) /* case 4 */ - err = __vma_adjust(vmi, prev, prev->vm_start, - addr, prev->vm_pgoff, next); - else /* cases 3, 8 */ - err = __vma_adjust(vmi, mid, addr, next->vm_end, - next->vm_pgoff - pglen, next); res = next; + if (prev && addr < prev->vm_end) { /* case 4 */ + vma_end = addr; + adjust = mid; + adj_next = -(vma->vm_end - addr); + err = dup_anon_vma(res, adjust); + } else { + vma = next; /* case 3 */ + vma_start = addr; + vma_end = next->vm_end; + vma_pgoff = next->vm_pgoff; + err = 0; + if (mid != next) { /* case 8 */ + remove = mid; + err = dup_anon_vma(res, remove); + } + } } - /* - * Cannot merge with predecessor or successor or error in __vma_adjust? - */ + /* Cannot merge or error in anon_vma clone */ if (err) return NULL; + + if (vma_iter_prealloc(vmi, vma)) + return NULL; + + vma_adjust_trans_huge(vma, vma_start, vma_end, adj_next); + init_multi_vma_prep(&vp, vma, adjust, remove, remove2); + VM_WARN_ON(vp.anon_vma && adjust && adjust->anon_vma && + vp.anon_vma != adjust->anon_vma); + + vma_prepare(&vp); + if (vma_start < vma->vm_start || vma_end > vma->vm_end) + vma_expanded = true; + + vma->vm_start = vma_start; + vma->vm_end = vma_end; + vma->vm_pgoff = vma_pgoff; + + if (vma_expanded) + vma_iter_store(vmi, vma); + + if (adj_next) { + adjust->vm_start += adj_next; + adjust->vm_pgoff += adj_next >> PAGE_SHIFT; + if (adj_next < 0) { + WARN_ON(vma_expanded); + vma_iter_store(vmi, next); + } + } + + vma_complete(&vp, vmi, mm); + vma_iter_free(vmi); + validate_mm(mm); khugepaged_enter_vma(res, vm_flags); if (res) diff --git a/mm/rmap.c b/mm/rmap.c index 2ec925e5fa6a..3685390c36a7 100644 --- a/mm/rmap.c +++ b/mm/rmap.c @@ -1230,7 +1230,7 @@ void page_add_anon_rmap(struct page *page, if (unlikely(PageKsm(page))) unlock_page_memcg(page); - /* address might be in next vma when migration races vma_adjust */ + /* address might be in next vma when migration races vma_merge */ else if (first) __page_set_anon_rmap(page, vma, address, !!(flags & RMAP_EXCLUSIVE)); @@ -2556,7 +2556,7 @@ void hugepage_add_anon_rmap(struct page *page, struct vm_area_struct *vma, BUG_ON(!PageLocked(page)); BUG_ON(!anon_vma); - /* address might be in next vma when migration races vma_adjust */ + /* address might be in next vma when migration races vma_merge */ first = atomic_inc_and_test(compound_mapcount_ptr(page)); VM_BUG_ON_PAGE(!first && (flags & RMAP_EXCLUSIVE), page); VM_BUG_ON_PAGE(!first && PageAnonExclusive(page), page);