From mboxrd@z Thu Jan 1 00:00:00 1970 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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id A336EC433EF for ; Mon, 4 Apr 2022 14:43:32 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1378244AbiDDOmv (ORCPT ); Mon, 4 Apr 2022 10:42:51 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:43068 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232156AbiDDOlI (ORCPT ); Mon, 4 Apr 2022 10:41:08 -0400 Received: from mx0a-00069f02.pphosted.com (mx0a-00069f02.pphosted.com [205.220.165.32]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id B8D483FBF1 for ; Mon, 4 Apr 2022 07:36:46 -0700 (PDT) Received: from pps.filterd (m0246629.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.16.1.2/8.16.1.2) with SMTP id 234Dk3O6014690; Mon, 4 Apr 2022 14:36:42 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-2021-07-09; bh=yZdLZ5dMAa7hd2mO7o9yfBXDF01APV2Hp9v7VxxI4H4=; b=yE3hi54ZXG3P2J7/4gi1KfZmGbHMidJuYW66d0yccvtgdx6NZIL67wOCsLt/hYlr+/m+ omMUPLb6DrNctJR5Nd/kcLrgKA6unxCO3X4NyFX3YlbiEPsDqVNwrOrCZ3pHY736gk88 6vBZUkquCpRBCgjgpXneh0i72fDVCvKzQBqMmhm5MfD2dFs4w96YfTEeKvR0K3vpNKmO hP/0QIXRRivxBltCNdjd89Q1Tg4cyMMvFUj45QBBks4AgpGDga7bYUZgwvzT2kaXer7L 0s1xYTEqXmFnPA3+M0H88G0AuGUtZC5LpRP1wKMNV5CH3xmIoP8yca6aYjLhp9XtHrZR MQ== Received: from phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta01.appoci.oracle.com [138.1.114.2]) by mx0b-00069f02.pphosted.com with ESMTP id 3f6ec9kbyj-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 04 Apr 2022 14:36:36 +0000 Received: from pps.filterd (phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com [127.0.0.1]) by phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com (8.16.1.2/8.16.1.2) with SMTP id 234EaJH5008393; Mon, 4 Apr 2022 14:36:34 GMT Received: from nam11-co1-obe.outbound.protection.outlook.com (mail-co1nam11lp2175.outbound.protection.outlook.com [104.47.56.175]) by phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com with ESMTP id 3f6cx2c9f1-3 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 04 Apr 2022 14:36:34 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Oogy1/x090ABCT+IUSl7JsBylsjlaspso8P7H4PNLEiBr/6gy3Cpu+8MpEua1TkciIRLT3mWpiME8aaVuFZCO4YkuqWuGd595+t3zhlKm0Yn+Iqheo7xWWoX80hqDC8n7eaN1xZBSQafXtRgvLDIUBQQWwrcG82Q4cYeUB683cfw/WcexGU3QA8dP13TPCeluWNJviN1T6JkgRBQnuGaZnhhxNrUiTi6pr7yiz1ROInreUI8HziHRUQDcjOq4KBFUSxpydolPej3yjvCwS8YU+wn+YaBgA8HJHwlwjiYxMgMKEQGDDr+N8RGhkSMiYxNT+zJXhnQZ5166SYNKkJhTw== 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=yZdLZ5dMAa7hd2mO7o9yfBXDF01APV2Hp9v7VxxI4H4=; b=PZYxVxH10TbgVG5LFBYs6nGTGbNp23cYLCfmyCpuVbBhB1mEyMxp6KnWEh4wXX029QbTgBGFsqvZS3nS3MKzvzecJEuMa4EYWwQ2BhYcObxeOnEJFfwjUyCKiziSR/Hyjegft7tQDjv4QitE0NrNxix4XQBwhkuTNF7xx6bkZedjFMN42G9jJQL1l0wE5PUwckA4TcYQ1g54WarVbpt2Hg/p6Ior9OC43V470XWoCQkpdmL3x/E7qRjFa01rNYbnef/BExiU1Yi8nH5aHSDHAV90fzyjEFhgrR4e/5WxhDg1ewSTApp3JQYS3ueyiaDYTjG2gT2Wz2YrY/z2sd3hdg== 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=yZdLZ5dMAa7hd2mO7o9yfBXDF01APV2Hp9v7VxxI4H4=; b=svb3CdkSde99SzpSE1ebGGGnq+SR7+lfEtZjXpIVkD065gCRZMKzJ7liLv/VNux4qdugqQ6rCWE2/SbxFtfmw9OV5Ke0ntbLi0uuBruzqs+xezLYGsbqSJsuM/aEpDSJW1cxUbsETTuPZXn+EZuxt+KVQPzlNylBksLFmIi6p3w= Received: from SN6PR10MB3022.namprd10.prod.outlook.com (2603:10b6:805:d8::25) by SJ0PR10MB5742.namprd10.prod.outlook.com (2603:10b6:a03:3ed::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5123.31; Mon, 4 Apr 2022 14:36:33 +0000 Received: from SN6PR10MB3022.namprd10.prod.outlook.com ([fe80::74fd:df41:4c93:24a5]) by SN6PR10MB3022.namprd10.prod.outlook.com ([fe80::74fd:df41:4c93:24a5%6]) with mapi id 15.20.5123.031; Mon, 4 Apr 2022 14:36:33 +0000 From: Liam Howlett To: "maple-tree@lists.infradead.org" , "linux-mm@kvack.org" , "linux-kernel@vger.kernel.org" , Andrew Morton Subject: [PATCH v7 58/70] mm/mlock: Use vma iterator and instead of vma linked list Thread-Topic: [PATCH v7 58/70] mm/mlock: Use vma iterator and instead of vma linked list Thread-Index: AQHYSDFKIMeQILcYCECx6nqHecqkNg== Date: Mon, 4 Apr 2022 14:35:55 +0000 Message-ID: <20220404143501.2016403-59-Liam.Howlett@oracle.com> References: <20220404143501.2016403-1-Liam.Howlett@oracle.com> In-Reply-To: <20220404143501.2016403-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.34.1 x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: fa5ed02c-8792-4ea9-b4fe-08da164883f3 x-ms-traffictypediagnostic: SJ0PR10MB5742:EE_ x-microsoft-antispam-prvs: x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: TFN6LqiYq1VlZXVtNBVGeOqAtWw1TkArBJTIUS6PuNI7XClgmUA/XIR9c4zR/cE7WUSLcOxQ3N68IqJP3p79tr8Io8offkts7E74MLOD7/GjTyiMRv09B80svdYYlxobx7p7/kKrcSFmoc4/5k0w1K4pkNGxNfPCHeKsvXM4y0RZOl4dMOD3CnyuXG9H0XVfVwvINv6KGl3Ljfqcxed/iXDIvwJmATYu9eDw50Su0l2hi9hGjyBVEchHapCPM2yDa2q8U4Q1ppib0I9+rLNexrMJLMaZjCXv+LMTqlaKd5KnE1ijl0x9KQzCUqLar+ec2rHZAY25nTEwtDosCq0nK61Xp66CJiwnx0kFU9puskmiO5+32qyEL+XYNmv2lPhP44TrS1Yd4iPw1Dh+3PcvaMcOIbb9gcez8wKyM4tVijob1u7WNxKMyhrdukSFvQRIBwjNunY9aVcXkca3SBu5TZWA8CB03Za+xCTZiZIq3OoI5tLTPjWjx3BWZDF2G2eWCY/r79tlKwdyOU3mdcx9M4CrQKAl777+2DHdc1b8v2BHs+iASgwoQo0GaIl9GChUW9Fq8KRBh+bDxT75/+UVFyxHT0V0y0zmcOubRdA0o458VB2Omr7dZfT7WGNNElCEI29LAwiqeLOdRAZI2ZxAgOkgTu1fs26OdnvfA5WmblG2zJSwAGMKuJFavzeG0NHizbKOCKLXisrbf1B1LAImHQ== 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:(13230001)(366004)(26005)(122000001)(2906002)(44832011)(71200400001)(83380400001)(5660300002)(64756008)(66476007)(186003)(38070700005)(8936002)(316002)(1076003)(38100700002)(36756003)(2616005)(110136005)(66556008)(66446008)(86362001)(6506007)(91956017)(6512007)(508600001)(6486002)(8676002)(66946007)(76116006)(6666004);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?Q?hTRjbNfH9lKRVtFWfSmr9zDub8V3uwzx1m1p8PyhTRILpXdkOl2ODjiHIM?= =?iso-8859-1?Q?QsDcs0ARTWbJCIF0Xyl3cptGuzXCrpZ3RD5fb2bZ/HIYwFp5eqLekH1/iG?= =?iso-8859-1?Q?nZ82cpH8imd0gUXERnN9fGQXUG42spoDkiWfrkoY81fc3KpOisK8aVA9FZ?= =?iso-8859-1?Q?T/E3UYPKFtX7K9wYU8mM56eLcHAbju8tEC3xp/Fa9pb2zTczCvYhP5Jh5e?= =?iso-8859-1?Q?4Ud57WBmRO5n/aQsTRpy+VkzxsKphTbXQiLEmzJs0SAzCz4TwFnfVxkA8A?= =?iso-8859-1?Q?u2mnTjGD3NraDiAN3R2Z6AHRxCaZQR56pFDfZCZhD7Et51Mnv4aaYZdr2h?= =?iso-8859-1?Q?skWocrjb0hvVtjrFztqGfsk7Vd3x3qbNgmk+KR1Fze5Uy9PbSGXY3RBUpB?= =?iso-8859-1?Q?vIFkD6UlUywEdEEvLAYf1mj8wz+0+53DccR0xK6wVsa9cf99TkOoKjsQHd?= =?iso-8859-1?Q?LUh218zS1Xe1K9xESZUAEFe1OIE13o0ru2R7PJOJbe7pVyMIZVyDFOrIDX?= =?iso-8859-1?Q?aRESJ0RUxmjD0svjeBb3eZlA5R9qCKAZ4ApD2Mla3XJxQIYGiH/VEZpmDs?= =?iso-8859-1?Q?lhqfRVpWV5aCX8M+0hwGnH5v76h8p+uMdnjjbd1n6yR6YZQe0hYhDVuFeH?= =?iso-8859-1?Q?M+DSe3TI1AhXdfGuZz8liEfAikgKBKZkVFPT3p8dDm/x6hpfo6VG+0adT5?= =?iso-8859-1?Q?Y2SCZ+tLlwhuE3icWYMur2mbnTAXi/xAfSag+iL87MMbLiGAOio2SiLGLS?= =?iso-8859-1?Q?QH5ZQFIzlAnBcnc4mTGTftWhjqvnjKMUyjEEzsfBD0mN41JXFBATkU+Abb?= =?iso-8859-1?Q?xkINXygZ3+AoYbXJLapZm1huNYzV3mqJvn+T+I0hyZoGk0mgO3GnSwxjK9?= =?iso-8859-1?Q?MJFODT7j2PgDsvmlQI4lRlMQP/PJzWkDAlzzQpzITvJTUkHBBsKjbQ1RGM?= =?iso-8859-1?Q?ZxNkNc3rrapAH/gQI+1ge59XlMyFglG6PE0gytr5KhvL1U9kHL7ooD0Xh+?= =?iso-8859-1?Q?ZeF7px54L1G4pXTKT3iByqfUPF2EzzfWUmJNKyylEWqVVOvQN2Twb8cOJ9?= =?iso-8859-1?Q?6EVd2E0B+wdCO4WCIXz1cVlkNsKt2tFp5Q7rxMGxyfT6eHmvT+HzWFSx7X?= =?iso-8859-1?Q?JKGeKNrIlkDKMnQzgOos1IiE/DKHWl/gVg/cNbVGY52nlzAhev4O4VKWjJ?= =?iso-8859-1?Q?/dyCndznWzIKW4308UQW9jyLpFwgLFM/ZNhrshtLUQm8PbFnoC2JqCU6qX?= =?iso-8859-1?Q?ggmYJ92e6CAhGIRqN/I4ifquTC1G0ZHHKPbzhIHkS6E7/eH9KLRv2u48cU?= =?iso-8859-1?Q?2fDMmSdJndzejFHGfyyaqPT1SfmFeGyYxv2OCxWkJKmf0TGowyjyyJRS0q?= =?iso-8859-1?Q?E8Mm29KyiOieTLnCvDwJDNc3YDe7bkukLz6fbR6+8/nUlLpT2OQ3KyFrkm?= =?iso-8859-1?Q?YAKr6QWaG9SgtXJW/be1jRhxSxhxnjMsVbfmfR3urlrBG2D75v6qIggv24?= =?iso-8859-1?Q?wlW+f6wYv93NQFLk52MFYoVYpSD2hS2ibCIApHaJXFmq1FYnv5GOCajMG+?= =?iso-8859-1?Q?4ytuI0W2ailDwX2lRgxvfhDOvHX/nk1pq/WEwqQP4WtZPF37osgYWhP3lM?= =?iso-8859-1?Q?auCdBeoGS4RkHFcfWQoB2kQ4twsS+j/kuTjMAoX8hbDCtjW7fui02WmY/y?= =?iso-8859-1?Q?ofTYmWGzKmBz9HHUPOX/9qDc8ktC7MBHNbo0eBIgrSCrM8o3a+lw9hvYFC?= =?iso-8859-1?Q?12LDWzkuG5a4dQR+eAGqr5is6eDnCN1wcefJ860ikVHertMnY5JR6b7rw6?= =?iso-8859-1?Q?kE+cN9DS8gUJuVLKMgbTn4HDdyKlMjQ=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: fa5ed02c-8792-4ea9-b4fe-08da164883f3 X-MS-Exchange-CrossTenant-originalarrivaltime: 04 Apr 2022 14:35:55.2678 (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: nqLC2IvXz7FjtTfWWwiFD0v9NOTV/oXEU0MOD4A3ZixyU8HdszhI/MzNc4eKb3CLfnkA3J0+HsTr2MTGJAp0tA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ0PR10MB5742 X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.425,18.0.850 definitions=2022-04-04_06:2022-03-30,2022-04-04 signatures=0 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 malwarescore=0 spamscore=0 bulkscore=0 adultscore=0 mlxscore=0 phishscore=0 suspectscore=0 mlxlogscore=999 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2202240000 definitions=main-2204040083 X-Proofpoint-GUID: QPhHeCKca36I6x4rz9vc7HSO6blr-2GS X-Proofpoint-ORIG-GUID: QPhHeCKca36I6x4rz9vc7HSO6blr-2GS Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: "Liam R. Howlett" Handle overflow checking in count_mm_mlocked_page_nr() differently. Signed-off-by: Matthew Wilcox (Oracle) Signed-off-by: Liam R. Howlett --- mm/mlock.c | 34 ++++++++++++++++++---------------- 1 file changed, 18 insertions(+), 16 deletions(-) diff --git a/mm/mlock.c b/mm/mlock.c index 716caf851043..d8549b3dcb59 100644 --- a/mm/mlock.c +++ b/mm/mlock.c @@ -471,6 +471,7 @@ static int apply_vma_lock_flags(unsigned long start, si= ze_t len, unsigned long nstart, end, tmp; struct vm_area_struct *vma, *prev; int error; + MA_STATE(mas, ¤t->mm->mm_mt, start, start); =20 VM_BUG_ON(offset_in_page(start)); VM_BUG_ON(len !=3D PAGE_ALIGN(len)); @@ -479,13 +480,14 @@ static int apply_vma_lock_flags(unsigned long start, = size_t len, return -EINVAL; if (end =3D=3D start) return 0; - vma =3D find_vma(current->mm, start); - if (!vma || vma->vm_start > start) + vma =3D mas_walk(&mas); + if (!vma) return -ENOMEM; =20 - prev =3D vma->vm_prev; if (start > vma->vm_start) prev =3D vma; + else + prev =3D mas_prev(&mas, 0); =20 for (nstart =3D start ; ; ) { vm_flags_t newflags =3D vma->vm_flags & VM_LOCKED_CLEAR_MASK; @@ -505,7 +507,7 @@ static int apply_vma_lock_flags(unsigned long start, si= ze_t len, if (nstart >=3D end) break; =20 - vma =3D prev->vm_next; + vma =3D find_vma(prev->vm_mm, prev->vm_end); if (!vma || vma->vm_start !=3D nstart) { error =3D -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 =3D 0; + unsigned long end; + VMA_ITERATOR(vmi, mm, start); =20 if (mm =3D=3D NULL) mm =3D current->mm; =20 - vma =3D find_vma(mm, start); - if (vma =3D=3D NULL) - return 0; - - for (; vma ; vma =3D vma->vm_next) { - if (start >=3D vma->vm_end) - continue; - if (start + len <=3D vma->vm_start) - break; + /* Don't overflow past ULONG_MAX */ + if (unlikely(ULONG_MAX - len < start)) + end =3D ULONG_MAX; + else + end =3D start + len; + for_each_vma_range(vmi, vma, end) { if (vma->vm_flags & VM_LOCKED) { if (start > vma->vm_start) count -=3D (start - vma->vm_start); - if (start + len < vma->vm_end) { - count +=3D start + len - vma->vm_start; + if (end < vma->vm_end) { + count +=3D end - vma->vm_start; break; } count +=3D 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) { + VMA_ITERATOR(vmi, current->mm, 0); struct vm_area_struct *vma, *prev =3D NULL; vm_flags_t to_add =3D 0; =20 @@ -679,7 +681,7 @@ static int apply_mlockall_flags(int flags) to_add |=3D VM_LOCKONFAULT; } =20 - for (vma =3D current->mm->mmap; vma ; vma =3D prev->vm_next) { + for_each_vma(vmi, vma) { vm_flags_t newflags; =20 newflags =3D vma->vm_flags & VM_LOCKED_CLEAR_MASK; --=20 2.34.1