From nobody Wed Dec 17 06:31:37 2025 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 03B72C77B71 for ; Fri, 21 Apr 2023 13:56:59 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229603AbjDUN46 (ORCPT ); Fri, 21 Apr 2023 09:56:58 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:38346 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232064AbjDUN4x (ORCPT ); Fri, 21 Apr 2023 09:56:53 -0400 Received: from mx0b-00069f02.pphosted.com (mx0b-00069f02.pphosted.com [205.220.177.32]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 292495251 for ; Fri, 21 Apr 2023 06:56:52 -0700 (PDT) Received: from pps.filterd (m0246632.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 33LCYYre006655; Fri, 21 Apr 2023 13:56:26 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : content-transfer-encoding : content-type : mime-version; s=corp-2023-03-30; bh=5F/Bt3x+K1203VADB6V9nMCJXcerC4oTfDvth6igwBY=; b=kC6FRTPJHPKQoqSqI8DU9K6s4/ReqjYyn+W+oxCeOdFZYU/o9o0W87UengcdjtSiQcJ2 D7UmzyHaz8NDru6MG1n0muhc8Z262VlNG4bQIIHsp/Jrrwmu1F2Ubi2oMMndNKiLF5Qf 8YLVkDQ5DjMg5jG9ldGeTTkgMaY9Nu+fTqbkycvj5q5XMm9cMauPGDkxpFSiv7TuM1c5 ghtltpCyXC5xmVZUICZtT4ZMfutLYIZgfToMeq4Nl8DT+JHXH73QS+OE2AGedymAU4tQ Ft7stj2by7of6ytMKW3QflM6IJOti43oPF+KqehBLFFXjEjhuYtne7+TFOXbmXuqITnm 0Q== Received: from phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta03.appoci.oracle.com [138.1.37.129]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3pykhu5b2k-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 21 Apr 2023 13:56:25 +0000 Received: from pps.filterd (phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com [127.0.0.1]) by phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (8.17.1.19/8.17.1.19) with ESMTP id 33LDLLcr037785; Fri, 21 Apr 2023 13:56:24 GMT Received: from nam10-dm6-obe.outbound.protection.outlook.com (mail-dm6nam10lp2108.outbound.protection.outlook.com [104.47.58.108]) by phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 3pyjc9n99n-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 21 Apr 2023 13:56:24 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Te1RK8Fm/gsm99TfOe7HXUMWCOCfh5C63h0NnQhJu6yplm7XyLAQts/MY1+WAViQ7vmK8zg2dc0Z8kNbgARkW7B6tuJ2bfyXTeO0lvQn/JqjodethcAVgZCdYabUCQWhqR81lmCOGm/szOXAmkgPiqYP3YEiAJ4yVPXUdNsUhMFZwgDzq2VcSjpLf7GYA1FQGpJsutCWovTYLCBA4NXSi2RfLffugAm1Av4+mZ5X6W2Jy7ntBLmrswXWDJ0OskJMcWkf/olUF6JsrzS7FNezLdtSb0ifOJ/dj+Hy5TkJBaywr4+osqLdyIBpGBhwsSGONdYHTUdS1VFiKrjOEMNRKg== 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=5F/Bt3x+K1203VADB6V9nMCJXcerC4oTfDvth6igwBY=; b=Aoie/MBg/OKC5i0w5CCJM7wA6ifeOuc7EClVg1SbK/2RKoOUlca/VtG3PT1NGE+iKKtkIF7BoE34BZ/1EC46GBLJEqIPGHMlmOQk0iD11hGzvT2gRMv/RIoNZVFz8C4X6IKDW/PyUDYrX9ylmCZ6ib+vT4FdHhE61BrjcWZC4WjEMSnxaU98ibIAKgdif8yHjfAY3/sloy60is9QoGPt6miDPLCG5AOw95cAUbgRK0D/ucb8yVSJSIRT5oK1csB1BK5nXWhYR6HDB1KqXfAn6P5Nx2a9U/BAUUa2LTjyDdwMkIxapQBhwKNewjTUfYHe4dxjYgZSdE8w6LPUaLQxsA== 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=5F/Bt3x+K1203VADB6V9nMCJXcerC4oTfDvth6igwBY=; b=fsF9hU9PiFktzwL96H1fDoww5IAGusaR17zHwjkuQSCKIm4MuH8qBTl3SHk3+qNBEI8dWSLbJSWtFxg4K0ShmMWJxpZ0a/cW32NaKH70A4QbkZHK++7bpaXKx+fvAFWxd8cmm/Xa8xt4xMcugFBBNCWTKqVVDghEQAB/bS96TRQ= Received: from SN6PR10MB3022.namprd10.prod.outlook.com (2603:10b6:805:d8::25) by IA1PR10MB7540.namprd10.prod.outlook.com (2603:10b6:208:445::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6319.22; Fri, 21 Apr 2023 13:56:21 +0000 Received: from SN6PR10MB3022.namprd10.prod.outlook.com ([fe80::8bb9:2bb7:3930:b5da]) by SN6PR10MB3022.namprd10.prod.outlook.com ([fe80::8bb9:2bb7:3930:b5da%7]) with mapi id 15.20.6319.022; Fri, 21 Apr 2023 13:56:21 +0000 From: "Liam R. Howlett" To: Andrew Morton Cc: linux-kernel@vger.kernel.org, linux-mm@kvack.org, maple-tree@lists.infradead.org, Rick Edgecombe , Peng Zhang , "Liam R. Howlett" Subject: [PATCH v3 1/4] maple_tree: Make maple state reusable after mas_empty_area_rev() Date: Fri, 21 Apr 2023 09:55:56 -0400 Message-Id: <20230421135559.2163923-2-Liam.Howlett@oracle.com> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20230421135559.2163923-1-Liam.Howlett@oracle.com> References: <20230421135559.2163923-1-Liam.Howlett@oracle.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: YT1PR01CA0100.CANPRD01.PROD.OUTLOOK.COM (2603:10b6:b01:2c::9) To SN6PR10MB3022.namprd10.prod.outlook.com (2603:10b6:805:d8::25) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SN6PR10MB3022:EE_|IA1PR10MB7540:EE_ X-MS-Office365-Filtering-Correlation-Id: 45d5221a-4acd-423d-e990-08db42703053 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: z8Us/q+D1IJJCmx159B4nLNkzdm6tkmn+IxEU+bzMkkNMIxs8gR0pS+SNXFkZ0+/+mfSGiG2IcA4W5zwRa6eJh3szO7RaEt0Z+iRR9ewDL6vUI/Raz2u4etSNIOufwmyTOGc5tlLIfoMAvutYEakl/ND4Hvyn2vzi4Ybmr5bXXHHm0ejqpvm/5kCcDh0gxw52lSYtyrn16T2zkUD6whfZ6Bjy4V6n80cVMsOTQ40WaiQEAKWxWCO6CPSbNkC1MdWvCoRN+3tUk+cGAsmo//z47SMg4SVlVPSizoiCAx0XfDNFzRlTGmv/N5w6O3fFxQ/lx3/l2NgZkN3/PZAvcJifV/kbPeD5AwWN3zwaxorOVCN8F0vWDFnu7Ka8drtylG6Vf5nPPM5NCACtibgSKP6ax/xejfyV8pFU28i1RD9LeT9pqN49w8M8IfEBmHqC/mMOFa1d9yuYxxDATnjXRV1LulYFc7SfU8+ILvGTd+VKtNf2haj7uNYqpKRZXNBROpExhed4rjk2bQLbSzZRB1ElqJ2XK2hJKCqIGtXDFFrma9J3PsYlpioKLDrQriz2z9b 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:(13230028)(396003)(366004)(39860400002)(376002)(346002)(136003)(451199021)(8676002)(8936002)(38100700002)(6916009)(4326008)(66556008)(66946007)(66476007)(41300700001)(316002)(2906002)(5660300002)(186003)(107886003)(86362001)(1076003)(6506007)(26005)(6512007)(36756003)(83380400001)(2616005)(54906003)(6666004)(478600001)(6486002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?bfq/Maaq0p+GzXJPdtmbVDyeR/DN3FXExlQYufhm5rJ6bgvqBFbhFU1UGmtw?= =?us-ascii?Q?cmXQ8RnRdxXjozBBrzCS5FL/UZ0Johxjo58jJIF8ityEQRbiwZwWgUJjdfpc?= =?us-ascii?Q?Va9AZlHxwRMQ3nH26lydHN+b3RVvCVdePMUzBnbYkkcmyGxsY7x8RcHZQlIE?= =?us-ascii?Q?3aMG/FschrLDxzdjTMLHx7dSiWyNusSnraWcj9q4TE3uDg3If/9Aae5OHpOP?= =?us-ascii?Q?UUC/jL+akb5cvgkRXjEqlSepz0rqwCFUNinNj/2HaSXpV2ycBDMKiZIBErFD?= =?us-ascii?Q?r8HSQ/WHQVC1TYfW5+pX9VmYDR07rGsGWHc1lAamse4w4ptA3hPV8VEKCe1x?= =?us-ascii?Q?8sZz1tZWGbXFmZfy2pvEd3OqtXQaDX26Xu3uxo6Z5Dbi/rbaGerC+7CKOodL?= =?us-ascii?Q?Tm/7TmBb4+RycyvzEIjRMEtZlw5YmP4DqCOP662igYdy4L9JuJ8P1RjC9Hjf?= =?us-ascii?Q?ab/GXWixdv5RV8UlO2PfaKr6Se1QCQkuzjZDArqGobS6qa08Ckyq5DZh+cWt?= =?us-ascii?Q?J0IkcrSpBZ8umGCwaGmUagEg2UJcS0aDdIvO5E9t/c2F30P5ux3U2GPeX1e+?= =?us-ascii?Q?QBMmeefY2m330Qowc020xjiWmNVK497FwLoIyFTXgh6M6MECjQXg2TJ8t0Oa?= =?us-ascii?Q?XJPaXFCSFsf5l5LvKqXU/Hz2VtILreLL2QNJixWLOsmM+H+l5UqaE1iht+nr?= =?us-ascii?Q?dtW397ViLAcXOfowE8RW2187uOMnrNerWCS7TVvLgmOQuF4oom+2i+4dA25w?= =?us-ascii?Q?TuE17NpWe7VsXuf47ciaXnMRQxIPyWPpkSMK4PFsf+6+/vcBp8L0oW3+6T7D?= =?us-ascii?Q?47u5X4HSWMxbe4hF/Re7ILSneqxyKimR75Vzld+CaTl+qphKYPMnA5VcdhK5?= =?us-ascii?Q?ulvZJ/e1Z3afaSqf04B+J+gPrPS/qlZ1dZbZ7oRG/rkaOTiT20ISAVqRfJUp?= =?us-ascii?Q?7aaobMUk6HMwmmU2yz1vRD+cD4TRBc6/AR4Lt+u+J0srBwubE4yYtn3FMKAk?= =?us-ascii?Q?DyAjA3kwp3VNT+yqFOemf2ixRm2zE2aagAUEa7TOz12NQ90NX3Gp12DlRadG?= =?us-ascii?Q?mQa/dRiyONacY75fafKnpvZq4B47+lxXn6xmhzxCcjicWK+OCPPqsabJA4DZ?= =?us-ascii?Q?QGGrJVAIiax9EKAXyE2NymVS/6cHA93ZdBLd7v+Cy51LijQ8f5kIzwq80oI5?= =?us-ascii?Q?wCCjmbyJvr2ietBazd7cz63InuK2RsINNSauVQp7ipu6g0iO3LLRwSj33xJ2?= =?us-ascii?Q?LGqkFItt0C647GeshKmaZlzjSEiYg/tGEA5B88pTg60ngGwn9hpaubUrvCf5?= =?us-ascii?Q?ZuNitgQXfp3wDBDON+4Ez6uCumjVLCTmvt6RdwB9J0+Pp2b/AKO0nKqZ5gJL?= =?us-ascii?Q?LwI3CieBDKrpa0Im1NJxpmOIkUwwkyoi0turh+9uwP/GJ9xO9gRwcm5QlNzL?= =?us-ascii?Q?5s1p6Sb1VMAfbkJV6vc4LIvkdxeeQFIhQ+p6lh7O1lWZMDT/oqKxZ+VW+wjn?= =?us-ascii?Q?9Y8VTWEsDpixxXhSqUvldAdVpGJbPmkX+k0J+n2xhCXFGiwaG18MtqhnfgDL?= =?us-ascii?Q?dhEeKWqF1Aj6GMyZjbBIDiK1HYqN1+6I172+Jqo44YREiQfTPlBKPrLhT3o3?= =?us-ascii?Q?Mg=3D=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: =?us-ascii?Q?EbLDpwN3JTHG0p61fJmq9AZkZFk+X3Vu0zBAf4lhxlpGSAKLr7CbPFBdNUNe?= =?us-ascii?Q?rbSY8KjgV4nB2fVAkCQ9AVo1qsWTjtucUa0BKaMWlBqtqnNxZm3tuQcOEtX3?= =?us-ascii?Q?QDGlUM9M89p5RRkonSRdbsce/qhfLyVnYZ10B2kb/UL94UL44mHiN1LuAE2Z?= =?us-ascii?Q?5dk7B+A+cxK05Jojt7S46Aa0cSxrg360DJuH+MO1g2P12qxpWT2OAyZfxhXX?= =?us-ascii?Q?R4AdKadNOYcuACh7L63JOq9+YsdPUzDauAKMFbjR9BJDk6QNnTLPw4tA7s8S?= =?us-ascii?Q?e9NaAGB3rQw3xbbH8L8RKZc/TUORo1/lzJSAKpw4emt8MN1ATOGJD2IburJQ?= =?us-ascii?Q?30WlseM/a7PZYBx8bOEkZobd6M3GqK80Gi/R0V/lXqXfhs0aqpEackDX0XfH?= =?us-ascii?Q?kWoqxHLQCjJulKWNwKb7dRvKgMCicOjDy/12uHRRR+UxmOjo6PJ1rWPfAzHm?= =?us-ascii?Q?b9Q1fqSnRBI3nLPAzl2tLlVwrT/IptSrFmBu4JTrFglDlHz2zbtmnsRIua2h?= =?us-ascii?Q?Lt1Kb8XyTDx8J7eWl9Ea7DfOIHfAksKA/v3DF7OFgI/MSzfIC+b/zgXYRhyw?= =?us-ascii?Q?UbvWTW3JUsIKl3uTWR3mjI2smc+tBDrVVBkiEmP6zXcgLOCs7bfKHu2INMY9?= =?us-ascii?Q?hJqGGj66Di+B7ol2GZwor+UfayNU2duyp7cL+NPwqqXGoaVbzaDbvoherAMf?= =?us-ascii?Q?/QnPm/Xo0UGk4ESKTaX1OznZjIC8o6UKundMXtGUhSsE0Sviii+zscMcKLlj?= =?us-ascii?Q?WNQWkw3p5HiFj3tmykGe5K4qVSNnjK5WU6dO/RHeSnWViPU79ChBvkthsA53?= =?us-ascii?Q?dU6f36eQYZDiPByENn45tDBblDYJZXN8+xzHv/cZ5vi+CNH4Dw6JhpyT2Sox?= =?us-ascii?Q?5rvBp96WoeuAkNHWlMhsw+569iMENcoS1K+698hvQ/omFEaz8Mv9MV/NZYQ5?= =?us-ascii?Q?LcMCUuKBbC6wcgkSlWaP2g=3D=3D?= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 45d5221a-4acd-423d-e990-08db42703053 X-MS-Exchange-CrossTenant-AuthSource: SN6PR10MB3022.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 Apr 2023 13:56:21.8625 (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: WD3iVoEjU+kg3OFzR5BRinRqlKJ8d6K/FIPtj3QBPtN597J+6hkHTmVBYTeg136+TPBDaKMfN5x62dPSWOY7ng== X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA1PR10MB7540 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.254,Aquarius:18.0.942,Hydra:6.0.573,FMLib:17.11.170.22 definitions=2023-04-21_06,2023-04-21_01,2023-02-09_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 mlxlogscore=999 adultscore=0 spamscore=0 malwarescore=0 suspectscore=0 mlxscore=0 phishscore=0 bulkscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2303200000 definitions=main-2304210121 X-Proofpoint-GUID: aqNtFYBhF03XyZUJNARd2tSoJb7B5tmP X-Proofpoint-ORIG-GUID: aqNtFYBhF03XyZUJNARd2tSoJb7B5tmP Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" Stop using maple state min/max for the range by passing through pointers for those values. This will allow the maple state to be reused without resetting. Also add some logic to fail out early on searching with invalid arguments. This also fixes the currently unused mtree_alloc_range() and mtree_alloc_rrange() functions validation of limits to work with a window size of 1. Fixes: 54a611b60590 ("Maple Tree: add new data structure") Signed-off-by: Liam R. Howlett --- lib/maple_tree.c | 41 +++++++++++++++++++++++------------------ 1 file changed, 23 insertions(+), 18 deletions(-) diff --git a/lib/maple_tree.c b/lib/maple_tree.c index 4df6a0ce1c1b6..cf4f6cdcaad38 100644 --- a/lib/maple_tree.c +++ b/lib/maple_tree.c @@ -4938,7 +4938,8 @@ static inline void *mas_prev_entry(struct ma_state *m= as, unsigned long min) * Return: True if found in a leaf, false otherwise. * */ -static bool mas_rev_awalk(struct ma_state *mas, unsigned long size) +static bool mas_rev_awalk(struct ma_state *mas, unsigned long size, + unsigned long *gap_min, unsigned long *gap_max) { enum maple_type type =3D mte_node_type(mas->node); struct maple_node *node =3D mas_mn(mas); @@ -5003,8 +5004,8 @@ static bool mas_rev_awalk(struct ma_state *mas, unsig= ned long size) =20 if (unlikely(ma_is_leaf(type))) { mas->offset =3D offset; - mas->min =3D min; - mas->max =3D min + gap - 1; + *gap_min =3D min; + *gap_max =3D min + gap - 1; return true; } =20 @@ -5280,6 +5281,12 @@ int mas_empty_area(struct ma_state *mas, unsigned lo= ng min, unsigned long *pivots; enum maple_type mt; =20 + if (min > max) + return -EINVAL; + + if (size =3D=3D 0 || max - min < size - 1) + return -EINVAL; + if (mas_is_start(mas)) mas_start(mas); else if (mas->offset >=3D 2) @@ -5334,6 +5341,12 @@ int mas_empty_area_rev(struct ma_state *mas, unsigne= d long min, { struct maple_enode *last =3D mas->node; =20 + if (min > max) + return -EINVAL; + + if (size =3D=3D 0 || max - min < size - 1) + return -EINVAL; + if (mas_is_start(mas)) { mas_start(mas); mas->offset =3D mas_data_end(mas); @@ -5353,7 +5366,7 @@ int mas_empty_area_rev(struct ma_state *mas, unsigned= long min, mas->index =3D min; mas->last =3D max; =20 - while (!mas_rev_awalk(mas, size)) { + while (!mas_rev_awalk(mas, size, &min, &max)) { if (last =3D=3D mas->node) { if (!mas_rewind_node(mas)) return -EBUSY; @@ -5368,17 +5381,9 @@ int mas_empty_area_rev(struct ma_state *mas, unsigne= d long min, if (unlikely(mas->offset =3D=3D MAPLE_NODE_SLOTS)) return -EBUSY; =20 - /* - * mas_rev_awalk() has set mas->min and mas->max to the gap values. If - * the maximum is outside the window we are searching, then use the last - * location in the search. - * mas->max and mas->min is the range of the gap. - * mas->index and mas->last are currently set to the search range. - */ - /* Trim the upper limit to the max. */ - if (mas->max <=3D mas->last) - mas->last =3D mas->max; + if (max < mas->last) + mas->last =3D max; =20 mas->index =3D mas->last - size + 1; return 0; @@ -6360,7 +6365,7 @@ int mtree_alloc_range(struct maple_tree *mt, unsigned= long *startp, { int ret =3D 0; =20 - MA_STATE(mas, mt, min, max - size); + MA_STATE(mas, mt, min, min); if (!mt_is_alloc(mt)) return -EINVAL; =20 @@ -6380,7 +6385,7 @@ int mtree_alloc_range(struct maple_tree *mt, unsigned= long *startp, retry: mas.offset =3D 0; mas.index =3D min; - mas.last =3D max - size; + mas.last =3D max - size + 1; ret =3D mas_alloc(&mas, entry, size, startp); if (mas_nomem(&mas, gfp)) goto retry; @@ -6396,14 +6401,14 @@ int mtree_alloc_rrange(struct maple_tree *mt, unsig= ned long *startp, { int ret =3D 0; =20 - MA_STATE(mas, mt, min, max - size); + MA_STATE(mas, mt, min, max - size + 1); if (!mt_is_alloc(mt)) return -EINVAL; =20 if (WARN_ON_ONCE(mt_is_reserved(entry))) return -EINVAL; =20 - if (min >=3D max) + if (min > max) return -EINVAL; =20 if (max < size - 1) --=20 2.39.2 From nobody Wed Dec 17 06:31:37 2025 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 05C0DC77B76 for ; Fri, 21 Apr 2023 13:56:56 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232282AbjDUN4y (ORCPT ); Fri, 21 Apr 2023 09:56:54 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:38340 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230477AbjDUN4w (ORCPT ); Fri, 21 Apr 2023 09:56:52 -0400 Received: from mx0a-00069f02.pphosted.com (mx0a-00069f02.pphosted.com [205.220.165.32]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 5E38A3590 for ; Fri, 21 Apr 2023 06:56:51 -0700 (PDT) Received: from pps.filterd (m0333521.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 33LCYxKR025679; Fri, 21 Apr 2023 13:56:27 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : content-transfer-encoding : content-type : mime-version; s=corp-2023-03-30; bh=vn69hPZDmzF2R7mLcMZFVIO9gowx2wKB7i0XJROaxts=; b=IVBst64ubvb0qXSVMA65pC+3KfOMmpJemD7Dqfr8Ii9vCWDrMhjzb9immkyca+LeGx6n NwuYhJBoJXVRLEZQBhLX+836fC6dRV98uldEp90wW4obwdN0mJh7cnT+zSWnSioM344O d+cMbX64PqvstV64q6Mg2NjJGbfflf3lIh3G0lubMUtUtB7t0cQax8BUgrvR6keR5SuD NrnEzZYJjWGl9IOEeHcwRjNoompheKhrERhiyGRp1M+tNrIcKAaZOfFH8ZoBptkZqEso kgnxSpgyVtIsUXRH10Ro1eWAX7vHaqwt5hhaZOBkzKm9OmzR8HVyEp+TFH7NyPUnbTOR Sw== Received: from iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta01.appoci.oracle.com [130.35.100.223]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3pyjucdec3-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 21 Apr 2023 13:56:27 +0000 Received: from pps.filterd (iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (8.17.1.19/8.17.1.19) with ESMTP id 33LD7ndq037117; Fri, 21 Apr 2023 13:56:25 GMT Received: from nam10-bn7-obe.outbound.protection.outlook.com (mail-bn7nam10lp2106.outbound.protection.outlook.com [104.47.70.106]) by iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 3pyjcfpwf4-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 21 Apr 2023 13:56:25 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Y8trcAMbeOSyCoH9nf2bWoxnO0CVtPstuxgbkqsBfVMkm0DATdFV6XPUvzogiYVL3JJfGldZ5FK7590UXM09KIqKfTYhgV2M3tkv3RbV6J458z3OyG+vuUkHNKrjWrxCoNlufkzqe7vyjfB/SBukBB1zAxycEafKr2bFnmMisDIlV6qNrFsgg0YSY8W+h8gIA74xiG/0gU9u9t0aqswXqSQNyfjDpRED0GcUPWwffuKlxV6FZ7MEJAbrbdIOCnFn++xA/dbyYflPhOBiO4e/zHXyjU7UaOrO84JJgNfTrmXGpYXwGOqk6KxZEqcMd80ci3WBEDSypQwUwqF+Wz373Q== 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=vn69hPZDmzF2R7mLcMZFVIO9gowx2wKB7i0XJROaxts=; b=Vu6B/2NfTCBxX9J3KPnEedFmtD2esadzZQr2amuZvBrj/TMmOgHCWqAVqFdTdT9dJ3Y/PC2d3Dcea+qT1zngeCcyF2NB55aZueXS5gwMK4mBKt04sXyUKIsMSz879nvqrWBZHCwbIfcR1NCmU6Bmu9ebNU9bsjXswliOfm9F7qW5J7ubHMEwnfy4pltMxYjEt8mG6cKErhcsREUxaZN0bSwBUvaNn9lK/4LmQ2gfBDW2UXr8fOk5Imefgf0LfILQmqY29CBzOchQDe9af8zXOZtb94JEY8jXGQD5LNCcaoW+iqwx0Mx3ZtZh/Un/vs4U3yr0vJ8yd/FI5m1J2pfTFQ== 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=vn69hPZDmzF2R7mLcMZFVIO9gowx2wKB7i0XJROaxts=; b=JIxvqIl3LRVGZIHWAf+hb5ktZkDOjnIalq25UeMEJI+k0vqhhbRVcRTETbzXSJNAoqN4eOVWf1hDlzX20ibqcJFTaC0HG960I8rkOkhlcBx1FNy0MxZ+Dy2WIBwBuammkyQxI9NeInMv5Xv1Rf/eKuvOWIDOFKQVejKU8Smy4u8= Received: from SN6PR10MB3022.namprd10.prod.outlook.com (2603:10b6:805:d8::25) by IA1PR10MB7540.namprd10.prod.outlook.com (2603:10b6:208:445::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6319.22; Fri, 21 Apr 2023 13:56:24 +0000 Received: from SN6PR10MB3022.namprd10.prod.outlook.com ([fe80::8bb9:2bb7:3930:b5da]) by SN6PR10MB3022.namprd10.prod.outlook.com ([fe80::8bb9:2bb7:3930:b5da%7]) with mapi id 15.20.6319.022; Fri, 21 Apr 2023 13:56:24 +0000 From: "Liam R. Howlett" To: Andrew Morton Cc: linux-kernel@vger.kernel.org, linux-mm@kvack.org, maple-tree@lists.infradead.org, Rick Edgecombe , Peng Zhang , "Liam R. Howlett" Subject: [PATCH v3 2/4] maple_tree: Update mtree_alloc_rrange() and mtree_alloc_range() testing Date: Fri, 21 Apr 2023 09:55:57 -0400 Message-Id: <20230421135559.2163923-3-Liam.Howlett@oracle.com> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20230421135559.2163923-1-Liam.Howlett@oracle.com> References: <20230421135559.2163923-1-Liam.Howlett@oracle.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: YT4PR01CA0191.CANPRD01.PROD.OUTLOOK.COM (2603:10b6:b01:110::24) To SN6PR10MB3022.namprd10.prod.outlook.com (2603:10b6:805:d8::25) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SN6PR10MB3022:EE_|IA1PR10MB7540:EE_ X-MS-Office365-Filtering-Correlation-Id: fc1f46a2-448c-4e7b-bf7c-08db427031b4 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: vDtI5XRIu29BomPVUwa14ZP84DPS4N+XPsC2EFtXXABc9y5QYtxR8AOEqbZY+yQDnk3a80rJ9xuK625Nt77NTp6SWbyJF2YeifqXiewgk3ys/XwoWMhseZFuLGFNglliHqDNdtk4oj87nB6uxfk66ovo/RLO6DCrE6W6dAc+s15uysz7R4Qc6c8JRoG88B3g0w/qBK/Kpi2tU0QmpQCTa3f8mSFGskqf16YjIb88vNre56lkviV5WUlGpmPQiYhIzOXv9zAtG7G1mllmdWNZTlrckVOnMBjadqhzVwswMU/IOeDhnvBnSM+46W2e4ywbpQ8e+9e9/PBg3NFnOja/LyxBEyB/TLZWCsb5Tg4q37oBvsnlqikYt36/mx44OzJb36cKJKU/pB5s87VQA3WWkjRCWaJ2A7rKvjAnTvs3yxc3AxuYkIpetfTSo/zOWRKj/ZIwUFUIGrogI4ut9ofa3oMIlEEyDgEtDoEiGorHmMEvFMR2RnXUHTASG1pA9SIVrY8oRZxaU0HBSoX+JPenv2js5o74jYdxFAavRVK3DIM8Gdkmbx8+ZE3U3f+EInVm 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:(13230028)(396003)(366004)(39860400002)(376002)(346002)(136003)(451199021)(8676002)(8936002)(38100700002)(6916009)(4326008)(66556008)(66946007)(66476007)(41300700001)(316002)(15650500001)(2906002)(5660300002)(186003)(107886003)(86362001)(1076003)(6506007)(26005)(6512007)(36756003)(83380400001)(2616005)(54906003)(6666004)(478600001)(6486002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?eo1dhnIB/FUlwrOsoXsyATgPv818NkFPcwAN+eGqBQMw28HnKWW7o9U/p8mI?= =?us-ascii?Q?Dtxc/neAiAlSom/sfjz49xaxChWUlrrtIISMcBLkv4B1rrwGTuyq50nCoR/A?= =?us-ascii?Q?qB1jxC2+Y+dveBL/C1wMy024MSq9orAuWQLht2E9r9uZLWGiKd0Xmbfffk24?= =?us-ascii?Q?ktkRCZOHry4pauIl79tP8LHDgP8n4hmpuJ7RfP4b8B1TegVOYTp5fJqKpVkQ?= =?us-ascii?Q?Nv0YJO+BzWMI96fJptOv4VInW/o/7xVDo91FznzGzs/Tw6IfJaGru3PJaUo7?= =?us-ascii?Q?UyGLoBCOPL6cJGndoH54Ff0dBOsVht5QvyzyVDUFumUK2UGnhWAzPATT86/2?= =?us-ascii?Q?/iq2H6ta4YNvF0QGXk/sjD4SFjzPE1IsjMsZu6e3sJdDx1yX8qjvny1ZidAI?= =?us-ascii?Q?HJHR8yvzYQmNR6sMveGe1Uh6VhzY4T7VtO+HPJrqwBT8JhaxUJZkSpLb9Uq0?= =?us-ascii?Q?seFsgNiOGA0EWO0a/XlUct+5v13tS0ognw6OEjjsCsGlZdN3ySbrOyQiPB+2?= =?us-ascii?Q?NxakkSydwcUUsluhzdWR3WUJtHza9P2WwLXMzF3/iiUtm4uamZ2Axh/06u0f?= =?us-ascii?Q?YpXC501kYT+vSu2uj/AozrvyzeCN2iE3vzqJgOnMoDAfOHyxO6XPToHCSrwQ?= =?us-ascii?Q?d+OGgduHhjwzKK4k7a0TWjjC0MLmB78JFOEcgkCpasyFeztEXJK15wLDHwlT?= =?us-ascii?Q?r8qEG5Cz5WFG0x12BZVRNXef/YCHNMU+zx8tr9kYPvgd8V0N5Qw+dtMABT/O?= =?us-ascii?Q?HMfcas8P6Bysyxdeg9Ijg+As/ctbQqMBJAPh7f6eknrfuxvLsNt4Evxd0AKl?= =?us-ascii?Q?dkM+g/iF0Ia5J0yGz8PRqaBoNOyWyvEAFBepdEDwDQvyYSCCeg7da9KM8NxI?= =?us-ascii?Q?GtXD4XJSOgCke3QQSiGt4Hqzf+j4nMQ6Gk6Aug6GaPom2eRtlBDvqsP+YV40?= =?us-ascii?Q?wb+JtqSbHVi5f8If9qandij00njWSR39wol0TUC0VJ2qKo/OgJ5HNe2flLd/?= =?us-ascii?Q?S/bj31DiX/R0uYfjvz8IviCyhUoJl7UGyBmLw5UW+66RP/6JUXj2lHPsaVcH?= =?us-ascii?Q?hGWwSrDQARaYCp6j9lb8srLf5D6Bw7MFgkVNgXG5QbzbFhXA4PPqNq7HwgKy?= =?us-ascii?Q?o8U0a4++C7ZDnO5f8ptXtlUDwBRo06SsOf9WQX5QVWaE+ldGwYLFajX5dn1f?= =?us-ascii?Q?c+1rlU032Nh1hUwmuaFOUxvcc6yKuDJJylxv4Zo0JeY9E2UELAmDWNhVCQxd?= =?us-ascii?Q?o3Me2VelV0mzMXW0ZHRYLwUYLMFVSGt6J5f7MHxm5wO6BtjVLHolSLNWtqFp?= =?us-ascii?Q?3VrjDciBU9IPoJI7GkWIlZP1NW6iD2tWTGmnimBtAaU0ni79er+3qiOWK96E?= =?us-ascii?Q?J4/jkfEzr+5Sv0HyLM9ajtjwZp1MOISRfmLwuN6C+tHM0HJZye44TCK8QgPN?= =?us-ascii?Q?Ujtk7B5e3DoXQGhkqm3TmcQc+QmPNG0Wv+2Be7pOekJqmuAR1Yg6XOpAo4S1?= =?us-ascii?Q?w1dCJELZf/DGLYa1/j1B+hsVyfxyYsewzzmpqETOJF6IyRawCcl/wh1378+o?= =?us-ascii?Q?FK43WLSpj3q0zB6MW/OdfUh4WdY/9Brcvl9BJx8d3IdcTGRxOg1MJlwU9jS/?= =?us-ascii?Q?Ng=3D=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: =?us-ascii?Q?oCzfD3rLTHMtpn4oKlVF1+jDdh4Y5yHtHIoqjIXh+7yMZ3ZU8wjGMAJqAGTu?= =?us-ascii?Q?3yh251hhThnJC+ZLG/Sx+eZlc21t3r2ZfgDP3a6MNXt/nHSu6HImAkGRNGX2?= =?us-ascii?Q?9l2gN+K455OsOZyAbi2YNOt6ZXQLTEyFXgJAUE5va+F459z4JtM/bBSnyYa7?= =?us-ascii?Q?ENsifQ7iHUrw2uVpllQB4udLlI6khgjjeczHQbXcpa9XSxwxx0FnDYFgO0VF?= =?us-ascii?Q?133zMCXSySat4HbpScS24NpFeENIRJanlqJvv9F3kJnrp068HkymV+bzkijM?= =?us-ascii?Q?wTeea75gucxoqXh8ay64HyN+7Z5ft0xisnWhP/ZXeak/ZE+dLmi0fLDAZWtB?= =?us-ascii?Q?Yj7I/sgSBJN7KvSn5sgNliGURud8C+9p4u3TtI31Se9M2cFNmTRRw2OTbq7u?= =?us-ascii?Q?MFUVeYlimd+T0NfJ2Wu2OjcAB9yfMdu0nzZhMqAcnoK+YfhGl73k/9KQdzi3?= =?us-ascii?Q?ztI/VKqul6sb5dYXheMUIUYsOT4OjAwpaZGAJ6mP51+THEHcxztkkDi1Q2L/?= =?us-ascii?Q?OgWfrXmSI7U9ak/jXIQnon6BSbwL3fvOkmLdScvAlj1+NYoGSJU6RhMc46nF?= =?us-ascii?Q?FlIYDMd0hNjrpcZtzsvNKY1cIys6uGTuYODLabRmnkmMCmRhGMZiJuT6mecM?= =?us-ascii?Q?5ADgxwYc/AzK4DAYxMj6/2u54F/A6sQVQZbdugn9/ax/nGzbCEZ6t25M8biv?= =?us-ascii?Q?bPsSGqCWgdjUZYn0mpqewfHYfjknnzDt2PYp6czT++bUKZKe1s9KNE2ocwGl?= =?us-ascii?Q?UMxGQeCM7sBL8sm3GdtQs7r82/wmw15waf5D+bMPoYeeNDsGHTfuFNqC4gAC?= =?us-ascii?Q?VCHN675/ZCxZGcnp4tNLlgvWk1u05TAOPGexoJNad3yL561/LP/B3uWkjK0N?= =?us-ascii?Q?qA0GrlLDxLpG1za86VWUA56+zS/DOLLPs+zhKnr1Jkj5bovY+jdv6vHHtWth?= =?us-ascii?Q?m4kvGuOUffknoJjWHcDgtg=3D=3D?= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: fc1f46a2-448c-4e7b-bf7c-08db427031b4 X-MS-Exchange-CrossTenant-AuthSource: SN6PR10MB3022.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 Apr 2023 13:56:24.1825 (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: P+7t1I/X5GdLDY0OwZXJR+2lNHro0xkyv/2VXg6av9XiTke3kH8ABc6Ngxz+AZVmUR/80UZNk4heW6isWqofcw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA1PR10MB7540 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.254,Aquarius:18.0.942,Hydra:6.0.573,FMLib:17.11.170.22 definitions=2023-04-21_06,2023-04-21_01,2023-02-09_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 spamscore=0 suspectscore=0 bulkscore=0 mlxscore=0 mlxlogscore=999 adultscore=0 phishscore=0 malwarescore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2303200000 definitions=main-2304210121 X-Proofpoint-GUID: aTtSmy5RWcPk7whHs5ncTDst9Eehnxrk X-Proofpoint-ORIG-GUID: aTtSmy5RWcPk7whHs5ncTDst9Eehnxrk Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" The previous changes to the gap searching made this testing fail. Unfortunately, there was not a safe update order, so fix the testing now. Fixes: e15e06a83923 ("lib/test_maple_tree: add testing for maple tree") Signed-off-by: Liam R. Howlett --- lib/test_maple_tree.c | 27 ++++++++++++++++++++------- 1 file changed, 20 insertions(+), 7 deletions(-) diff --git a/lib/test_maple_tree.c b/lib/test_maple_tree.c index f1db333270e9f..4d85d04b26f8d 100644 --- a/lib/test_maple_tree.c +++ b/lib/test_maple_tree.c @@ -102,7 +102,7 @@ static noinline void check_mtree_alloc_rrange(struct ma= ple_tree *mt, unsigned long result =3D expected + 1; int ret; =20 - ret =3D mtree_alloc_rrange(mt, &result, ptr, size, start, end - 1, + ret =3D mtree_alloc_rrange(mt, &result, ptr, size, start, end, GFP_KERNEL); MT_BUG_ON(mt, ret !=3D eret); if (ret) @@ -680,7 +680,7 @@ static noinline void check_alloc_rev_range(struct maple= _tree *mt) 0, /* Return value success. */ =20 0x0, /* Min */ - 0x565234AF1 << 12, /* Max */ + 0x565234AF0 << 12, /* Max */ 0x3000, /* Size */ 0x565234AEE << 12, /* max - 3. */ 0, /* Return value success. */ @@ -692,14 +692,14 @@ static noinline void check_alloc_rev_range(struct map= le_tree *mt) 0, /* Return value success. */ =20 0x0, /* Min */ - 0x7F36D510A << 12, /* Max */ + 0x7F36D5109 << 12, /* Max */ 0x4000, /* Size */ 0x7F36D5106 << 12, /* First rev hole of size 0x4000 */ 0, /* Return value success. */ =20 /* Ascend test. */ 0x0, - 34148798629 << 12, + 34148798628 << 12, 19 << 12, 34148797418 << 12, 0x0, @@ -711,6 +711,12 @@ static noinline void check_alloc_rev_range(struct mapl= e_tree *mt) 0x0, -EBUSY, =20 + /* Single space test. */ + 34148798725 << 12, + 34148798725 << 12, + 1 << 12, + 34148798725 << 12, + 0, }; =20 int i, range_count =3D ARRAY_SIZE(range); @@ -759,9 +765,9 @@ static noinline void check_alloc_rev_range(struct maple= _tree *mt) mas_unlock(&mas); for (i =3D 0; i < req_range_count; i +=3D 5) { #if DEBUG_REV_RANGE - pr_debug("\tReverse request between %lu-%lu size %lu, should get %lu\n", - req_range[i] >> 12, - (req_range[i + 1] >> 12) - 1, + pr_debug("\tReverse request %d between %lu-%lu size %lu, should get %lu\= n", + i, req_range[i] >> 12, + (req_range[i + 1] >> 12), req_range[i+2] >> 12, req_range[i+3] >> 12); #endif @@ -880,6 +886,13 @@ static noinline void check_alloc_range(struct maple_tr= ee *mt) 4503599618982063UL << 12, /* Size */ 34359052178 << 12, /* Expected location */ -EBUSY, /* Return failure. */ + + /* Test a single entry */ + 34148798648 << 12, /* Min */ + 34148798648 << 12, /* Max */ + 4096, /* Size of 1 */ + 34148798648 << 12, /* Location is the same as min/max */ + 0, /* Success */ }; int i, range_count =3D ARRAY_SIZE(range); int req_range_count =3D ARRAY_SIZE(req_range); --=20 2.39.2 From nobody Wed Dec 17 06:31:37 2025 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 568D4C7618E for ; Fri, 21 Apr 2023 13:58:34 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232012AbjDUN6C (ORCPT ); Fri, 21 Apr 2023 09:58:02 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:39760 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231183AbjDUN57 (ORCPT ); Fri, 21 Apr 2023 09:57:59 -0400 Received: from mx0a-00069f02.pphosted.com (mx0a-00069f02.pphosted.com [205.220.165.32]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id D08E412CA3 for ; Fri, 21 Apr 2023 06:57:22 -0700 (PDT) Received: from pps.filterd (m0246617.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 33LCYeTk014605; Fri, 21 Apr 2023 13:56:30 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : content-transfer-encoding : content-type : mime-version; s=corp-2023-03-30; bh=7TPHWbKml+7jE5nazbOtx+SnQImpE8T1NpsH1HJMmnA=; b=bDt4sMlwzk7CyWHXsADIzSMwsdSwXdWRj3uGCWiAL+gVtbE3uYUatUOLwJ09ZuOCHOBe gKXsbqv699H6Bg4hyRKhANmpMr9R0Xb2Frt1cbkFLHWOW+pbaNOh9BR9bJQoPo6xtBqg g0lnG1FNXrmh654liOOo++Na+DhtPjMfWiBRGxk3TdGZ6R8DzMxnMVdnqdE0x/NH6YcX +DG+r99Q8UuO//BD2SCj9jTgGa8V1BiZBjbqFflf55KNc4bxN2xlnGq4IYHSM+lclo8g YRviS6U257bfc1HN9XlRAYPJKqVMy4VWJrjNuK8o2XADx2YzTaCUemRbDt1uEmmAKo5z bA== Received: from iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta01.appoci.oracle.com [130.35.100.223]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3pymfuna92-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 21 Apr 2023 13:56:30 +0000 Received: from pps.filterd (iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (8.17.1.19/8.17.1.19) with ESMTP id 33LDDfCx037106; Fri, 21 Apr 2023 13:56:28 GMT Received: from nam02-sn1-obe.outbound.protection.outlook.com (mail-sn1nam02lp2041.outbound.protection.outlook.com [104.47.57.41]) by iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 3pyjcfpwgn-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 21 Apr 2023 13:56:28 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=HaHgisfzmOf7X4t7WaOxVM8LaeeLUMkKMfOOgOSsrkOaHXOPBZZfhgf5iexYfzwl7XmUWE87dQKIyQao8e8x4wMBUiYPWDFZ9VHdObxZUKqQR9xlvJ8igKTKgzjsW7qrIzowkc3aF1DmdEM7s6GD7mL+40A0ixsq66DoA38kd2FvL0Duc9xcMNu/0a7IfJ6DougWeoc+g7Muk8r4FTrFfJpYg9yICn4QRMKj0jKk3TEjaClaWk5Nc7BNOkKWcs9KHq/d1aQ71zZYDJcaX45mO8qkmTVfr8gxzDd69jsoM8knTiqmZhArDoa05tSSFU5lz6/QCtbRJCbeT8PcXu+d3g== 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=7TPHWbKml+7jE5nazbOtx+SnQImpE8T1NpsH1HJMmnA=; b=DoLY9L1Lg8Pp+hLpRV8Kzh2+1McvIRnGDqAEm0Dp1GJSceSWsw+YebqLVkq64HMKeKKHqB391S7A0/oseKycNsSWz+pQPTk53SFGEA5f8sBRv5XvKaBOzvKGB5eZlsOCSc8JovLz2HMmN55ojo7VDnveL0PrOE9fX0mW3oC/ez+uoPpQHZnKikuRUQKkIOXt7fv4rTjCkRn330FUIdPmP5yenMRp5SlcUf3ojzz4c+Lz3wCXPRaasdECB0AoXKoj2K1zzt7G8ZmQVvDz66fSLj1397YC7dzyziQ9LOrIKyyqqtD4WjqhZKz64NHAWKmTdGCeQpvMZ0f+swFLGaAYKw== 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=7TPHWbKml+7jE5nazbOtx+SnQImpE8T1NpsH1HJMmnA=; b=WzdfU3MQMM8yXRo2FMjDDfJwdjyQ60QYu7v/8qqnvYrqaUxhiuLxR1SuGbUZmdw+uc7S33+BTzTprY9Dl8kwu5QauyZTxrSxDKTCKHb0Wb09MvhhdVyk2e2DglGcyILp27ZQzAE82eVVfx3ddpMpS2HNlGSCSvalSxccOLqVRCs= Received: from SN6PR10MB3022.namprd10.prod.outlook.com (2603:10b6:805:d8::25) by IA1PR10MB7540.namprd10.prod.outlook.com (2603:10b6:208:445::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6319.22; Fri, 21 Apr 2023 13:56:26 +0000 Received: from SN6PR10MB3022.namprd10.prod.outlook.com ([fe80::8bb9:2bb7:3930:b5da]) by SN6PR10MB3022.namprd10.prod.outlook.com ([fe80::8bb9:2bb7:3930:b5da%7]) with mapi id 15.20.6319.022; Fri, 21 Apr 2023 13:56:26 +0000 From: "Liam R. Howlett" To: Andrew Morton Cc: linux-kernel@vger.kernel.org, linux-mm@kvack.org, maple-tree@lists.infradead.org, Rick Edgecombe , Peng Zhang , "Liam R. Howlett" Subject: [PATCH v3 3/4] maple_tree: Fix mas_empty_area() search Date: Fri, 21 Apr 2023 09:55:58 -0400 Message-Id: <20230421135559.2163923-4-Liam.Howlett@oracle.com> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20230421135559.2163923-1-Liam.Howlett@oracle.com> References: <20230421135559.2163923-1-Liam.Howlett@oracle.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: YT4PR01CA0458.CANPRD01.PROD.OUTLOOK.COM (2603:10b6:b01:d6::11) To SN6PR10MB3022.namprd10.prod.outlook.com (2603:10b6:805:d8::25) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SN6PR10MB3022:EE_|IA1PR10MB7540:EE_ X-MS-Office365-Filtering-Correlation-Id: 4a7e4c96-1e0d-4026-6c78-08db4270332d X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: XdahpS22DQUUyvP5taRaU6my1O2l6ezCs+xPa3wT7N64xS9NCzsiQ9/Z4vFetZp7PhhW1eieIKa637P36cAM7i40A5jWH/9LjUBQn0a3KxHq/V8BlVffv/hrtAE6YcweK/bldOtczST2lCUpzQnC3ndLPqm9++x747BonoqwmdjXE73NFTstRyvxmkP1xkx/NhKgqoqtQGdK4996RWPInABWve9JGFzI4YkBG80Jfuh0yjBqsygpEZ3L5b16osvVgGb80MVV/eXZszC5BHDWO+qPJdnimWlKwSOzA2iTOhIpKEeQ1gckZNJLLQo1zs4Dfc+5TdslWbvSN+7M4DNMnMnQXA6e+aLJus6OSHR2SLQzE3aJVmkwt02kprlC/zLZsFBvBor1vKexN3d1LhqfE+SoUS4GxwT4vLb16UM7hkZCirVgQNBSvPLwxZU7eIh0KxJ5+vOLsQTCpRuUdEPNYkkV8w4GzINpuABsK112P6r5uMlRH3srZ3OhkiiQM8XoGxytXppH2cOvLWeVPNod5R038LcORjScO3R8rr4CRfEdv/GK0yQNLMG+662n7Wcv 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:(13230028)(396003)(366004)(39860400002)(376002)(346002)(136003)(451199021)(8676002)(8936002)(38100700002)(6916009)(4326008)(66556008)(66946007)(66476007)(41300700001)(316002)(2906002)(5660300002)(186003)(107886003)(86362001)(1076003)(6506007)(26005)(6512007)(36756003)(83380400001)(2616005)(54906003)(6666004)(478600001)(6486002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?Oi/mRNp0E+XVTGEBbmVkZjwzi0in6Mn4tY6QSJ/8W115AhnMmupYWcufiw1/?= =?us-ascii?Q?H1eyyUllIKuM7b+vM2xNdnMYMmb9GodXkInEWPZXB47WqUvpyehqpXbMhbMm?= =?us-ascii?Q?dyZza63O/u08gjHtIUH6wljndEbL1tjecqPc8LZmNIHh1POr9U7BKjHBM6Re?= =?us-ascii?Q?qnBReV3BzXHAmF1wJ+jbJ4D2Gfo2AdeGrUQPn9PqrQz+/CDG6b2qSwyjPs6i?= =?us-ascii?Q?zbQAj3qHGe0s2atSd+LOvgTsNxYuztWhcXLC0m9fEguugtyuC6mOyLL8fHwS?= =?us-ascii?Q?/jUDyCfmQ8XHGfx2Uxjb9/bnrlELHjx4znMsK/tqt1TKRBlDffse+YiMss4F?= =?us-ascii?Q?3bOzR0YXN8UvPoawGqR3Y8I1TzVZyd0HZC1HpXZYBusGR4UqCM2UBsZ1gYTq?= =?us-ascii?Q?YWSOei1RV6tUpgdBQv2QDSwY8+9kAXCupJ6iy6exmt3oIQ96fO5KeB7jglTB?= =?us-ascii?Q?CxCDPUrRBjMdfItUqMaVhsSLqnqv3opJBZ2kbRydg7ttDn+f7ObxbTdDt2RM?= =?us-ascii?Q?B08Dv/fifxTvJVQ1he5njc7VgcII5+7poO3Se7Vbq32PKSqllhbKia7HoEih?= =?us-ascii?Q?oyh2wlcM5zTz1hCKEbis6hQNpwhTvnF5xgKMYOx3zkc6Wu6DlupPA5hw+5EZ?= =?us-ascii?Q?Ttn3MRTBqqHxtuOpVT2LTxLAEMuxbq7eSOMNe1N22ngxIgIWOD24vtiT3Ky1?= =?us-ascii?Q?tzDfjvwu7i38LmqbWyiXb8g4SXF8elmpPyh3Xy5MQuRK/lxAFI/CMwoQsSMe?= =?us-ascii?Q?jsfM9UwIloi4Huc5TTrUeSkujSX+06WV5gSSS+xjvymHild0GwYIxxILcRMP?= =?us-ascii?Q?rrzCgEhOFCoG2bnGydHwiQOiMDyckvcyAxEqWBs2NFKyB+cOQ/zX8+9WO5NE?= =?us-ascii?Q?7/rKANENQgoAAMXgHh/sP5xGcVNAIqZJRfJ1MvBnD1gDxltg98zAAI2f03Gh?= =?us-ascii?Q?qoGce8Dv5UAVewgFbFraQ5z5m7CrvtzM0wE1Vy3J+sAA9UDqrFMjDzbiWcp3?= =?us-ascii?Q?J6cdMSQwIAbvM/qXJ0F/htlKn+LYvu6LOFaxiOBJCoUJ+VN7MRozDFChFkF/?= =?us-ascii?Q?8Ioj92virSzIOqpkerEndTJIVR/9Zk6A2IM2b/LjIXBZCzDKpMNXiF52//+N?= =?us-ascii?Q?plqFxQ/S2hQiR2iqVTGZGXb4rRN6nbLokuuxvb+PdyLMgjBtdOmDt991v3VC?= =?us-ascii?Q?FGTuHv45SAjVYuRNz+bGB36KtJbHpGdyjvb00lUY5n57ne83rZo3anXG+FdP?= =?us-ascii?Q?mpsGd4ydzTiIOreE3A5Z2KhOraqADHhenLGMJQhD9/I+MZF9BJHR9ADibi45?= =?us-ascii?Q?y0fmo/8CrHUtWaOGXZSWfyrddWVMBQc8jYJiekkFzwAk09tMOxEicVAmdoRi?= =?us-ascii?Q?4ItUYoBbwfGDKsxul2d7fpYvSE0qhb2LSRyVDLwF1taum+kzPK9CHXaR6NUS?= =?us-ascii?Q?6gCsGx00XwVjkmhkd4DjWZrwg9xXCErpT/hZb5XXsTy5hgX+QLJSvB3D7ymS?= =?us-ascii?Q?gRvdaSBNAI8SS+s9IRJsDN8iY/K+tMbWi9Ylqh9TYC4A42/N+yyOkoQKw7pg?= =?us-ascii?Q?GZlELbOI6uH7CzWjX0rWLJi+0Rxe5LUWd8UDZaRfGmO9fJNKLCnYyfMD4Jta?= =?us-ascii?Q?qg=3D=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: =?us-ascii?Q?YmVfvVisaWyf/owDnKvjANhB/A8tjaasayT5+d+ECuwSARqEKVXnZtiIx+v2?= =?us-ascii?Q?mdfSIKTgyTthAxlg7WY390Dwd5OXfzSXlOwAbEUTj2+udmCg6G/Uf3i9PcyQ?= =?us-ascii?Q?yOWW4jQbsgPY3MERReWx9x5IRwIkTKcLbY7kUCt5ePJBwymN25hPRytXQEFy?= =?us-ascii?Q?TIB9Q433YAWbIkX3AOIwjqF2FbPDV8LJUY8Nv+vA+q5aD0o4e7GLfJhD3i9z?= =?us-ascii?Q?hBRqthC/FkJvDx+Av6oXyIUvLni0Ao5EbiTzDdScTJpbTIZguhzLDpAMMR0L?= =?us-ascii?Q?sfo+KtW6Vz4Zuh/DVOuedguezn5wCIY+b7ULWHzPOVkX0lVWiVZ+rU70UNh/?= =?us-ascii?Q?dHXhvDbDNqLYe0dnIscL4oPFkmlFxyWH6LPMqFLIlzpD6jeg+CSWKtgags6o?= =?us-ascii?Q?yIh/IIsmzCbd4uXAJVUqrJyDI0Qq95elJOryz5rPTIjbvfg2C0KVPso9OQ1D?= =?us-ascii?Q?ETK7XPvAv+a0BvR7ElGZIm1FU/U2lbRv7Q1Ino12GzqQxuGGA9BlUBXXrThG?= =?us-ascii?Q?PlqzfcR1GtbYg/GWXL0dyIXMdmbidX2pdkT29lzNUqfrPVOjnF9zYb4/jwlU?= =?us-ascii?Q?MezPiW4tFYHhOYWnx7IO8ecomv/LWAoUNAKqJMucybKCSCn1ZfLulDFqQSxW?= =?us-ascii?Q?QbUAfFw+OQtRGNRkrqYTlRZ9WtNfAYdNMY0xfyzzNmMZhU98yM+EY9Pnec1L?= =?us-ascii?Q?JeVSTdbHgs9uW/LZ7DhHYiM1CxocB/yjzC7gG6pO2b9PVTPap0u2R+pE2tcn?= =?us-ascii?Q?m0/D2p5SwhmIl+RLhcEWTvRBszibCL5HZdY+wuBXnO0NEISh3zSO9T5R3HXS?= =?us-ascii?Q?T4bZPPy8RKiBHaTn4Z3ru0PQJtxubHytUc6y2iqQCrb2c/A6Us0woj6zgpY0?= =?us-ascii?Q?/Q9UTU1bCu9t+pz0rB7uii8tKPjU/Gw/2dOTv8P+LyHRKUYSie4Y7RLBEAI8?= =?us-ascii?Q?7FucC/9nR/0PFPIY8I2K/g=3D=3D?= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 4a7e4c96-1e0d-4026-6c78-08db4270332d X-MS-Exchange-CrossTenant-AuthSource: SN6PR10MB3022.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 Apr 2023 13:56:26.6427 (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: Bz9kVsCYohCBgtUmm2HoAieKwz5CaLA6l9ZVFNtOjVvIwI4T+3oM4C1xQ1wWwj265BIGjbNLcnm36/bY1wfuvA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA1PR10MB7540 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.254,Aquarius:18.0.942,Hydra:6.0.573,FMLib:17.11.170.22 definitions=2023-04-21_06,2023-04-21_01,2023-02-09_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 spamscore=0 suspectscore=0 bulkscore=0 mlxscore=0 mlxlogscore=999 adultscore=0 phishscore=0 malwarescore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2303200000 definitions=main-2304210121 X-Proofpoint-GUID: XAcGehv1Thb_F5yBuoLg8inbmZcWdz_i X-Proofpoint-ORIG-GUID: XAcGehv1Thb_F5yBuoLg8inbmZcWdz_i Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" The internal function of mas_awalk() was incorrectly skipping the last entry in a node, which could potentially be NULL. This is only a problem for the left-most node in the tree - otherwise that NULL would not exist. Fix mas_awalk() by using the metadata to obtain the end of the node for the loop and the logical pivot as apposed to the raw pivot value. Fixes: 54a611b60590 ("Maple Tree: add new data structure") Signed-off-by: Liam R. Howlett --- lib/maple_tree.c | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/lib/maple_tree.c b/lib/maple_tree.c index cf4f6cdcaad38..51910c74d4895 100644 --- a/lib/maple_tree.c +++ b/lib/maple_tree.c @@ -5029,10 +5029,10 @@ static inline bool mas_anode_descend(struct ma_stat= e *mas, unsigned long size) { enum maple_type type =3D mte_node_type(mas->node); unsigned long pivot, min, gap =3D 0; - unsigned char offset; - unsigned long *gaps; - unsigned long *pivots =3D ma_pivots(mas_mn(mas), type); - void __rcu **slots =3D ma_slots(mas_mn(mas), type); + unsigned char offset, data_end; + unsigned long *gaps, *pivots; + void __rcu **slots; + struct maple_node *node; bool found =3D false; =20 if (ma_is_dense(type)) { @@ -5040,13 +5040,15 @@ static inline bool mas_anode_descend(struct ma_stat= e *mas, unsigned long size) return true; } =20 - gaps =3D ma_gaps(mte_to_node(mas->node), type); + node =3D mas_mn(mas); + pivots =3D ma_pivots(node, type); + slots =3D ma_slots(node, type); + gaps =3D ma_gaps(node, type); offset =3D mas->offset; min =3D mas_safe_min(mas, pivots, offset); - for (; offset < mt_slots[type]; offset++) { - pivot =3D mas_safe_pivot(mas, pivots, offset, type); - if (offset && !pivot) - break; + data_end =3D ma_data_end(node, type, pivots, mas->max); + for (; offset <=3D data_end; offset++) { + pivot =3D mas_logical_pivot(mas, pivots, offset, type); =20 /* Not within lower bounds */ if (mas->index > pivot) --=20 2.39.2 From nobody Wed Dec 17 06:31:37 2025 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 E70CCC77B71 for ; Fri, 21 Apr 2023 13:57:11 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232552AbjDUN5K (ORCPT ); Fri, 21 Apr 2023 09:57:10 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:38380 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232383AbjDUN45 (ORCPT ); Fri, 21 Apr 2023 09:56:57 -0400 Received: from mx0b-00069f02.pphosted.com (mx0b-00069f02.pphosted.com [205.220.177.32]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id A83E5C17D for ; Fri, 21 Apr 2023 06:56:55 -0700 (PDT) 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 33LCYa7w020032; Fri, 21 Apr 2023 13:56:32 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : content-transfer-encoding : content-type : mime-version; s=corp-2023-03-30; bh=4dop6dLB8MYyf4g70fGvheMGvbOaLIxIGFq/jpCiG4o=; b=gNR78VCFUDTX0OeN69aV7mcYIYoQaRbwqP88Vz/EJr3t0qY1EmhE5uFiXm81YCHd7SKA hzVgkSXa4V3MRZcBz67ITiYic1z5GjhrQLkZ8jBdWe4CMsRA49noOtCSvJ5g9DNqOy5N bEwDhyvPEUe4VZYzy2PKaT8OIJlWdtdLUywWawXSpRJ3fLdbOzCrJxQMcRhUOzccG6a5 q7i50neae2P4TAs3qb37YpWdPRlESRZxkVceFv1hyGLX8oJvTbF8nwy4+TOFzzdCZrjg x29Djglga+LdZzSYlIbIFZLmVMuObNquo7NkfL4Y6ld3hUDyO3evIaKd2MoBIA7OaCV6 Zg== Received: from phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta01.appoci.oracle.com [138.1.114.2]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3q07694b6n-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 21 Apr 2023 13:56:32 +0000 Received: from pps.filterd (phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com [127.0.0.1]) by phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com (8.17.1.19/8.17.1.19) with ESMTP id 33LD1gQR011183; Fri, 21 Apr 2023 13:56:31 GMT Received: from nam10-dm6-obe.outbound.protection.outlook.com (mail-dm6nam10lp2105.outbound.protection.outlook.com [104.47.58.105]) by phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 3pyjc95yyv-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 21 Apr 2023 13:56:31 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=fHIQYEKdDQnxPTYruqI1J/WOUwJZhG6iKvD91W3Cblwvpkxi04UTQKFxtaJ2mKL9fd1hTNzdRfHYovl4lbfCkYGr8oBinrwqyPeraFv3qWCFOTLiYPqwcpPacl8E1mEb7rMu/SPX/n3ge0lMUw2/FHPaEwS3crw22IB2zHsNMxJq78M1eCR56SBlPZ/tTbfXLRmixYUhxlgHGOjyQK8dzeWRDCjEmjCE9L1RhAZDPPaECZHOZ8wC1mE1tVPvM6veA+/Lf7+w8x+qju2spK77Cs+z56Ba4HWj+aGcdRVBUE+BTJJaFEgLFk1nE1P9UyqIRdgGK6QmiDOuINNNeDNWlA== 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=4dop6dLB8MYyf4g70fGvheMGvbOaLIxIGFq/jpCiG4o=; b=EII0hIeePQQnbPWXwf9MZbE0eHMc12nBfffAtTJH/2edsUZ0Ijxsvn97b27bJWJ8JlDdzbe4yqC2uEq2mSU4y7xxWriYpMMv/xGEnY0vRI4ObYksluUNDpUBg02JhJ/CX/leURY1SwzPhe25QUbSmXvmqThfk88Mesy9VCsFfAyisAgYGZIZg/lVMNAGJ9h7cnh8M//mQ4f8x/ytmNDlqOxn1p374CwVxrKgdEu6jMelgrcB4D6egjY0P8vGabVxIu3lrRiRXaX64UAjNZXGkUhIzlVByajXL2s4wj76+4p83zvy+pV9zI8nXumKvX7IyX7bUZFtGzGn4aS95sobfA== 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=4dop6dLB8MYyf4g70fGvheMGvbOaLIxIGFq/jpCiG4o=; b=uGsxpXlyYASWhEySlxJPe276DbWwNG9OB684MPohBRtUPk4zrzjr2oXMSMpFftn+WIY/2jm73edY8B38581D0nIhWWhhbYxZWzIQi9sbIRTr5gCzNEv+d8O3sI4xn84E/sHXNekUXxb+U4+xfnqGjVURBocjbogbPo/eviRGXss= Received: from SN6PR10MB3022.namprd10.prod.outlook.com (2603:10b6:805:d8::25) by IA1PR10MB7540.namprd10.prod.outlook.com (2603:10b6:208:445::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6319.22; Fri, 21 Apr 2023 13:56:29 +0000 Received: from SN6PR10MB3022.namprd10.prod.outlook.com ([fe80::8bb9:2bb7:3930:b5da]) by SN6PR10MB3022.namprd10.prod.outlook.com ([fe80::8bb9:2bb7:3930:b5da%7]) with mapi id 15.20.6319.022; Fri, 21 Apr 2023 13:56:29 +0000 From: "Liam R. Howlett" To: Andrew Morton Cc: linux-kernel@vger.kernel.org, linux-mm@kvack.org, maple-tree@lists.infradead.org, Rick Edgecombe , Peng Zhang , "Liam R. Howlett" Subject: [PATCH v3 4/4] mm/mmap: Regression fix for unmapped_area{_topdown} Date: Fri, 21 Apr 2023 09:55:59 -0400 Message-Id: <20230421135559.2163923-5-Liam.Howlett@oracle.com> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20230421135559.2163923-1-Liam.Howlett@oracle.com> References: <20230421135559.2163923-1-Liam.Howlett@oracle.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: YT4PR01CA0027.CANPRD01.PROD.OUTLOOK.COM (2603:10b6:b01:fe::6) To SN6PR10MB3022.namprd10.prod.outlook.com (2603:10b6:805:d8::25) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SN6PR10MB3022:EE_|IA1PR10MB7540:EE_ X-MS-Office365-Filtering-Correlation-Id: 8d41b251-c89b-4664-8e3f-08db427034bb X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: SbelP2/xAScKNfyCJL/cTEHLD/j6FeLCPHZ1Vt5NOwnK6vgR8JK5DDXpjmj2yxrDm3tGMG2OQpvairm7ksUihCs/fyFYYz17iimbPEhdU9V80qrNXUkG46D/+jCdMFRJgYTnXShtv5y8gZ0ad/Uf/rK9oWMTf5JlHaYJqkKzg3H1eH0zOFYVcMvXoPAVnjWF/hNYHm3I/gepmL2MKSVBr7x45ltZ5rg1Fp5ix4uPDdqRTt/Ug4EkGqP1UOm1t3xisSyFEM3zgj2IJA5XRGI7aGjxMm+hSmPuJXP+aqem9AU41XYL3eQkoSDXmbY2qe/LLL4UxmuzLf804I7F5bzQ9kdHnt0ubOWGkraPPrFqksnwnIfsbWhfbTfeYYJ9m+uDJap/Nhg2R9aF0QAFQsLAj0rzhyzkfWrKI1FYjEHO+By+vStLFKq3W2xFJViuKf9kGj9vLz0ZGryYy5g7FZt4Mc0GT7UhfkoB2PhgsAoUphhGvrZQRM6PSYEJKOv+iop7NuaDGyY8ZZMOycdKVavlNhVoup5v6lkgEOtzId/J2APJZI6NLjYKJNdzvzRzIzfT 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:(13230028)(396003)(366004)(39860400002)(376002)(346002)(136003)(451199021)(8676002)(8936002)(38100700002)(6916009)(4326008)(66556008)(66946007)(66476007)(41300700001)(316002)(2906002)(5660300002)(186003)(107886003)(86362001)(1076003)(6506007)(26005)(6512007)(36756003)(83380400001)(2616005)(54906003)(6666004)(478600001)(6486002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?9xf2EEHAKkKcyFL6VvhCvXu3LIygxsivqawq/cpR9YL8kXWIDCNh4k3i7TT8?= =?us-ascii?Q?oYc8jyneOYlVUkQhWvnr09CjCY34Q5KV2A54Z6/NQ1bT6jt7EU/sXVCegAz9?= =?us-ascii?Q?cxNawGb7J85tHOI6yKhnqq0h1CGDllQNa7aWb5SW7WKTxQb24dhQwJZjIK4U?= =?us-ascii?Q?ZZWnaxnxTaucJvca9ULFEYt30OVMdLNeQ1iPlF1n+5xzwGwe9Pr5Wpzu8jxP?= =?us-ascii?Q?r7n6wqXLuhzCReUwOKWrfvx/y4i4lAP//v+a67ov95DMl6LQR5DQedPsmERN?= =?us-ascii?Q?dmMLmNEwKGX/bDTLQU+A+hL9R6vB5Q4mJm3Bgiv4GCLVXDqpakZyYAyeftFJ?= =?us-ascii?Q?vaxPt/HtapwsbOPtlIR3Y1XNFO8hSay1MTAUojrjXmulIeTcOYx0qcC2gDk1?= =?us-ascii?Q?2tH9H5uRWuURLRHNDzv2CwGG5XVv4v3y6Iebj3J60FJb60FFXH4bO894fJcv?= =?us-ascii?Q?gUbAvlnQCSda0b1+mlpL9RNfeq7OUM829y4HYY/E4Dw/nEkM66RpXcQrIsQy?= =?us-ascii?Q?5XYfmdHkbdDzz7k8QHpjTNS7aYPlYCnzi48Yijzm4UpCtKnXpEeNeVr61Ud5?= =?us-ascii?Q?He3YIS96FCPzis1e6/kE4IhUW8d7IkJryc5fYD6yWL2LByzP7ebthw+aDe5Z?= =?us-ascii?Q?8iXtALEAEtIqcborzIckmbM7PAj4281cQJK5NrHpUvj0l6nuqaADT4VZpaNQ?= =?us-ascii?Q?H7KpMblmMKdkAZVD8QpYbjQ7TQgMt5vZVJUxe13/b9IXhYcxBz0d1xv+tY8P?= =?us-ascii?Q?Pe8DVPoCy3WChTSqY7l+KngZ6GukxoNBPfZEc0rxPPHFGiDKUXL0IJ5WiAAd?= =?us-ascii?Q?wc0w/D0QhYCqpLVr4wxOf8da0AXsraNCspyqQmPAUNrFFV/ulPJ5QjaHA0De?= =?us-ascii?Q?TYPADLRCQyuJ2DUhzJ73rnGMO9yxYoToJxKNtht2HZ34p7K1DEr46sb4CuIj?= =?us-ascii?Q?Avp48cTjn5ocsR1GhYn6QggN4Z2pFwLIhZkXPVUUGMzA9r41Q1ODOf1Q7ayt?= =?us-ascii?Q?vknzDzKOoRH3ZrRSvRLr4z05Udv1TIIMgi4j3nKkeLLWDRU/xUQZyDQ1pYeb?= =?us-ascii?Q?vib5PR4/0pCaPa2CPO74BjN30aRsdJRdqFBSw3zRXZjwtP+Uck5TguDmF8Cm?= =?us-ascii?Q?twh5rGZCFwSKVBTmL6U/0CnzGPA9ByQHLjAh91MliZpbri1X6zLFnrwY1Ji4?= =?us-ascii?Q?dRtLwph/izcOz8aLF2INyF1t49p9/aXxOIpyjgBHnErd5wvkatZg8BFA3WYL?= =?us-ascii?Q?EjSU0jQaJ/G9N2kLrJg3Dmmo5smQOBnkR15hGghOruGuMdA9/GkbaPf7uYcI?= =?us-ascii?Q?aqPJiKrCHWaz4c4+Vva+O/jaVNoFvcVs/nxLITInWC2PBDQfOQ46tSeUTlDD?= =?us-ascii?Q?tEGQx1dwFYh46jYjstaDB9581kXTLrj7IJjSzFr+RvJzjW1zvH9D6qbuMuY9?= =?us-ascii?Q?FqvcP+m2jr53Y5Ybydh5Clv7RpMWvH+Pu5yIX1/RVGhtpNO7MQ9+zdIsVCIZ?= =?us-ascii?Q?QRabMjPK0vBaIEF0WbBB3PEUfj/OT0RZyuU+K0lBT6Bg5TGubBhRhDARG6RF?= =?us-ascii?Q?TLwd01N2B3wZyl8+FHTdsxiaaIqYS1HTfabFwQyz97coH22CZz7PCwzYw+KZ?= =?us-ascii?Q?4A=3D=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: =?us-ascii?Q?Zh1FYSJKgItUH5VtdAHgGCRp5eeFpdnkrOCUI55GF7rv8/OBxgJiaF98KKht?= =?us-ascii?Q?+4TJ4xW6mhohRFI7Kvnn3lO4g71MOJOud27VOZnsz9fn8y1XgT4MS97gfJ7U?= =?us-ascii?Q?Sk8ke0xxWF9YZXd0VVD05ApIEqSCBE4djezsj4wXeeb4OhDi8fhI3olbxjCD?= =?us-ascii?Q?P9UeGrP50LVRx2E1QF4a7vcU/WO8/Dlsm61gvUaFsX0beonYpHnnwRLpKiFu?= =?us-ascii?Q?ZUNoaYKPmsnNQDi1JBJ72Qh+Wkdf9N4Ui8xz00upfO5DV3EecoQr0mS5QdBu?= =?us-ascii?Q?9HRWdPVM5B+cxSQZwjYYAvxZWc22jWqmC9rpv9BWucstU7emtVDIvCksuS02?= =?us-ascii?Q?JMr+HiKFnHyT0KsZZbi1C1ao0GxBD0waQAlPYx9c3XoEcp+nMNV7AcDLnZYQ?= =?us-ascii?Q?WRvqJXLT0GJ3x9IwUTzAFis92gSO50AGvN3uithWsv4oFoAgs6Kp88Vi+xNU?= =?us-ascii?Q?2dmK0gQNcwIPilQL7/h32B20+1qSEzDUsuBw5LgP9941OPsl6IKNxkdjokL2?= =?us-ascii?Q?vMh0Dv4lpPfcHuhw/efwX0JvZ/dVswmJbDNfrNSgLvXg1GIKhQObSxUjxqUP?= =?us-ascii?Q?0gQ0j8GFw9Q5Js1s+dJ5CN154XhPYTAInt8Bmnat4oKfB+LwVbJHPDBWz1K9?= =?us-ascii?Q?KCR2nBftLXSuVLuN75KwFLjO7BVkQW9D0JfIPHKDZMk85W7dh5G5VjU9Mccg?= =?us-ascii?Q?XcreNXaVnLgG2gIOBHhmM/sSPDuTIm/87hslduk0Z16oFqY8EerNN8/VAOw0?= =?us-ascii?Q?AWiqh3a5pF5dbVAvNfyyTMLuteks+UhQLKQtD5mTwi56XA57N7MRT3qwz+7u?= =?us-ascii?Q?BQsoHpcW5A2228ZgUQLhamqCS/fmL8ml5S3UDy+ILaCrMsCbhB1vVZIW7Y8T?= =?us-ascii?Q?nYfqoaMqtOQaMh2bnFJFOd/4bpdVjJHH0oWgZlq0Z6B+uGkEvQEpihguc0D0?= =?us-ascii?Q?zwUgRDGglIOx2+6cBGRgUQ=3D=3D?= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 8d41b251-c89b-4664-8e3f-08db427034bb X-MS-Exchange-CrossTenant-AuthSource: SN6PR10MB3022.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 Apr 2023 13:56:29.3576 (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: ccnuV/UOcaj9DJwG6WZn4YbFHka1OQWFmsU6UgeSXyQH3mjBvxDm0PHxR6WjXzVXDRjSz4akjjEIh8O4+XS5Kg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA1PR10MB7540 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.254,Aquarius:18.0.942,Hydra:6.0.573,FMLib:17.11.170.22 definitions=2023-04-21_06,2023-04-21_01,2023-02-09_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 suspectscore=0 adultscore=0 malwarescore=0 mlxlogscore=999 mlxscore=0 bulkscore=0 phishscore=0 spamscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2303200000 definitions=main-2304210121 X-Proofpoint-ORIG-GUID: IjrZg72Bv0EJyEfyIsajhwMHlzOWjOZj X-Proofpoint-GUID: IjrZg72Bv0EJyEfyIsajhwMHlzOWjOZj Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" The maple tree limits the gap returned to a window that specifically fits what was asked. This may not be optimal in the case of switching search directions or a gap that does not satisfy the requested space for other reasons. Fix the search by retrying the operation and limiting the search window in the rare occasion that a conflict occurs. Reported-by: Rick Edgecombe Fixes: 3499a13168da ("mm/mmap: use maple tree for unmapped_area{_topdown}") Signed-off-by: Liam R. Howlett --- mm/mmap.c | 48 +++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 43 insertions(+), 5 deletions(-) diff --git a/mm/mmap.c b/mm/mmap.c index 055fbd5ed762f..6b9116f1c3049 100644 --- a/mm/mmap.c +++ b/mm/mmap.c @@ -1548,7 +1548,8 @@ static inline int accountable_mapping(struct file *fi= le, vm_flags_t vm_flags) */ static unsigned long unmapped_area(struct vm_unmapped_area_info *info) { - unsigned long length, gap; + unsigned long length, gap, low_limit; + struct vm_area_struct *tmp; =20 MA_STATE(mas, ¤t->mm->mm_mt, 0, 0); =20 @@ -1557,12 +1558,29 @@ static unsigned long unmapped_area(struct vm_unmapp= ed_area_info *info) if (length < info->length) return -ENOMEM; =20 - if (mas_empty_area(&mas, info->low_limit, info->high_limit - 1, - length)) + low_limit =3D info->low_limit; +retry: + if (mas_empty_area(&mas, low_limit, info->high_limit - 1, length)) return -ENOMEM; =20 gap =3D mas.index; gap +=3D (info->align_offset - gap) & info->align_mask; + tmp =3D mas_next(&mas, ULONG_MAX); + if (tmp && (tmp->vm_flags & VM_GROWSDOWN)) { /* Avoid prev check if possi= ble */ + if (vm_start_gap(tmp) < gap + length - 1) { + low_limit =3D tmp->vm_end; + mas_reset(&mas); + goto retry; + } + } else { + tmp =3D mas_prev(&mas, 0); + if (tmp && vm_end_gap(tmp) > gap) { + low_limit =3D vm_end_gap(tmp); + mas_reset(&mas); + goto retry; + } + } + return gap; } =20 @@ -1578,7 +1596,8 @@ static unsigned long unmapped_area(struct vm_unmapped= _area_info *info) */ static unsigned long unmapped_area_topdown(struct vm_unmapped_area_info *i= nfo) { - unsigned long length, gap; + unsigned long length, gap, high_limit, gap_end; + struct vm_area_struct *tmp; =20 MA_STATE(mas, ¤t->mm->mm_mt, 0, 0); /* Adjust search length to account for worst case alignment overhead */ @@ -1586,12 +1605,31 @@ static unsigned long unmapped_area_topdown(struct v= m_unmapped_area_info *info) if (length < info->length) return -ENOMEM; =20 - if (mas_empty_area_rev(&mas, info->low_limit, info->high_limit - 1, + high_limit =3D info->high_limit; +retry: + if (mas_empty_area_rev(&mas, info->low_limit, high_limit - 1, length)) return -ENOMEM; =20 gap =3D mas.last + 1 - info->length; gap -=3D (gap - info->align_offset) & info->align_mask; + gap_end =3D mas.last; + tmp =3D mas_next(&mas, ULONG_MAX); + if (tmp && (tmp->vm_flags & VM_GROWSDOWN)) { /* Avoid prev check if possi= ble */ + if (vm_start_gap(tmp) <=3D gap_end) { + high_limit =3D vm_start_gap(tmp); + mas_reset(&mas); + goto retry; + } + } else { + tmp =3D mas_prev(&mas, 0); + if (tmp && vm_end_gap(tmp) > gap) { + high_limit =3D tmp->vm_start; + mas_reset(&mas); + goto retry; + } + } + return gap; } =20 --=20 2.39.2