Message ID | 20220906194824.2110408-58-Liam.Howlett@oracle.com (mailing list archive) |
---|---|
State | New |
Headers | show
Return-Path: <owner-linux-mm@kvack.org> 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 6B26DC6FA86 for <linux-mm@archiver.kernel.org>; Tue, 6 Sep 2022 19:50:30 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 5BE7B8D000A; Tue, 6 Sep 2022 15:50:00 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 521658D0010; Tue, 6 Sep 2022 15:50:00 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 1784C8D000A; Tue, 6 Sep 2022 15:49:59 -0400 (EDT) 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 BCA158D000A for <linux-mm@kvack.org>; Tue, 6 Sep 2022 15:49:59 -0400 (EDT) Received: from smtpin10.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay04.hostedemail.com (Postfix) with ESMTP id 9FD0E1A0888 for <linux-mm@kvack.org>; Tue, 6 Sep 2022 19:49:59 +0000 (UTC) X-FDA: 79882701318.10.B85E11D Received: from mx0a-00069f02.pphosted.com (mx0a-00069f02.pphosted.com [205.220.165.32]) by imf02.hostedemail.com (Postfix) with ESMTP id 2D8088007C for <linux-mm@kvack.org>; Tue, 6 Sep 2022 19:49:58 +0000 (UTC) Received: from pps.filterd (m0246617.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.17.1.5/8.17.1.5) with ESMTP id 286IdYVT029915; Tue, 6 Sep 2022 19:49:52 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=r1giLiqobVgWalpGRtsW4+6ZGSEoKPLOFx/DDBog4ec=; b=yGcWO1nL9jOVSbWA43eapkMAE3oJNoKmZTxuVSu5r6yFkil4msmureZtL01PdXt1/SsL z0sKtGK9dcCladRAInTAMxn6ck3PvPhbW0K7oqc62pVW4yzLa7Jds/18n7MR5v9eWfOI lgeqlqFqSLyAqKXK6Teu/s9NJRJZ/4+lCcaoJPGHl035qLBlryu3G67HNsbK58QvbsG0 wCxdXFgGQgRhj0LXXU606zBgVRwwUt0iGCsj0kCFakd1in5C9mGnTViSlxPDntZUCs9U CwQWsj+DCpzva96/s3SBfXnRzvj4zYmByQS5NsCZR3b9cvAOYaZoHWAKvBog4TJ/z65u VQ== Received: from phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta01.appoci.oracle.com [138.1.114.2]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3jbyftpvdf-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 06 Sep 2022 19:49:51 +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 286HF67W031251; Tue, 6 Sep 2022 19:49:51 GMT Received: from nam11-co1-obe.outbound.protection.outlook.com (mail-co1nam11lp2173.outbound.protection.outlook.com [104.47.56.173]) by phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 3jbwc3ahkd-9 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 06 Sep 2022 19:49:51 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Eb82dqk02PeHhqvoH+UQ8PN3RDQMI7T98XA4U4nvJTQZNeVImdAGSj6UlZuGwX1YmSxWpYdxQJNgleKvFhNo84Hj3jR0tFuQemZq6tgPFbrTlA9LTqVhLBKXeZoESq+77DpCPbqdVUYvbJCkfl9FiHV4BL3KSYwIgjQXeBVKf6+0cS/p7j3QjYY7/yPCo13JEEnO7ecPCYiEvZYBLsPdv6z3pwvCvQzkwdNiiiSS7Z11ETj3euOo4TfprXQeGJdtPnGhl3HZVxnc2hUAj0HQgOLZE/DriBnhZlwCinawwReR9ECcY57YT9GCsnzwbMowjmM/inE+XbFb7yLQYv2hTg== 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=r1giLiqobVgWalpGRtsW4+6ZGSEoKPLOFx/DDBog4ec=; b=ZFRYd2lXrByQZeyeszbuqygtNjsbaR1RpOLZIuli+bh/muxUan9EqoonjMUKnAmbG3pBawhpAP6bkJR2bC9husBk1OqSmFVQLwcvIGfQfwRhML6dX+SX/vSS1oabggNUVFJ4aRMCnkFX63VQ56RaWFami65ZT5MFFjClgcxKiZyBm1wckMvBIut7KNykcSUlKaPIaLyDGNZGqYQzXBViyLHcRPpbSlGgerra9vnOYIARHwZ21ljxT/sFgSW9zn3OgkRpgHcGdwJ2/tzF+na8Br3OPxhsSKOZzcUtt2zeM/Jqkd9nxD0SuZG99oTMj8psLVV/As3FOprolRB/OQi5kA== 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=r1giLiqobVgWalpGRtsW4+6ZGSEoKPLOFx/DDBog4ec=; b=P/UTqXYKewR2fqUe6pJDGwngv2IvQ1yWPIPN1yqdeonO0rKAcaj32HDV/goIm4ZwBQE/XWqiqU3AZRAMrOy63LSnubvMFvdk/X2TTRddWWt1pYCBErtu1JvRMKzBSlHJ48suZ82L9gnPayLZLEVOlawVU+Kx8xhNZReIV4WGpOE= Received: from SN6PR10MB3022.namprd10.prod.outlook.com (2603:10b6:805:d8::25) by CH0PR10MB4876.namprd10.prod.outlook.com (2603:10b6:610:c9::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5588.15; Tue, 6 Sep 2022 19:49:48 +0000 Received: from SN6PR10MB3022.namprd10.prod.outlook.com ([fe80::a420:3107:436d:d223]) by SN6PR10MB3022.namprd10.prod.outlook.com ([fe80::a420:3107:436d:d223%5]) with mapi id 15.20.5588.018; Tue, 6 Sep 2022 19:49:48 +0000 From: Liam Howlett <liam.howlett@oracle.com> To: "maple-tree@lists.infradead.org" <maple-tree@lists.infradead.org>, "linux-mm@kvack.org" <linux-mm@kvack.org>, "linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>, Andrew Morton <akpm@linux-foundation.org> CC: "Matthew Wilcox (Oracle)" <willy@infradead.org>, Liam Howlett <liam.howlett@oracle.com> Subject: [PATCH v14 57/70] mm/mlock: use vma iterator and maple state instead of vma linked list Thread-Topic: [PATCH v14 57/70] mm/mlock: use vma iterator and maple state instead of vma linked list Thread-Index: AQHYwim2zJwfk3M7EUG4CKgBkyCqoQ== Date: Tue, 6 Sep 2022 19:49:02 +0000 Message-ID: <20220906194824.2110408-58-Liam.Howlett@oracle.com> References: <20220906194824.2110408-1-Liam.Howlett@oracle.com> In-Reply-To: <20220906194824.2110408-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: b29537df-3c79-42d2-4b41-08da9040f4e1 x-ms-traffictypediagnostic: CH0PR10MB4876:EE_ x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: LWElvPXPRNVhZ6jUkUWD0IwNb172vX0GGZ5DlJsiQ+VDeVopsWa9/DvN1AKq9rPiwitjyXvRgPvDr9wU0BNdxP6Jcte1kpws6eUuIjyWOPlpnZZm2rj0o9hirBFGX61dlZiW8aE4w3qKXLIJXfXHJalIRnVAv7z/zJzCIT94dbPCsf1IBQ9k3AvsMy4+xQRdaw9vC8Ln7Bsf/kuq+UzX7QN7kbwDXq7MBJ5nqZArpIzrQEiJF1Fy4sPghoBsYC3mZOFbRqHMi5ji0xNjnIo0KYsf/9xlAg6ccgHKVo4WRrFZcgThriiMSt5w1SMhuhH1E4glYDM+Rx3k9b7jxsICgqGV5RnYsSl/zKj/FE+bzNoUHXLwqZyfCFAdt3Ef/7LVPFkPv9QLrIgpYBeDcXhpmW/Zz38I7k+TOy7xVAGbzBDGuUzvGxNN4JhwnisVlg5ejk1HF1QVTSXstcabX/a9jMcXYki/DvEygVXxV6nPTamOhPmFWVl5mdTh54iw79lkvwM8IOaP3PLiCvB1hpJy3yFSkDawCNBUoRU2VgEKPqqBb4xUuApVvcNB+1xeJhMyvqd3DjSeq7d+fOqsSPiKQb6JPMdKx3jmzF/WskOuqe7Wid8qHZK485CmLt3KGBIc2oR/A2/TjCID8ONFTwPPhDH7NVsakDl0qh/GY6FtrNxuSK80Ruew8DanJxDsjXe7ONVn/wUP7V8iS3vCURIRbN/M2sOXflfr3Tkm2Vl0lFX5NV0pibyLQuAXVqZK9QFz9ILCtHiLPInpQ2WYQxgegw== 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)(39860400002)(136003)(366004)(376002)(396003)(346002)(8936002)(6486002)(8676002)(4326008)(91956017)(122000001)(66946007)(66446008)(186003)(66476007)(76116006)(64756008)(66556008)(2616005)(38100700002)(38070700005)(478600001)(83380400001)(36756003)(1076003)(5660300002)(41300700001)(71200400001)(6666004)(44832011)(26005)(6506007)(54906003)(316002)(86362001)(107886003)(2906002)(110136005)(6512007);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?q?3r3D5iiFyRTmXp05qaDNWfm?= =?iso-8859-1?q?Mab5JJotCO3ZLHcsq9bFqOaKuRKp/fRXdwEjePjgURTIG2n8+zz1y9SgZvQm?= =?iso-8859-1?q?pCapw6wPjzJT1YRkgBJToPWTaHc0vZYhy0aHXfkWovezEZtBjBgh5yJLHEMm?= =?iso-8859-1?q?wzidhXUhHefUej6CBxh2KCC97r2iKiD5mGhl/qP83H9rbyTIMjCcrA2lLrbF?= =?iso-8859-1?q?PN+7ayIzza0KZYzJl84dW2VozG8eSZVNy/p/K4Bak+6dGgRghOSosLPR/VNo?= =?iso-8859-1?q?QcYo7HEvPx2PZPDMW2lnZfp+Zvoq13CF/lCYBYETFXIepd2mocLbzrNVGmb7?= =?iso-8859-1?q?q+majSq1kHmRwIw+JP6/8PZQcjmF96Mi+KguMp1SRZk7EpGloL1PnFUwCl1T?= =?iso-8859-1?q?vJDqetSf5V/tYSoUVJSzcj7eV10VTdTd/fKTGc33OD4/tokoKFKDRPWtKDOa?= =?iso-8859-1?q?VdazYJS//RVMbVAdlIYZszAStAsyi/8BgRccSn+3v4ie0yfLCOaJ12ZobCDS?= =?iso-8859-1?q?Uoq0p+RnsrW4wohLwZ16Hn8SeKZbahVDwZ/kc1dI8BLpmuZnx3I3YRMlc0Os?= =?iso-8859-1?q?ombvDt3PsEVMCqof32H86wbmg7RP1bor4ML2XR3pGYRvUObkiHCXgDSqnhZv?= =?iso-8859-1?q?q0y49ZFc1xaRqOdO/NwYhRPHQ2R4KhTJp4HnPseT2DS+x6M+wqe0Z/gF/7Lq?= =?iso-8859-1?q?mBrWhvHBRXcUyGUxQv6iWyi19Uxd0dlqOcJA72fZt1P+29rtfN8pMFa5ziXi?= =?iso-8859-1?q?65rtfa6IIeIL668pYSVowpYKnfw68sx9DtDF7gbtzdinDHoZqxqnaCagro2s?= =?iso-8859-1?q?D+aj0cFQiOJVDNYswaJaF9+qYAFvuHuylRVN7fhXQ/sU6LQtrosM5fzLYgzu?= =?iso-8859-1?q?zjpWUAxIBBCDRJNouCrsDgU3rmoyWqvWlsXKKCrpAARv6/Mvyxaw6ybFkA8O?= =?iso-8859-1?q?Ywdurxm7y61CVsmcmtbVJV20s6rWFGF+QD2RuvlbX3ehXVfkSDEJ8Z2aVjRF?= =?iso-8859-1?q?aDlQDOv1AJ/lqu8W91ZLCGnWo6SVZ+DzqGLM7bFx7zp0OWdRkOYHuqvWQ8Zu?= =?iso-8859-1?q?EO8GxeCxOkjB5Ugg0wEm22TlhZVyGOAINy11gA2P78weYCq6ZI2fFSwZuYMa?= =?iso-8859-1?q?MLUGYkqOQ/g2Xg47MaxS/QMuPFp9FGFB60qOulSo75ppDmXvWbccaqUME9Fb?= =?iso-8859-1?q?NPSCQO3HrmrbZeE7DUzKM1t918AkvR/oCr91jDEnqu0Iy1UgAUxjiGfh9ZR1?= =?iso-8859-1?q?aea1Yo9EUJm7YTg4gFcUbHdTZsz39DBqhnTgqgjeR+ylcAR7B5HJ4gFCFgXT?= =?iso-8859-1?q?WQq8YpVn46rMMN2fez+KWyU5HhLONZIyDjrIJ5giMdMrL10WPTNKAx6gkke6?= =?iso-8859-1?q?QRF5AXBYbcnz4oaxcvOtdp734d9rYichbEtNQjoL5KbvlTQgVjlrGfrceXIA?= =?iso-8859-1?q?Xg9XQU11HotuNXqkMYmAE4nSQmsHcfgHIc2xJD+/hWfs5WZOSFDGtZXbafIh?= =?iso-8859-1?q?Z7R84VZ6Qne3RMm8yKxcinbz4cQQIhf6NAK2nX8wgDkaHUoO8DfV1DhG54Qr?= =?iso-8859-1?q?wLyqJuX9sWCwg3yKOz+XJARFCweqsuiZIK/ghNb3w79fDEtPXM0wkSUK/Vae?= =?iso-8859-1?q?ukme0LZSEpy7MHUzbgyMDTlWBsCGi4q8MoiGKvA=3D=3D?= Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable 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: b29537df-3c79-42d2-4b41-08da9040f4e1 X-MS-Exchange-CrossTenant-originalarrivaltime: 06 Sep 2022 19:49:02.4433 (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: Vq8gVRUXWTv7Gu33UqI2PzLUkhjggDO8lo9UrrewIms9InGClDVFFPqecWDC8QObvITI3WXdrVzZeqN6zTvM2g== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH0PR10MB4876 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.205,Aquarius:18.0.895,Hydra:6.0.528,FMLib:17.11.122.1 definitions=2022-09-06_09,2022-09-06_02,2022-06-22_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 spamscore=0 malwarescore=0 mlxscore=0 suspectscore=0 mlxlogscore=999 phishscore=0 adultscore=0 bulkscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2207270000 definitions=main-2209060091 X-Proofpoint-ORIG-GUID: b8NYYlwEo7P1MvnMz11keu9i2lM8nGwP X-Proofpoint-GUID: b8NYYlwEo7P1MvnMz11keu9i2lM8nGwP ARC-Seal: i=2; s=arc-20220608; d=hostedemail.com; t=1662493799; a=rsa-sha256; cv=pass; b=OXAb8UYUncPwN6t8ZwdAvUp+E5CHX95dbcRSYYQnF8eZcxcXXb5GL0idSp4HVjjdvVW4x2 p70rtc4jZPzEBDE61MeSY7RRvH0b4yWVbhB/mkVbLIUBd9vsGsich88erQXVjabayS7nSY CO2af+57BapRnPLUXiCUr4D26wAeneQ= ARC-Authentication-Results: i=2; imf02.hostedemail.com; dkim=pass header.d=oracle.com header.s=corp-2022-7-12 header.b=yGcWO1nL; dkim=pass header.d=oracle.onmicrosoft.com header.s=selector2-oracle-onmicrosoft-com header.b="P/UTqXYK"; spf=pass (imf02.hostedemail.com: domain of liam.howlett@oracle.com designates 205.220.165.32 as permitted sender) smtp.mailfrom=liam.howlett@oracle.com; dmarc=pass (policy=none) header.from=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=1662493799; 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=r1giLiqobVgWalpGRtsW4+6ZGSEoKPLOFx/DDBog4ec=; b=X8eG3DDeJwTWz++NDO7dAvjh3xaQKDoibeDTwHNRjTlfwivUMdaNROngsitSdAMdl5ZuNm +sVUPgmlI6YppBjwxPKLWOFLAuGmyJ4WletlrwOZMxnNVpu1hVwfpJm2L2AQ4ask3DUBUw 9kg1xuBjZBW0F1pwDFbFW4WN7+rJM6A= X-Stat-Signature: f6g6ag97h881japirp9it313qqnnod5z X-Rspamd-Queue-Id: 2D8088007C X-Rspamd-Server: rspam07 X-Rspam-User: Authentication-Results: imf02.hostedemail.com; dkim=pass header.d=oracle.com header.s=corp-2022-7-12 header.b=yGcWO1nL; dkim=pass header.d=oracle.onmicrosoft.com header.s=selector2-oracle-onmicrosoft-com header.b="P/UTqXYK"; spf=pass (imf02.hostedemail.com: domain of liam.howlett@oracle.com designates 205.220.165.32 as permitted sender) smtp.mailfrom=liam.howlett@oracle.com; dmarc=pass (policy=none) header.from=oracle.com; arc=pass ("microsoft.com:s=arcselector9901:i=1") X-HE-Tag: 1662493798-63727 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: <linux-mm.kvack.org> |
Series |
Introducing the Maple Tree
|
expand
|
diff --git a/mm/mlock.c b/mm/mlock.c index b14e929084cc..43d19a1f28eb 100644 --- a/mm/mlock.c +++ b/mm/mlock.c @@ -471,6 +471,7 @@ static int apply_vma_lock_flags(unsigned long start, size_t len, unsigned long nstart, end, tmp; struct vm_area_struct *vma, *prev; int error; + MA_STATE(mas, ¤t->mm->mm_mt, start, start); VM_BUG_ON(offset_in_page(start)); VM_BUG_ON(len != PAGE_ALIGN(len)); @@ -479,13 +480,14 @@ static int apply_vma_lock_flags(unsigned long start, size_t len, return -EINVAL; if (end == start) return 0; - vma = find_vma(current->mm, start); - if (!vma || vma->vm_start > start) + vma = mas_walk(&mas); + if (!vma) return -ENOMEM; - prev = vma->vm_prev; if (start > vma->vm_start) prev = vma; + else + prev = mas_prev(&mas, 0); for (nstart = start ; ; ) { vm_flags_t newflags = vma->vm_flags & VM_LOCKED_CLEAR_MASK; @@ -505,7 +507,7 @@ static int apply_vma_lock_flags(unsigned long start, size_t len, if (nstart >= end) break; - vma = prev->vm_next; + vma = find_vma(prev->vm_mm, prev->vm_end); if (!vma || vma->vm_start != nstart) { error = -ENOMEM; break; @@ -526,24 +528,23 @@ static unsigned long count_mm_mlocked_page_nr(struct mm_struct *mm, { struct vm_area_struct *vma; unsigned long count = 0; + unsigned long end; + VMA_ITERATOR(vmi, mm, start); if (mm == NULL) mm = current->mm; - vma = find_vma(mm, start); - if (vma == NULL) - return 0; - - for (; vma ; vma = vma->vm_next) { - if (start >= vma->vm_end) - continue; - if (start + len <= vma->vm_start) - break; + /* Don't overflow past ULONG_MAX */ + if (unlikely(ULONG_MAX - len < start)) + end = ULONG_MAX; + else + end = start + len; + for_each_vma_range(vmi, vma, end) { if (vma->vm_flags & VM_LOCKED) { if (start > vma->vm_start) count -= (start - vma->vm_start); - if (start + len < vma->vm_end) { - count += start + len - vma->vm_start; + if (end < vma->vm_end) { + count += end - vma->vm_start; break; } count += vma->vm_end - vma->vm_start; @@ -659,6 +660,7 @@ SYSCALL_DEFINE2(munlock, unsigned long, start, size_t, len) */ static int apply_mlockall_flags(int flags) { + MA_STATE(mas, ¤t->mm->mm_mt, 0, 0); struct vm_area_struct *vma, *prev = NULL; vm_flags_t to_add = 0; @@ -679,7 +681,7 @@ static int apply_mlockall_flags(int flags) to_add |= VM_LOCKONFAULT; } - for (vma = current->mm->mmap; vma ; vma = prev->vm_next) { + mas_for_each(&mas, vma, ULONG_MAX) { vm_flags_t newflags; newflags = vma->vm_flags & VM_LOCKED_CLEAR_MASK; @@ -687,6 +689,7 @@ static int apply_mlockall_flags(int flags) /* Ignore errors */ mlock_fixup(vma, &prev, vma->vm_start, vma->vm_end, newflags); + mas_pause(&mas); cond_resched(); } out: