From patchwork Sun Jul 17 02:46:56 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: 12920386 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 ACD72C43334 for ; Sun, 17 Jul 2022 02:48:06 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id E9B37940021; Sat, 16 Jul 2022 22:47:39 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id E4D41940026; Sat, 16 Jul 2022 22:47:39 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id B188F940021; Sat, 16 Jul 2022 22:47:39 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0011.hostedemail.com [216.40.44.11]) by kanga.kvack.org (Postfix) with ESMTP id 951C0940026 for ; Sat, 16 Jul 2022 22:47:39 -0400 (EDT) Received: from smtpin11.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay13.hostedemail.com (Postfix) with ESMTP id 7920C6029E for ; Sun, 17 Jul 2022 02:47:39 +0000 (UTC) X-FDA: 79695056238.11.5AEF35A Received: from mx0b-00069f02.pphosted.com (mx0b-00069f02.pphosted.com [205.220.177.32]) by imf07.hostedemail.com (Postfix) with ESMTP id 2C31E4004E for ; Sun, 17 Jul 2022 02:47:39 +0000 (UTC) Received: from pps.filterd (m0246630.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.17.1.5/8.17.1.5) with ESMTP id 26GJ8or0009632; Sun, 17 Jul 2022 02:47:37 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=from : to : subject : date : message-id : references : in-reply-to : content-type : content-transfer-encoding : mime-version; s=corp-2022-7-12; bh=wdrE/nUwbQ3B/eUPWBXX8jHi9gWVAa/HGKSZN/xnxPE=; b=RimFTbYlgpprCUzIm6ovOgvCx2xelEF/W3VVZ9ZK2iumhcyy7sBKWprkPcgWOR5BQnP2 qXC4vAakuk04Vyyg+HLdPdz9gfdMZLJSAQajVMiOuFMBMKO1lQJ+/6wxufljKK5jN4Ij AGCAKbePE/NEdjgFoWByKpXKnszdq+FS7NgMQS1HSQdwWwoo4kkY2gwUzWj2CeUXS/sC DcXD83dP6pnqrIdzu/4NLUU8F61CPFf2U0TXbcrxnByjKNG7YNmJjsvS+YUwBX17qZtk TwU4DiWJ2o9lwRKCou+Ejg4FL4Qjdtkxltkszk7dkTJdY0JYtic0SENk3Uqh2pUgYLkc 4Q== Received: from phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta01.appoci.oracle.com [138.1.114.2]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3hbkrc0ynj-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Sun, 17 Jul 2022 02:47:37 +0000 Received: from pps.filterd (phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com [127.0.0.1]) by phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com (8.17.1.5/8.17.1.5) with ESMTP id 26GMYI00036125; Sun, 17 Jul 2022 02:47:36 GMT Received: from nam12-dm6-obe.outbound.protection.outlook.com (mail-dm6nam12lp2173.outbound.protection.outlook.com [104.47.59.173]) by phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 3hc1ejp6au-10 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Sun, 17 Jul 2022 02:47:36 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=kqp5K4gBZeNwCnOUET1wNLGtEr6+3uiWlc9cm43pXRPUtpBScgfAawju0+uUKoXx0UQKBRzxPX7mKi4BEMGD73lw6H7K6/WM7sZ/SpbTDBhTtdJOFo1iBPXMVx6e8OhiCnEu92olhZhvgebevW2tmFY1eJsPruM7cBK+HrQkXo+4AbplG8SJclB+gclqaKAmbLovSNz7YOlmiOLFpF5bPmMInqDQqlNYflMRoSv1p8Ha4sdS69FWDzpV2P9xuq+DO1QFMzlnMcMhtcX3f+wmfA0lj4tlM68/rm1ogRvMXm7mHa5XdeB+/Mo3Hn9vL60eRTHII59zj3P4T6cyRXKQYQ== 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=wdrE/nUwbQ3B/eUPWBXX8jHi9gWVAa/HGKSZN/xnxPE=; b=M3NuMj9iX7B7OUO/scVd9QmEOKzLX3+elm/mgNbA1oHS7zfw5hEVPQPMdjqGsdD1K7xdUQqfP//sectqFNDRRzU6ox4fMllpUksroOv8eeW3977G76UWAN6aNhx/UozhGvxURcRq+RTlLDkMF1gpECaCpB4Yg5rr2QD8+k4U6ur5PtO3SDHLMg3Ritx+IUa1FlT9vsoSbLHrYy5vOnseOXEMONDmAjn9LHmke6l7iBYd8lUYUaUhTJqVwVsXCuAoCyJ8al8TkPnjf9TBh0QShX+3HDeRGds0rEExSrQiSITrALGiWHsEecFCQWAgQiCe7VXTQWLjZ/0U382B8NMPRQ== 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=wdrE/nUwbQ3B/eUPWBXX8jHi9gWVAa/HGKSZN/xnxPE=; b=GFVcqXL/jI/eNTrFR3FezsmtzemUqZ+MvvcH0u03unveWLNQhA0NBiBY4172PKEUmAusWO40DhyA8MvPJv/p01cU6cxDoAfTOWHDVm9Szf/wkbGkPLo+JFFkELZlymBJw+/4H/iD6MiaIwB+313cyuoPMcbMm82pr1gGgZSalm8= Received: from SN6PR10MB3022.namprd10.prod.outlook.com (2603:10b6:805:d8::25) by PH0PR10MB4504.namprd10.prod.outlook.com (2603:10b6:510:42::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5438.14; Sun, 17 Jul 2022 02:47:33 +0000 Received: from SN6PR10MB3022.namprd10.prod.outlook.com ([fe80::c4d1:edc3:7d21:7c68]) by SN6PR10MB3022.namprd10.prod.outlook.com ([fe80::c4d1:edc3:7d21:7c68%6]) with mapi id 15.20.5438.020; Sun, 17 Jul 2022 02:47:33 +0000 From: Liam Howlett To: "maple-tree@lists.infradead.org" , "linux-mm@kvack.org" , "linux-kernel@vger.kernel.org" , Andrew Morton , Yu Zhao , Hugh Dickins Subject: [PATCH v11 58/69] mm/mprotect: use maple tree navigation instead of vma linked list Thread-Topic: [PATCH v11 58/69] mm/mprotect: use maple tree navigation instead of vma linked list Thread-Index: AQHYmYd6Zh4lJdNBfkGCPs0zCpVKdw== Date: Sun, 17 Jul 2022 02:46:56 +0000 Message-ID: <20220717024615.2106835-59-Liam.Howlett@oracle.com> References: <20220717024615.2106835-1-Liam.Howlett@oracle.com> In-Reply-To: <20220717024615.2106835-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-office365-filtering-correlation-id: caeb191f-4ee3-4cc3-cb8b-08da679eb30f x-ms-traffictypediagnostic: PH0PR10MB4504:EE_ x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: dkDTWaKvY3Co3h61HFyw8gvExfSZm1pG4iKTYwAp8rmUPtAd7+26pRmOYhmCb1lfb1JPBULOpiAdi1rV/BROTELjx+rphLcmC1ISmf1qjk/e3/SEo2xsyo1IZooJYqKceE/i2rIOBdIXfDUEiQeE8Z3fbhqAYovzLKQGJMB12BTIIA1RSLGDUylfqk2FCOzWmVb0IUhsRPuvzuaXKrsmeaJtIUWctTQ+xXqAOpAvVlFiFgTa+4jUYIpcpOggeB3gOfTj0prAqXOSHrPGuUxG547p7/kyxS69JWwnKUs6vZhW/jQhOYIij6RVozaMUahXb+etIV5to+dkURfHLJO6Vn92bS670RgceJSNl2Qaib/otRmc6O3YgoHeI5dryIy1F5cWS3rS9weN00uL+lntpVeGpIIA7ntaTRXJ0Ug3G0P9TIeMZ4GpgTRRr/H3rbgeIxDYChnx90yQMLtxV4eep7z1/wVpI4fqtiKtrIX7kN4sZfq1iWqOIP4qESg0Pzg4pi6/PUL6UlONy62ssfw4XPtU4RwJvo+NjpBzFR+NWhfVPYTGRsu4O4mv9WWIDSY7RvEkn1V1m0ac6y/k8pV3/eeZHZMDPYRIOcu8LcrajrSEl4mM0g1cBxb/pFNfZam9altvPMWu5b2VPhDUkQPWIilzqFTKFaazbgoxYLrmbvPtfwJ8xAbTRRUsxOcf96/VHvupKaj3mBAxwIIU14rgDkIUdnbh67I6vp4vhD8PSgbE2E/IyJo+pFPahGRm/7u/7AwOwA8SqlschQ45Sv+Bk44H/AuvUd6IDBaxXahH09Fmu8NXrREkJewgwOWIMj3h1rqgyz+rIiE6sWgN+ngLXQKP81RMigdI6leD/TbWc/KiEHmiNVx9WGQ0h2D6SE8y 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:(13230016)(376002)(39860400002)(366004)(346002)(396003)(136003)(966005)(6486002)(83380400001)(1076003)(41300700001)(2906002)(38070700005)(44832011)(8936002)(6666004)(478600001)(5660300002)(110136005)(86362001)(2616005)(122000001)(6506007)(36756003)(26005)(6512007)(38100700002)(186003)(8676002)(316002)(64756008)(71200400001)(66446008)(91956017)(76116006)(66476007)(66946007)(66556008);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?q?Z3t8QkFdZldzl4exMRZKBVg?= =?iso-8859-1?q?mTjYgLcx//JNZNu81l2dU+spWlVh3MzvZTI7s2qSEf3ClsqzGxAcle4VXhIm?= =?iso-8859-1?q?nriOs/ChMGKQSowEQPfc5bXdIAQT5JpyD2TQeBzGbotiPfO8w3i+/R28NAYY?= =?iso-8859-1?q?rXawpUPfMXYHd1HMOLm8mNbEV0sqWyHSzXvTbYWvTnnXXxBSKl8ZKyyMwMNo?= =?iso-8859-1?q?+Jf2q1fyZ/ON820ElW50ah/Cs9o6/dcjh4VGvU/0U6CLgCxAe78JGkDY6UiA?= =?iso-8859-1?q?mUQOx1IhI3yrfK2FDCuXDQ5diW4SpfePhHLbA7yVwQYALOO2hkXam2tfbtOW?= =?iso-8859-1?q?VyQeyQNWOWaWJKNSm9dRlCoymZtO/Eo3VfWu0HqCd9w39mgsS3Jf1nJC2wsr?= =?iso-8859-1?q?zaqDg5FZSjrRAyTxY5WsIbgKyS/gX9sQ77Zm3ywX2MmTdAt1ithXzAzrA4ue?= =?iso-8859-1?q?4Q6euhcLDtaUvgdZ9wcDxh6CZXWlRJfkWBi1vIRSEHdcksjqEXC1gKEg9yUi?= =?iso-8859-1?q?anNk2oH8j2N2w05At3M5Zny5w5Q4Wo+Q7tuVHVJEuMpQ3nVyD8U9NIghs27w?= =?iso-8859-1?q?z+hucsJl9vjg1cVIs8EowdETsu4jAdoGLRjwXOXxMUArcAoCaDZwMDHPLvgv?= =?iso-8859-1?q?0L7PJRcB+Fc8MGSLn0mHwREiLElphUi3rDvYeglVfTswR8j/UOgJRYEffqdZ?= =?iso-8859-1?q?aK7xyduLdJiVYI0M91tJjNXBMBbie3ELu1K7D69vFAZK07ZPmPIq5SJqx8mM?= =?iso-8859-1?q?FCySB6HfajgysuThEtBKxVODbufu5MKZ/I+anWMsTkbMDpdRCgiXKqN61W8o?= =?iso-8859-1?q?ihEkqhUxyMQPnGBf71SXz4atSFdOjnNUbRoiZ7qW42GFvfwoK0DjJK64RiuB?= =?iso-8859-1?q?iCY+vYqAA+cQpRRhPJ624PRUSyZgzhwXkrHfR8XJ5aoVNQpP50sZLeMg15C0?= =?iso-8859-1?q?1CgGGSe2Z6Gz+u3fNivXQ8xv7HvX9gGJWlQaZpCklMWWv76oZFbnyQ6LuzSW?= =?iso-8859-1?q?eoZ3Oabaqn+N12QH/l+qIMWFDxcPV4vwi2cHuJI/g9aPW+IKF4/CNCj0PfCk?= =?iso-8859-1?q?/NCvMshlU6wBetiePSgpHTg4pss1e4JPJfjnMTjuCILXj0EG1zcil+gcGjHv?= =?iso-8859-1?q?+bMQMjkSTCAjZiSjOgAkZx2hCXhc4Yql+YuBkGfouPDgE10afMDFnUzzvIYL?= =?iso-8859-1?q?yNWZxMeOadSwsZaGYIWO0WVDg4xhR44LIvmb+TtbcGD2wPjTXJYpX1vSfAgr?= =?iso-8859-1?q?AXSDdoz9aNLh6UfW9vPNUW0ZW7pW9wWjhhJ/ciJmhjI3sFxon7Jm4qxqanfL?= =?iso-8859-1?q?1Mxk9xvT9DRMMpnBVUP255Y0NgWv1IS0H//r6ZV7+4n+l9hxhQyn/n6wFSbT?= =?iso-8859-1?q?ti1f6LSa1gCxCtqj8Ql5GqLO9+WHNTwSYXBlo5FeeEWIDR8vEjCFlH9HgM9V?= =?iso-8859-1?q?Tx4vEK8GyzMKrdEMDYabVsSoheXZqEDd1HJGxrEBFw6azDMN7w2OdyDYDktu?= =?iso-8859-1?q?8eCqFR0gEvqyGgNGYLTAgEmNCGmL11VY87JsH6jw6nWcK5MFfLNrdLpVNm0N?= =?iso-8859-1?q?2cpRK7W25ioj4Zq9+37zyTPL4iT7EI9yrgfSMuY1czYhttDNI4HU/ZPTDTYo?= =?iso-8859-1?q?JMOSK/LWng5l+c2stU2Zmke5u7VSZdSyn22n+Mw=3D=3D?= MIME-Version: 1.0 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: caeb191f-4ee3-4cc3-cb8b-08da679eb30f X-MS-Exchange-CrossTenant-originalarrivaltime: 17 Jul 2022 02:46:56.0678 (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: dwH7boXDDLMMRON4sVAX1csntaHojZdPSio6/cna1nm6XBkSc4KPuEJ4+G4hKoAaR264CxbRdXviIOU/JCpgkg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR10MB4504 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.205,Aquarius:18.0.883,Hydra:6.0.517,FMLib:17.11.122.1 definitions=2022-07-17_01,2022-07-15_01,2022-06-22_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 bulkscore=0 mlxscore=0 mlxlogscore=999 suspectscore=0 phishscore=0 adultscore=0 spamscore=0 malwarescore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2206140000 definitions=main-2207170010 X-Proofpoint-GUID: qDTlLvvxTPd8-R4HB6u9fqRJEzKQD1ik X-Proofpoint-ORIG-GUID: qDTlLvvxTPd8-R4HB6u9fqRJEzKQD1ik ARC-Seal: i=2; s=arc-20220608; d=hostedemail.com; t=1658026059; a=rsa-sha256; cv=pass; b=1LymE0r0R3VbQnrq5Y6cC41tZjlf1XbPcyK7QPofhH0TfqhYveHWM32z1tAE8bTKpHkoSr 6u+4AOrIabkjt8zRE7zZqoNOdwIEchH4eNMFsROoSZMtuJsMkLheG+D5QDbCeeBWwkaE2q Ccshm4yek7NCcAE5WFQG9cFpzvFy0Po= ARC-Authentication-Results: i=2; imf07.hostedemail.com; dkim=pass header.d=oracle.com header.s=corp-2022-7-12 header.b=RimFTbYl; dkim=pass header.d=oracle.onmicrosoft.com header.s=selector2-oracle-onmicrosoft-com header.b="GFVcqXL/"; dmarc=pass (policy=none) header.from=oracle.com; spf=none (imf07.hostedemail.com: domain of liam.howlett@oracle.com has no SPF policy when checking 205.220.177.32) smtp.mailfrom=liam.howlett@oracle.com; arc=pass ("microsoft.com:s=arcselector9901:i=1") ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1658026059; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to: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=wdrE/nUwbQ3B/eUPWBXX8jHi9gWVAa/HGKSZN/xnxPE=; b=sS2oCirVVPS8gYxZBkyHasP2NzVSA0uUPxcOZ4U07zb7/8DczQnHhS5bt6nbAFqyHvnmQa kjLBiFw4a441g/7MC6e9v6z/nwegfiGAZeqfO/4YP0/P+iI0One8R46wzQ1OeHuZwqtpw/ HLXWltMqfLWNbfRUlrzBmLj2TsCXCkw= X-Rspam-User: Authentication-Results: imf07.hostedemail.com; dkim=pass header.d=oracle.com header.s=corp-2022-7-12 header.b=RimFTbYl; dkim=pass header.d=oracle.onmicrosoft.com header.s=selector2-oracle-onmicrosoft-com header.b="GFVcqXL/"; dmarc=pass (policy=none) header.from=oracle.com; spf=none (imf07.hostedemail.com: domain of liam.howlett@oracle.com has no SPF policy when checking 205.220.177.32) smtp.mailfrom=liam.howlett@oracle.com; arc=pass ("microsoft.com:s=arcselector9901:i=1") X-Rspamd-Queue-Id: 2C31E4004E X-Rspamd-Server: rspam12 X-Stat-Signature: 1bwsoioc4ax6u4b73t57gt9cbtiofi56 X-HE-Tag: 1658026059-687862 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" Link: https://lkml.kernel.org/r/20220504011345.662299-43-Liam.Howlett@oracle.com Link: https://lkml.kernel.org/r/20220621204632.3370049-59-Liam.Howlett@oracle.com Signed-off-by: Liam R. Howlett Acked-by: Vlastimil Babka Cc: Catalin Marinas Cc: David Howells Cc: "Matthew Wilcox (Oracle)" Cc: SeongJae Park Cc: Will Deacon Cc: Davidlohr Bueso Signed-off-by: Andrew Morton --- mm/mprotect.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/mm/mprotect.c b/mm/mprotect.c index ba5592655ee3..27fb652151e4 100644 --- a/mm/mprotect.c +++ b/mm/mprotect.c @@ -621,6 +621,7 @@ static int do_mprotect_pkey(unsigned long start, size_t len, const bool rier = (current->personality & READ_IMPLIES_EXEC) && (prot & PROT_READ); struct mmu_gather tlb; + MA_STATE(mas, ¤t->mm->mm_mt, start, start); start = untagged_addr(start); @@ -652,7 +653,7 @@ static int do_mprotect_pkey(unsigned long start, size_t len, if ((pkey != -1) && !mm_pkey_is_allocated(current->mm, pkey)) goto out; - vma = find_vma(current->mm, start); + vma = mas_find(&mas, ULONG_MAX); error = -ENOMEM; if (!vma) goto out; @@ -678,7 +679,7 @@ static int do_mprotect_pkey(unsigned long start, size_t len, if (start > vma->vm_start) prev = vma; else - prev = vma->vm_prev; + prev = mas_prev(&mas, 0); tlb_gather_mmu(&tlb, current->mm); for (nstart = start ; ; ) { @@ -741,7 +742,7 @@ static int do_mprotect_pkey(unsigned long start, size_t len, if (nstart >= end) break; - vma = prev->vm_next; + vma = find_vma(current->mm, prev->vm_end); if (!vma || vma->vm_start != nstart) { error = -ENOMEM; break;