From patchwork Mon Mar 27 18:55:25 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Liam R. Howlett" X-Patchwork-Id: 13189949 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 CD143C6FD1D for ; Mon, 27 Mar 2023 19:03:23 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 69AD1900004; Mon, 27 Mar 2023 15:03:23 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 64B47900002; Mon, 27 Mar 2023 15:03:23 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 49E2A900004; Mon, 27 Mar 2023 15:03:23 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0015.hostedemail.com [216.40.44.15]) by kanga.kvack.org (Postfix) with ESMTP id 38B6B900002 for ; Mon, 27 Mar 2023 15:03:23 -0400 (EDT) Received: from smtpin29.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay09.hostedemail.com (Postfix) with ESMTP id E6CE3807D6 for ; Mon, 27 Mar 2023 19:03:22 +0000 (UTC) X-FDA: 80615601444.29.B8B4E9D Received: from mx0a-00069f02.pphosted.com (mx0a-00069f02.pphosted.com [205.220.165.32]) by imf08.hostedemail.com (Postfix) with ESMTP id 5D05716002E for ; Mon, 27 Mar 2023 19:03:18 +0000 (UTC) Authentication-Results: imf08.hostedemail.com; dkim=pass header.d=oracle.com header.s=corp-2022-7-12 header.b=lVcQG0ur; dkim=pass header.d=oracle.onmicrosoft.com header.s=selector2-oracle-onmicrosoft-com header.b=RAFIT3Y8; arc=pass ("microsoft.com:s=arcselector9901:i=1"); spf=pass (imf08.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-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1679943798; 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=XTWgae8f9rMe/vZ5BXq4zlzNA7EE7GgdEqqkcqLJwHk=; b=NWs+JpRDZ58CoP96GypWGCnqKSdS3W1dfVPIPK6zjl5Y1KxCY3OGkJ1XKvGKos1IYdiko3 TlzeQ5hUO0qHTrAGJT5L//sa5thwltQfzzttI1srS61odDgR0LE4BOHF5j5/e8exuB/Olq Viww0EJYxHEqsaWK520sUuq05GQg0QQ= ARC-Authentication-Results: i=2; imf08.hostedemail.com; dkim=pass header.d=oracle.com header.s=corp-2022-7-12 header.b=lVcQG0ur; dkim=pass header.d=oracle.onmicrosoft.com header.s=selector2-oracle-onmicrosoft-com header.b=RAFIT3Y8; arc=pass ("microsoft.com:s=arcselector9901:i=1"); spf=pass (imf08.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-Seal: i=2; s=arc-20220608; d=hostedemail.com; t=1679943798; a=rsa-sha256; cv=pass; b=Zxxm3nNkGao3kfr6vlWNp8ObFw1HAZB8tSgPJ+ogLVLaTJDvAIQ8gTefRbUHh8qsREdhyU XmcEOngZBtQYzpiEucHwiML/HcnEyGwWXtCfkgfbntYYpRXXdXbtJrk/DZ0OIvPdCyddpQ eyCUyICyvbhegn9NrxGrF02sAn04or8= 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 32RIoLeV028773; Mon, 27 Mar 2023 19:03:14 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-2022-7-12; bh=XTWgae8f9rMe/vZ5BXq4zlzNA7EE7GgdEqqkcqLJwHk=; b=lVcQG0urKU2p8fGy5edUpf/7dP7ebUlC6lqCsSy6ohDwsKcClzITfgQREinI/v9kBnh8 4T5fhwfx93uapNv7vaHdfIX0+ihsOTfnAfq1JGghWN+u5gHKti1DN+9nsetea9KsXLV7 y2q9Gth9suk+XnTbuOivSz/pzurmBJIxTBW4MahUCzXFWDqQY41Wak6AM0yBLrAzEUVq klgiMWrQhW56coUQfIQztFOxyWlErCuXoCXfSBcYcRkiAKl+S45X8Ja0DvTD4kH30e7+ XM19jCZf8mEkyaTu+Nq2DUKTIjdpsO7WTfbCvfmGi4xA6EFvcEfiWcwD7wORw0DPzNIg tg== Received: from iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta03.appoci.oracle.com [130.35.103.27]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3pkgsa01wu-3 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 27 Mar 2023 19:03:13 +0000 Received: from pps.filterd (iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (8.17.1.5/8.17.1.5) with ESMTP id 32RI3Xtf008633; Mon, 27 Mar 2023 18:55:41 GMT Received: from nam12-bn8-obe.outbound.protection.outlook.com (mail-bn8nam12lp2175.outbound.protection.outlook.com [104.47.55.175]) by iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 3phqdbvmfc-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 27 Mar 2023 18:55:40 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=iUkBomQyhxC9diUfm0XLtiHVnA7rtbncG62Uptigid5ziMIb16f85gm0E618ReTWiLZEYR2Zdwb8/G4aunIEntPC/sPmQNZqkhKNDOcFNc63UHYnwPocG70WdhzCoWWdDgxBA3Dd/0RUOvBzChaH6jJKIB6IB5JOyWH8hOnLtcODKB5jeF4yj/vxqBV+o87ycOFgMRIMt4VSQctwKwVkZmcUIfEVFI8Wq0055ZzFOFEuiPsJvJk0lKkzqUu7Jv+sKqmMzHqNDtv3FhAoao5hlt+xc3vjoSgC3mFARRRCgoC8JsKgeQmUFBMkOYuXKdBsjzMsrF9HXEvJ1GX9T8UqlQ== 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=XTWgae8f9rMe/vZ5BXq4zlzNA7EE7GgdEqqkcqLJwHk=; b=L9jIDd4KDczY9Nl3l7/D7G+D6ipXEwisl/DKJg+N3oV2rjM6uIu5YEA4cH81dyCQ3sTgfEvTgHRV46oWe793OWjzBF8IzGcfAxkaKKzvOdheZG3hNHqv3AJylBNxSUm5LDd4h5J3zyrwyRg5FlkqhEHeZLXogZuiLwuzFBmz7MZIYik4tUFrOHnAXdWAoOmO8n6aFJhAfS+dnIj+6c0RLTan9yfxqXGZUe9yLIiHKKogo04CMRPDk/mi2pjyTL9vQMu2kQvOh5i4jsi6AJdIdzw7IvSdcBP+VsXTSW5j633rYaHRDAZWDWuK5MnOdRI/yDt7ukWdQlVOjVctWQaUgQ== 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=XTWgae8f9rMe/vZ5BXq4zlzNA7EE7GgdEqqkcqLJwHk=; b=RAFIT3Y8Mk4hLndqF/A35GfVB/wsvPd+EU7PW9WVvkaFuGHCDUvLos5xKU++MV89j2LwBGSuc+3OJk/bNj/mHvWxyH9iBtoeIGf0y86DoCXmY2K1DFqe18KuZyPVpOHof8M8AoLsiiTgK9zPXrvqxAOHTcy+RqpV/HAV+bk/kko= Received: from SN6PR10MB3022.namprd10.prod.outlook.com (2603:10b6:805:d8::25) by PH7PR10MB5722.namprd10.prod.outlook.com (2603:10b6:510:126::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6222.30; Mon, 27 Mar 2023 18:55:38 +0000 Received: from SN6PR10MB3022.namprd10.prod.outlook.com ([fe80::9fc8:73bb:cc29:9060]) by SN6PR10MB3022.namprd10.prod.outlook.com ([fe80::9fc8:73bb:cc29:9060%5]) with mapi id 15.20.6222.029; Mon, 27 Mar 2023 18:55:38 +0000 From: "Liam R. Howlett" To: Linus Torvalds , Andrew Morton , maple-tree@lists.infradead.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org, Matthew Wilcox , Suren Baghdasaryan Cc: "Liam R. Howlett" , Stable@vger.kernel.org, "Liam R . Howlett" Subject: [PATCH 1/8] maple_tree: be more cautious about dead nodes Date: Mon, 27 Mar 2023 14:55:25 -0400 Message-Id: <20230327185532.2354250-2-Liam.Howlett@oracle.com> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20230327185532.2354250-1-Liam.Howlett@oracle.com> References: <20230327185532.2354250-1-Liam.Howlett@oracle.com> X-ClientProxiedBy: YT4PR01CA0357.CANPRD01.PROD.OUTLOOK.COM (2603:10b6:b01:fc::13) To SN6PR10MB3022.namprd10.prod.outlook.com (2603:10b6:805:d8::25) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SN6PR10MB3022:EE_|PH7PR10MB5722:EE_ X-MS-Office365-Filtering-Correlation-Id: 6ac27d70-fa15-4e46-9291-08db2ef4db2b X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: f1zod4f6hwZqFRRkaZeu6DIV7R5v298NVYM64sk+m8gpEMiI9XUZ1R/DPsrM/5V11hix8x76F20jmz1MrRLDYp8ODNLve6F3yc8PsKbTUiapLGynh2gcdPUawawNkT8wXWFfUW3j9N94OwFWW9X1ZmkzOIUjP2OaToV6SoNHh/ztp2nh1C9YTpo5JZGZ7wFRXkHGh3KnEmqGGyPvWIYayQxjP1Qob9ItlbT9s1I/8Cwg8GqBqL23xVmYqKu7vnaEvxZYcal6N5hLiYoJX58KI22BK3/R9vCfeHk0J2+1li4KDq3vXvuhE/TcYzOBxvMWihhtRyhByyMA2S2mkfFeOCQZH3vG22an0mjwdOeroviwp9xafdSrhWE4aT61MN8NkumCka6vAIjjFoGEGovUN7AoqeipWqgbdzxdb4AQuH9WyxfahI9iy+rtbEREwotUcH4cKsDJjfQu2VoHf1rFc28O/84VxCDV4iOGRA+pkc/aP5kHgUA2LwYaJBfRnWNqltSlJYWzx6IAGjPOJ8GPE66XdDj0ZVjWfUQfaQp5q/Yr3SW1dxALYsJM4nzrcqZE1p5FNF9dDCpXzJrktpy8vg== 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)(376002)(136003)(366004)(396003)(346002)(39860400002)(451199021)(2906002)(38100700002)(83380400001)(36756003)(5660300002)(41300700001)(8936002)(86362001)(2616005)(6666004)(107886003)(110136005)(54906003)(6506007)(1076003)(6512007)(26005)(316002)(6486002)(966005)(478600001)(186003)(4326008)(8676002)(66556008)(66476007)(66946007);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: sYfQ+HLZUavKqxu5jsqazVv7wKfkFP24b7PMv77+gDJNfpNOsS7XOteYp62O01CQ1IY/JftQCmtruSTHu/GHbEfuHmYWmIDA52a4VDtnI9IDACDVth4cArudj0UsLXz+MByiCcddyy5bIbWqVMrBAl4MLbPT4SE9Sz7i9NBGWIbCf37XXPyz8dB5ZzaljS+WOdtvZIUkzqjDzIqmEyk0kOISCDPzaeuN9NZIwCmchgoli6TlIl/NN9UXJcATsHBWfisGjqiYTLUp/9uhdf3tYY3iCcq2PUwdRIFSbo3rK3ku4QCIoXxrbLxfWDBMbtH2xrUEwAUCss9wDKNFcaMVRVz2myXbWdv1Dp1PQQ0kkbJ+xhfS6mJoeefiUhppfESwlrHwGQLhMmteOuo88pJqGk0kNqaY+CRDg4Mgsm9RqlTN0gfM651QIcRa0WG+RPCEZwN4VcMWi7CzeIyC1BtenbcOEzrZ8Q8q9E+1Py7UAtT7C06q9ItP4JnuFu8dGk0+8fD5zELRZDVYNMorzq55xd5iVOn5PkExzDq26Fcevap2HCB+sLtqhoKXbWrTwVNREMzuosdHmmsN7XKFyC8J/YJJt/ODxY+Ay3sxNGJO5WxvWw1nMK8YQQZZh8rGIg206uhsrNAix+zk1rBQUxP763e5U5oZJ9j63EwoN9kbTJ5ZkH7T5++Qph1yz+RTyHcKQWu0sEud7rwNBNC3p0H9yhiV2shluzn63EFcaxcz1oqygbvQwVmsyieAM3/JUyd5/KWYsg4+Trz5lpqI1tXcaKsHRbtuEhw0gcdCQA+gEK+UEAf2j938fJtm6GoitdBhpw/wfIHefyWif2i8JpJrF2BwHcWelgRY7LZe4zlrqoMXJ1A0s+nRbnviEbo4yNfd85wH+jl1NGavGHEdOxP1Cjw5D/5I+NNYQyW58ldcnmj9IMacmbi606NRv3Z6Lyajtkn9ZhY2tVymUqR1vuT1lITUwbZWBR//Dt8bRWfXm5VLq0gCdAVVrIcd5N31jPRGxY4BsqHfRmp8sV8G14pfxldCxlUVr6ilgQvhsjgL6Z64NSrnoZhRtWJoJZq2iMYR9XouI0Qne2uZjBUR9pI+WfZjstMurHKCS+/R9M/ehWutHdayRrcf5hnL1X7zen3bGdGzJKd9IluIQ467qLLIzmIRSlBhTqzI4OK82fp5+YGOWd1/i8DA0Qi6ETkohV4rEmw0R0JHTJOnV+Q9J0wW9Ljhoqe5XvmQm6smDOJpNP1PVG+G1U/olZoh0zU4xkPPW6LgtYLHR+dWDH2fw6oFF+nFAG+aBZn6BQ/QCa9fAYLHIYNdJtxbVSFGxVt+w67t0u0FsIlpLI6LjKv/7dI8j7GC1s0bQ4kLevFcJQtGyDPoPLddkMsv4Q9dll9zUb/wqrwuwHe52hD5HSNr+LyyTMqlNrTs+HpeFQHfxSTQSJ4DCYV8gOKLtq6V4T4yeCCneZxU+0u8lw//33gaXLhMDirYU8c1XPgAKaQH4exBFR+W0DlHnepqI+cokxseikKLQE4uWyiynz4j6l6S0ueYaaQ1TcGsMfaFZErAgkqHeMMQDvJXM3MGv7j3ODTljXWJL+zM3/7CTQHR+FhnXxPjhA== X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: O+PsLTI9sf0SSfhbNMl8GvWNv1mdfbqEdTwqwY1RFHP+/IRRguiLfT9UWZkflbHQi1f092Ioo4O+1cCASg17gBlG4uQmLCiRf2LS2pWAxidL0oRQ58sUMZlPnRcjix1M0Sn1KOcJtCdNP+mFJrq8JC0glpgRIPgBEl9Emzm+lwxPAntcrCSLv1N17t9yW2Mw+tAWwelIcGm/8jS3Zpx5awvtEHYoI8aJjRBKm8XlNiGe/PCOQe9h/5gLzC4nx6wxOrMmVqVqKW125g9cRX4k99eoWv5GHGVLuXVQiGonVmjjAnXTLq7p6MV2lRhu1c4y/+DqOPRxSjx0qppby3jwpHM5C9pASV1fIlUEL6W/O6qaCFwgCGDSmVS4jLyrnsj1eU99eFeY2IdDUvVsKI8wt66JcDjV0oESiun3lTneeQ4LluofhBZGGXKojhlzR7G5wM8sq7+C7VChai5PYLCmFFV9iipIYSrZ4f6Vi927GBL3HKH9XJ9i7pNuskBx6MgDqv0ckUdf4zUnsllDgmlbaSqJRCs+EyP0g8UHvwJTvJpTJsBavMJp1fEOdsHvRDWP887j/m6TmDGdNF5OaOuwGnYEDKlrtFD9XcfsCn7RuA5FEYr2x1n0YNUSlAkmfmodMcMPPg++se5agpjQrWCXnlXpaAS4hIqTdWfq0K8YAx80+VPKBQUs/0ySmZX1M6hxfEZ0I91mhn2A8RwWP6pijNvtD/KHdwBOtVCGSrrXKgku50ypui8dQsHW8NBc9AA6d2Fg/2UUMN47rgFmtohYWU+vJD3khrLHQlUzx2fqoiSXKFIOlKpy+ZwOqxg04jzS2VEfx76Vk86XAwRPGWkdCAe3jyTRJveIdW+AEotihEn5Yd6uZfHVh3WliBQuyuC2wrQqXVG8pCvpTZZLJtEwYens8uDXaRepBbRqR0/cV0fzWLn5p/l9lGJHn+w8rbOXkRlWnv5818KCmIh52ZImzw== X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 6ac27d70-fa15-4e46-9291-08db2ef4db2b X-MS-Exchange-CrossTenant-AuthSource: SN6PR10MB3022.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Mar 2023 18:55:38.8180 (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: bv2eaq3FxUzNr/GvCeeEgq1WgnwVEhJEySJSPjhRHiu6SbShXzQCJd6iqpCbzLKAdkc6zudovTmNa+ZRYsn8lQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR10MB5722 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-03-24_11,2023-03-27_02,2023-02-09_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 adultscore=0 mlxscore=0 malwarescore=0 mlxlogscore=999 phishscore=0 bulkscore=0 spamscore=0 suspectscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2303200000 definitions=main-2303270155 X-Proofpoint-GUID: 7iIW5NSvzuVam_hyzM7T4VA047OEWO3A X-Proofpoint-ORIG-GUID: 7iIW5NSvzuVam_hyzM7T4VA047OEWO3A X-Rspamd-Server: rspam07 X-Rspamd-Queue-Id: 5D05716002E X-Rspam-User: X-Stat-Signature: yt7ahxbiqjd7g1unthgsmfdfqi69r4q1 X-HE-Tag: 1679943798-673556 X-HE-Meta: U2FsdGVkX1+Xxc/R/coriw8TZfYWO722hdBZzjYMwuq8iGc/hmZUXcX4IbzwItIr/WWDR2dLKRyR5qj8gCHTBhI8U8mmYNeg9izLA3wWZT4lvF4sCR7vmAzHnMWALVa3gNC0GEgteJEyNOJwlQ/X3S7EShA8xKo0QKXn21OxaEdA9/rDoc1+/oscWsieZdcvldu0FtFJ/MD0yUJ8nRs+059Zwz91/ZlcaEmaXJ/fqf5AC9FOoBLTON9YCvptQZIepLcYN5AzpEhNt2oa4yFq4I5yM9iaStJfUAs3OwRDt1yPZfUFghlXbUl3jg8YQKYfXWjHOe7Y/VcHB0P/UgWYfewrunUK+dGJuMRHZEirWy+fjn9tfH9B7cfS+cgVY+jk+bX/mZ4ycetnffwp1wdNqiFz7hsZFBaeSVeQAFir3eCAKJ0wtuvbFhw46Knifp0nYC6pHpajTesEqDeyRvDOw0il6hO30AHgNIQ5Eh06RjMroIrtUVQm8jMSdpolWKfRApbbRM+QTxAVYKX1oxUyGlxksWHYnTKx2SgI0yrRwSrrrKtqCOe11RmKcIJqalEMFJDBQ5sderu8fQTMPTt3GBQjIt16+n+Mw2Vu8hJAorhnq6JeXwYHLUf5QHCMnG+YmmQmB4tRr69S1XC/W4sMa0ftZTP3fuUhwRI2u7Y6IEwRByy/unNyuc9mwoD54vUGWDJKg1G6mXrfy7b+gZsRSck2w3ZUTrsR/N5LB/AKjaQE/0M6N+BssbgH/VIo2DygYctlfVSCpEdBWhLFLj6aAp7OVMvWmAszyY+U7OJXEoMqvG5LOHYWq5c2hAkHYnX3UKOpRO6d6HJRbBS9cwf3WXGwDJUuWBcAk+OVoZtG2qwlUeQ3WtXMSGayqmC9MTptgdnXBhJ5oozoUOHOg1ZVc7cuHywb0weoVBhJbewKdUrNYSI6JJ9cVDIJ/ZOQbM1QwD8vR6a08sxvdH4GRUQ /2mLiUJB 8T9Jt+27rb+rIjQJ5smTAsoBVkOjpS5O72lrK4ULUCwYeMdqVRleB5W/hY6pAcPgH49hMDL1N9lFZFFDyNspxeZlOiQY/QH62g6cF7HSkAyKGWK1eYH9m3HBDd+UK1FdiRFzUvyUq7q8n07ADdIa8zo5ddauNjsekpQ8ORoSpam1jvb04qw1z0dhvUzEkAPjDG2ljwO7MVUu8rUtI1wUQ5EZkSL2QLtIyEJB2/tIB4TFCto3T137oNF9WdmU8uFfBfz+0csPaQ15ZiaVA5u0F1sE0a4cK1kz+H6sR2NW1GRmoU4/ajtaKRLSwUjq4AmF/d2dQUFe2gzlP1o7Kb1KneJrLcmHhiXuPTm7CDaGQBp+MVwEh07YZP3CrnfBVpL46U8Tr1BTSCT1hjNgBesz84d6DUS7L2Dwk8TtcXzOJo50lCpcSOnkWyeZ5aB/duo5ZEC4iN3UPjDFuEVDmBAdPztusX8VdxvedFpzK09RB9VqK4rsXuK/x5tULm2WckuTDmPK1eU65CznQFMYNJT4zPLSuIA== 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" ma_pivots() and ma_data_end() may be called with a dead node. Ensure to that the node isn't dead before using the returned values. This is necessary for RCU mode of the maple tree. Link: https://lkml.kernel.org/r/20230227173632.3292573-1-surenb@google.com Link: https://lkml.kernel.org/r/20230227173632.3292573-2-surenb@google.com Fixes: 54a611b60590 ("Maple Tree: add new data structure") Cc: Signed-off-by: Liam R. Howlett --- lib/maple_tree.c | 52 +++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 43 insertions(+), 9 deletions(-) diff --git a/lib/maple_tree.c b/lib/maple_tree.c index 646297cae5d1..cc356b8369ad 100644 --- a/lib/maple_tree.c +++ b/lib/maple_tree.c @@ -544,6 +544,7 @@ static inline bool ma_dead_node(const struct maple_node *node) return (parent == node); } + /* * mte_dead_node() - check if the @enode is dead. * @enode: The encoded maple node @@ -625,6 +626,8 @@ static inline unsigned int mas_alloc_req(const struct ma_state *mas) * @node - the maple node * @type - the node type * + * In the event of a dead node, this array may be %NULL + * * Return: A pointer to the maple node pivots */ static inline unsigned long *ma_pivots(struct maple_node *node, @@ -1096,8 +1099,11 @@ static int mas_ascend(struct ma_state *mas) a_type = mas_parent_enum(mas, p_enode); a_node = mte_parent(p_enode); a_slot = mte_parent_slot(p_enode); - pivots = ma_pivots(a_node, a_type); a_enode = mt_mk_node(a_node, a_type); + pivots = ma_pivots(a_node, a_type); + + if (unlikely(ma_dead_node(a_node))) + return 1; if (!set_min && a_slot) { set_min = true; @@ -1401,6 +1407,9 @@ static inline unsigned char ma_data_end(struct maple_node *node, { unsigned char offset; + if (!pivots) + return 0; + if (type == maple_arange_64) return ma_meta_end(node, type); @@ -1436,6 +1445,9 @@ static inline unsigned char mas_data_end(struct ma_state *mas) return ma_meta_end(node, type); pivots = ma_pivots(node, type); + if (unlikely(ma_dead_node(node))) + return 0; + offset = mt_pivots[type] - 1; if (likely(!pivots[offset])) return ma_meta_end(node, type); @@ -4505,6 +4517,9 @@ static inline int mas_prev_node(struct ma_state *mas, unsigned long min) node = mas_mn(mas); slots = ma_slots(node, mt); pivots = ma_pivots(node, mt); + if (unlikely(ma_dead_node(node))) + return 1; + mas->max = pivots[offset]; if (offset) mas->min = pivots[offset - 1] + 1; @@ -4526,6 +4541,9 @@ static inline int mas_prev_node(struct ma_state *mas, unsigned long min) slots = ma_slots(node, mt); pivots = ma_pivots(node, mt); offset = ma_data_end(node, mt, pivots, mas->max); + if (unlikely(ma_dead_node(node))) + return 1; + if (offset) mas->min = pivots[offset - 1] + 1; @@ -4574,6 +4592,7 @@ static inline int mas_next_node(struct ma_state *mas, struct maple_node *node, struct maple_enode *enode; int level = 0; unsigned char offset; + unsigned char node_end; enum maple_type mt; void __rcu **slots; @@ -4597,7 +4616,11 @@ static inline int mas_next_node(struct ma_state *mas, struct maple_node *node, node = mas_mn(mas); mt = mte_node_type(mas->node); pivots = ma_pivots(node, mt); - } while (unlikely(offset == ma_data_end(node, mt, pivots, mas->max))); + node_end = ma_data_end(node, mt, pivots, mas->max); + if (unlikely(ma_dead_node(node))) + return 1; + + } while (unlikely(offset == node_end)); slots = ma_slots(node, mt); pivot = mas_safe_pivot(mas, pivots, ++offset, mt); @@ -4613,6 +4636,9 @@ static inline int mas_next_node(struct ma_state *mas, struct maple_node *node, mt = mte_node_type(mas->node); slots = ma_slots(node, mt); pivots = ma_pivots(node, mt); + if (unlikely(ma_dead_node(node))) + return 1; + offset = 0; pivot = pivots[0]; } @@ -4659,11 +4685,14 @@ static inline void *mas_next_nentry(struct ma_state *mas, return NULL; } - pivots = ma_pivots(node, type); slots = ma_slots(node, type); - mas->index = mas_safe_min(mas, pivots, mas->offset); + pivots = ma_pivots(node, type); count = ma_data_end(node, type, pivots, mas->max); - if (ma_dead_node(node)) + if (unlikely(ma_dead_node(node))) + return NULL; + + mas->index = mas_safe_min(mas, pivots, mas->offset); + if (unlikely(ma_dead_node(node))) return NULL; if (mas->index > max) @@ -4817,6 +4846,11 @@ static inline void *mas_prev_nentry(struct ma_state *mas, unsigned long limit, slots = ma_slots(mn, mt); pivots = ma_pivots(mn, mt); + if (unlikely(ma_dead_node(mn))) { + mas_rewalk(mas, index); + goto retry; + } + if (offset == mt_pivots[mt]) pivot = mas->max; else @@ -6631,11 +6665,11 @@ static inline void *mas_first_entry(struct ma_state *mas, struct maple_node *mn, while (likely(!ma_is_leaf(mt))) { MT_BUG_ON(mas->tree, mte_dead_node(mas->node)); slots = ma_slots(mn, mt); - pivots = ma_pivots(mn, mt); - max = pivots[0]; entry = mas_slot(mas, slots, 0); + pivots = ma_pivots(mn, mt); if (unlikely(ma_dead_node(mn))) return NULL; + max = pivots[0]; mas->node = entry; mn = mas_mn(mas); mt = mte_node_type(mas->node); @@ -6655,13 +6689,13 @@ static inline void *mas_first_entry(struct ma_state *mas, struct maple_node *mn, if (likely(entry)) return entry; - pivots = ma_pivots(mn, mt); - mas->index = pivots[0] + 1; mas->offset = 1; entry = mas_slot(mas, slots, 1); + pivots = ma_pivots(mn, mt); if (unlikely(ma_dead_node(mn))) return NULL; + mas->index = pivots[0] + 1; if (mas->index > limit) goto none; From patchwork Mon Mar 27 18:55:26 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Liam R. Howlett" X-Patchwork-Id: 13189953 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 6CD92C76195 for ; Mon, 27 Mar 2023 19:08:23 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id F234D900004; Mon, 27 Mar 2023 15:08:22 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id ED30E900002; Mon, 27 Mar 2023 15:08:22 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id D2854900004; Mon, 27 Mar 2023 15:08:22 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0014.hostedemail.com [216.40.44.14]) by kanga.kvack.org (Postfix) with ESMTP id C4A23900002 for ; Mon, 27 Mar 2023 15:08:22 -0400 (EDT) Received: from smtpin18.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay07.hostedemail.com (Postfix) with ESMTP id 8B29F160893 for ; Mon, 27 Mar 2023 19:08:22 +0000 (UTC) X-FDA: 80615614044.18.EFE6CCE Received: from mx0a-00069f02.pphosted.com (mx0a-00069f02.pphosted.com [205.220.165.32]) by imf25.hostedemail.com (Postfix) with ESMTP id F1FFDA001A for ; Mon, 27 Mar 2023 19:08:18 +0000 (UTC) Authentication-Results: imf25.hostedemail.com; dkim=pass header.d=oracle.com header.s=corp-2022-7-12 header.b=l3kXqQyh; dkim=pass header.d=oracle.onmicrosoft.com header.s=selector2-oracle-onmicrosoft-com header.b=TEyEbMpu; arc=pass ("microsoft.com:s=arcselector9901:i=1"); spf=pass (imf25.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-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1679944099; 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=TpUsjmCjRnVRG6V8IDPBzE+S5LIdsDOZXCeYop4f09M=; b=SNeDYhzf+JA67zxq9XCqav+S0w+7ZMMSC5bWykKVv4qUeVDzsxQSbQszOnBDbCB9bPdNyw fcNk8Y3o4UMLTWyP3NCWyS0M2K+8dEcE1AmU52EJ8v8LpubuccWFMygPlvimJ0vaKi7bWs z/kJT2XUnQyjqkITw29ztRq6jPuJrFM= ARC-Authentication-Results: i=2; imf25.hostedemail.com; dkim=pass header.d=oracle.com header.s=corp-2022-7-12 header.b=l3kXqQyh; dkim=pass header.d=oracle.onmicrosoft.com header.s=selector2-oracle-onmicrosoft-com header.b=TEyEbMpu; arc=pass ("microsoft.com:s=arcselector9901:i=1"); spf=pass (imf25.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-Seal: i=2; s=arc-20220608; d=hostedemail.com; t=1679944099; a=rsa-sha256; cv=pass; b=hmYFMQB1MxkRQ1BdOlYG4ZwrcXm+k+lMFCs/6r1r3rIkwzkNG2CeDOv7JbaSI+OCSRGXC7 UuKtLFIVrzBysYVHNIsPKQtznZxFiW66o90UUBAx2Ko+v1QcF05i3wa7RHWUMkONKRT1lC QvEMsf+742FlVc4+ZJv93yQRYEMtlwM= Received: from pps.filterd (m0246627.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 32RIjPeU007133; Mon, 27 Mar 2023 19:08:15 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-2022-7-12; bh=TpUsjmCjRnVRG6V8IDPBzE+S5LIdsDOZXCeYop4f09M=; b=l3kXqQyhmneR54y8Ng6v6OGc+jA1+KR6iGyLGSv4RfTqtg2/ItMvDwgiWu7/ca8XbZ8A 9mCTGfqFkLVNcGWRLzpdYhw3bcCBqHgUq98osGx0R/DwOGtHlJPN160S8gqEk71g2pEk //iSM6MbHsXkq3gNwzB2O0kdD91q9TTIIpfBjLrLc/NnDY8/ZMljCrtnSNQm3Rx3MMQA KewyPkkci0TpjbzbE1r0hqgdSdLMVQlOSL1rAKnYEGlYXUJLEkEuS6lcbZ1VwfEsIPf1 iVjRKoCf4W5mW3b31OP76dtSZzroNMoz7oHaYXJe+UPEoggZjI21cdgx83FI/l4unS/Y 9Q== Received: from iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta01.appoci.oracle.com [130.35.100.223]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3pkgpmr42d-19 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 27 Mar 2023 19:08:14 +0000 Received: from pps.filterd (iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (8.17.1.5/8.17.1.5) with ESMTP id 32RIWiAY027552; Mon, 27 Mar 2023 18:55:43 GMT Received: from nam12-bn8-obe.outbound.protection.outlook.com (mail-bn8nam12lp2175.outbound.protection.outlook.com [104.47.55.175]) by iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 3phqdbvyny-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 27 Mar 2023 18:55:42 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=LEyzBqZ4KFGER4AlT+/nG+I70lmhfBzPTQ0bFRMEldrD+v8ddedNP2gp/wY/ZmbpFTpvlg6dZUF54NTupn/qve8+HwEX9C470nFSHrfQ97Ns/KCGiF26/yCUqW7bmFnD8YxX4d6TvMfpBPWdZ/Rr7gnbTSvRUpSp6FPT9x2V9JwuBx5l20G6GA0e0ue/Bf6b6ZD0lQsFE5/t4iqWJt7jNdjO1gJtUe0EFGEmDiMKe1KP/UoRRTVdn9FHXd6YBTvsI2Wei9yNz6uV43QTM0tP0Nbuf4aoBjXGWHBTDXkSJLTqPoPSHfYEJHdFCmoa5xZWJaZG5b86DXEiMh6GAJWjHQ== 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=TpUsjmCjRnVRG6V8IDPBzE+S5LIdsDOZXCeYop4f09M=; b=ibAlfdhX89rBRJCBQr80ntQsM8c+TJS14T1htkqcRPVovuU88oNcQfkebrXncBj30D3IYAe3YgelOD1fglfwjlJOdpmpedXQt6wMDdcf7pT0UC3et7JBSDMkkbkkbrwsJGpzn2jB6ocC6DcJGTmq1yHQfK2bMjvadhngzGB+pGyh6aSIiYEhQTEE3tRyAEHJWYra1ZWmmpXKLERkj0XVvs2xQMvRytA5s6d/FgVMXNLfNfL45qUsyHyZ9Fi0Y/TA8kocDjtxCyxgt7GCY3ub+ANaZAISMkrnx7UPP0bWgGK2cLkkg5vAmbh9J4bP+OzWGZxFOVXHSS9uSLaGTMI94A== 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=TpUsjmCjRnVRG6V8IDPBzE+S5LIdsDOZXCeYop4f09M=; b=TEyEbMpu+MDQ4C3HGF/acp7iyYVYImj8sMXvE+gkcPJ5QuBGrsbjcgSudgc9A9GwNBovZlYFaXt/nCfIEY6FOZAi8vKO4k0E8GLRvve6pMYVChz8OlTJI7xLa7T+w03F3jhr/oV2nGjtnKn0TppRyWs2sGCRz7AJPn3rNpfIUTw= Received: from SN6PR10MB3022.namprd10.prod.outlook.com (2603:10b6:805:d8::25) by PH7PR10MB5722.namprd10.prod.outlook.com (2603:10b6:510:126::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6222.30; Mon, 27 Mar 2023 18:55:41 +0000 Received: from SN6PR10MB3022.namprd10.prod.outlook.com ([fe80::9fc8:73bb:cc29:9060]) by SN6PR10MB3022.namprd10.prod.outlook.com ([fe80::9fc8:73bb:cc29:9060%5]) with mapi id 15.20.6222.029; Mon, 27 Mar 2023 18:55:41 +0000 From: "Liam R. Howlett" To: Linus Torvalds , Andrew Morton , maple-tree@lists.infradead.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org, Matthew Wilcox , Suren Baghdasaryan Cc: "Liam R. Howlett" , Stable@vger.kernel.org, "Liam R . Howlett" Subject: [PATCH 2/8] maple_tree: detect dead nodes in mas_start() Date: Mon, 27 Mar 2023 14:55:26 -0400 Message-Id: <20230327185532.2354250-3-Liam.Howlett@oracle.com> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20230327185532.2354250-1-Liam.Howlett@oracle.com> References: <20230327185532.2354250-1-Liam.Howlett@oracle.com> X-ClientProxiedBy: YT1P288CA0022.CANP288.PROD.OUTLOOK.COM (2603:10b6:b01::35) To SN6PR10MB3022.namprd10.prod.outlook.com (2603:10b6:805:d8::25) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SN6PR10MB3022:EE_|PH7PR10MB5722:EE_ X-MS-Office365-Filtering-Correlation-Id: c7a2b980-3f92-4ed9-5406-08db2ef4dc98 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 3nOKyHfwgzCBvxY6vAyDTChqU40QzXUOidRXvEOl6O8qG9sud3hvi4NsY0XOGHugSQtXyAF8M+z8rbLJKhf0gSbvfm8Lu1gvJkW/0otWahOzJSkLUiCJxypR9mOdmBSHWa9ff4HwNWf8g5ZViAwbK1NocKlEIMpAQfFdepA6En8Qm6saCHrD53L34uxjdGGBuNjOf4xjzSGVFDCqI0BKWC5S8xnGMkGMsZIEmiqTFeyuAChJPc+d0Kw11Ttmf43wf7DK5nfPVG8681sdJGoAAvwVM7SChHEZLdoKlnqu/Btm+Ng5DE91W6FmZV3JN4mxMrYU3Pt4OSuvpXJ2BQiTbe+QKCL2bF+oPqqKvaAS36H6kGTUk3EtHt/iCu3j6gbV+z86sgYoLIQDhnRP+2WWgnpYkbSCsufSqPjDuMX6Hc1ocy6XoE1zBwWhGTeDiQxdyWyire5iG41WIabR87chbPWgL1Wy77D0MY1qD7uTRb11VZShJWaQ/qvkswU/zDYv2ehkYyR/16VB6JWXEJAOcU4TMmlIoyau1BNfLtbUhT0= 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)(376002)(136003)(366004)(396003)(346002)(39860400002)(451199021)(2906002)(38100700002)(83380400001)(36756003)(5660300002)(41300700001)(8936002)(86362001)(2616005)(6666004)(107886003)(110136005)(54906003)(6506007)(1076003)(6512007)(26005)(316002)(6486002)(966005)(478600001)(186003)(4326008)(8676002)(66556008)(66476007)(66946007);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: NZouSKIuXTuwvbchVIr4Ep9u2KII39NT7VX5Z7W8A8WEk3nkmJa+J/bBYFPHzKrLWGVreTVnS/Yke4WmjpmvtZMGnBFZ7rDBM1VlHg1AAjhr/OAFh3F7Ezk1ijOrsmXdwZVvqyvqzxgpHp0vCFA1nqul/eeWMsfxcEJs3msliF1mKYy0JhXDpUpPoQ6lznqS/bzmuGlcU5CtucQLYwWsxkCJMVhfgFONBJ/GFwrRuF8iUIkOTu1Pzu1E9iJvlKJ0H8cl1uOVYqfNhC09Jcnn/qTOPnlIAxjLrvh/8YyQRL+cUnvjaZN7Y8n4oLC4VzITOzpsk+2dQf8ZGOPcLApWZ27o1lOafIIMHF1So56mmFbWXCXSODXqVAb+WWZkzcQp4k23uTG+IMdbc6Z7o7vOAThiAPJmKh+o9d/Ryx5kbsUNy53xpbYKSGuGUsPGbhG1mgLUwYJioLPaRGQQ7jEb/FGhBfwlEyqq29j+4ZSMpdkUGz4UK9vKExNvPqsc4GKEw5x+CmQPnxZwMXbElf+KZW8VWfv2rWDI9TVvEYl0CCS4QsLRasN1yhSEYxgsBwTWNxoKXYhisE1ID3RZLxhSsjwo9aA/KQunrwbvA7r7WRmibatOeerMEZHDW7JTSLN3WoMmx6qSRplCP4xuFG6eX811fL4LW3lqQY1eU6kMIPWJ2PGAtMQ9cyi3jMs6HvMO208jvMlR4NzoZ2sKw1EkRCyQmxIDvflfcqqshK0VebU2OcEA0aPrhOjnKe28FLdGyVKAUNCYI6jOtuM1DjJRowWIWaDp5GOBRNIM/fKPGmGyqgfbmq00tp7GruHu4XEMSSRF79H2YljiY4nsbgAZZXXKLAJ+gU02/tFBwrmK3BY2u7875vWzBxMfpo8lvslBvtG6bUOVHjQsakBX07KfxNVWvnEKyBKHb0YIKzMYVpTeG33/KeupBwmNh9ZxipVNYuz6dzpYpxUK23guwIyh9uA3iAyzldwfF347q9dG1gQjeqIB5KbHQ7hYUX3d4YxOhFHCeY51CUqB61GKMzoW7lSRWGQaHT1n4qeXuLC79wCgcXkkJhP2Jii+d7+zbvw4NYHuzVlqhBfsbZa7QNLcHBK3L1fyRIIKNcGChhM/q6C4EaXnV0Y14YhI2OHpVrA0MnNWXk2FeOLRxa4wjmCJny4tTtNXaos7Y9L4pdFm37njb+whQgrh2+icFbj/gWZXLhpO/CczbrWfuiRYC2YHO7OFo6FRjCURHzEIkyiYCrZygaCfSPlG2fpZ3W6mnFYVgCAlNgeZJwBfWLHvulIEodsGhNYOHl2qp0MUC+HAJCYVs2Vn4Yc5PlGjd3r7tyG4++UT2J8mnQNQQu+vqjch2zF00y3G/gzC2HrZtoIXpfQ3nVAGamyMlKgYbgLYAoriWeZQqqQQasVLMGCPrH5gHlsBhzZWPn2ftqwbghOwZoVfUIZOQIvDEt+5VNyBxazMmHaKoat1V3VLek0gD510IIDsMJWNYSr82EibnnKBXkiOdbu2N9dC9yV39o1N7P6cicynQ9rYngZrWGiF0l5roTd/DXUlZqT+lKuXG2kjFtumiYA+KXxTicLPhuPmCjVyTJkCwO7rqhAr1nSIqvwAzA== X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: O666RhjskSpfdtFGNHv/p7Cg6ImDCprJjZpWlphOHv66JOwywEYB4f1fWyVEOd+C8C3W7KBy5MbVIb5MARhS+u8RhIZgrRjEnb5esRxW7DTdKIK5N9ZDcFc/vyH5V71KKuD/JKqApID6rvvcntLCg5E5mC6D3F1wGUzHySBdNINgo5cHvAQayjNWaHEe1E3oqA/zhU9gwu58v67squE7zhQyYikAiCt41yBgK4O8I1MXmIYndshMygJtQbteSx7qBgD06G59eTbDo9MAPHq7OcweGZiSY/EDs1ilwsDtUwjpTXxbr25vUMj1A1WAWzT0Ku85/EiI0LHGZ3c3ft0jbnxEauggNhJNNqNikMQUY3GFYGSBDDyyR1T6pEz/nEKOrlEiSNaSru4dwn3QK83Ckak5H9PiWrmogNwUv2pjhCFCT5cXIcgEW/8xGe/EtE26gg5RZeD+JpT1XOsLAvrk8NORltpnXB3j1YgqzfVGpwyA9qB1202VynC9chffmjFt8FY/J9MilqT5jAkHB2e0nr5fKHyYQEpSks+H/CfSTPpBr5H67OWJl/MBhC2b47WNuXEjIA3Zgma0lnyj5nuCSZkyNN222EJX+QWYcpss/1vNk0AEDtBjAJEJg0ez6+elW1JyfYpV9hOQ1/6SJwboXKl1B53i5QBLcbn7Zj6e6DIkcbg2SP0C71rC2KvVOnpOhSaZOVm+G6VfjvlM7HpJPAHXM2356Usy1wKKvOiZs5A42rCdS+g3S7fdhJFISkeONtB4XaIIiNUM/l3cL8IYL0QUNlYK6pE4cSm9LMluojYpbZ9fxVB9koK9oqDCiEH/ykNrhyVh2DtwjpP0/cO6xrS1hFCh3b0lp3vKSkEKgqS4YM8Z9rm+5s7/RYNWCBXo1CL3ZKxYg1IgLnWMSziJ31bZBV54j8gWgihedqK38ZAAU9PkAIyOJQZ+bKLh8x407XA/nDeXbzyV3cP0l6q/0A== X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: c7a2b980-3f92-4ed9-5406-08db2ef4dc98 X-MS-Exchange-CrossTenant-AuthSource: SN6PR10MB3022.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Mar 2023 18:55:41.2235 (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: YFxtNsrMI3LtT7aDDdUXs2OXa9/aFLEG9luCk8tYIJKMGfospUCSXRox2Co+95ALLrTg6IyrXv1NZlnhndwo+A== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR10MB5722 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-03-24_11,2023-03-27_02,2023-02-09_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 bulkscore=0 malwarescore=0 suspectscore=0 mlxscore=0 mlxlogscore=999 spamscore=0 adultscore=0 phishscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2303200000 definitions=main-2303270155 X-Proofpoint-GUID: Pfk2aUHPvirBIaIdnlN0BsjN5JGpijuI X-Proofpoint-ORIG-GUID: Pfk2aUHPvirBIaIdnlN0BsjN5JGpijuI X-Rspamd-Server: rspam05 X-Rspamd-Queue-Id: F1FFDA001A X-Stat-Signature: anewfhq6upqmxupxnktxjd9mjewf188t X-Rspam-User: X-HE-Tag: 1679944098-33389 X-HE-Meta: U2FsdGVkX1+3LMv/XAvm7E/9AJgYgVeWmX0yubqV0JSHNzjUjUSoKVMf146yNu1lpG1mhsiPqDX3yACmydUcsy9PAtT+D1nGg7LIzXUfX5WCS2M/1MtsqLnTNiypRN4/w06dsz+/aylax2O3/1gZopKnOVeX0gkbn9PXEuMVkwgdfrR4hMVBBDIei4s2z/pdquSxWGNxgZ1CoDcUUmId6X6XHZoGbls6hKLS+9pxd+sBpY1MjfjiUP9K7qsRNk4xHhq0+cy8mSooBxbpMNO/HCFMDCgVMNV0GHnOh+vKfp6ygJYdOWxf3OYEgNuFHKP8e+Ba1l84IL66n/SxqGuaO8rhG61zxXKWU5F8xD72xaCBy09hdW15KoarTLUTG0w6Vc5q088gBzWldGU9o9upCreBje4BuaLHjWA3lSzO22sZHsxpXxDgN6+twRHR83QJdZI0e9khMvEWV12L+cedyYQvdj12Fo/AzIva1Ir9ZlS+DVNxaz4tMaT54ljleuigIhTf8SAkKKc4eOMlF248NHZRCVk+nro/OLJnzTseGzPsNNdKncYUTjPQ/Sxzyk0uQ2igLDcXqZex8+HvA3QAAddt/mko35pGf/iUyOV1Q5U/Mp3lhY9B2gB8iwXhsQo2MzyAoDl9a1TVUs+a0aHK7lsWgKMJgJtseZCF/Y3HaU+51L+ODtgOIzv2wY/L5sPEYpQFiphF30ZmGO+QMYnMC4juhxw9Xxvph0Sbx4F+/VtIKNzXjvET+P+4W4lAYTy5ZdKTta2LEgzQXgWKy+Ld2kZ7MPuzJM2ec/Gm9ePcPaRsMRE9etly5xVYNqrfrRWvVIECOFLqM0LzmUpxNmY25mp4rOMA47d96BoIuYJHaG3FavqGLYgNY/rNlkjYyPx/zpJ09sF6zR5VIs+QWWTGAmNeqoVBxd2kEdU90f6vqZI+stV4Yqlm4Kl/IXZuxzp58qLF7b934rXx8w7pjWl 2uQAgn0m JJaSCTFDIBSLDsJocvx40HLUklPhLyUhWTPLb80rnE/3AuhMEKmnyoxs/455PL+VyuV+OaA/Qecrx7oboVb8lkIeYhysFn9tafWpTWGHK212MMOMZ/w/leIibgflu9owphVptRC06gHk/LMrnkAbCjL1iD8IPFp1tqZMK+Px9FXiZloGIA3B3c2ALu7CuNSmgPcdWpJL6jlxIoeKq6RF3cGTNf9btx2t+1Szk9uock5x1qu4m7EXEDffKKjgu9IU9kt/4eM8lMZy//HzPg8rdlB/kEoaOxkXvSO7xOtPugrJSbiP2yWBiszS+FrRB9F9VOhjtByAqWhlRqLL8u6hUGQR89JpBcH23E5IVWiAovupX0hrihoxZElFu8AQT35yQ5s4C2P5DgKM/ceYHArs6n+pjL0H/n+Fu+rMJFsARrtHkX1fOx/+QPwg0s83OxJchX4glM60Q6FYObwQVWeET/hfgCzck849qCgfeR5J1TUE72tWELmw4ckFjbmbDVmm2imZMXKq/1hdXRB4ZLMfDoXuRBA== 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" When initially starting a search, the root node may already be in the process of being replaced in RCU mode. Detect and restart the walk if this is the case. This is necessary for RCU mode of the maple tree. Link: https://lkml.kernel.org/r/20230227173632.3292573-3-surenb@google.com Cc: Fixes: 54a611b60590 ("Maple Tree: add new data structure") Signed-off-by: Liam R. Howlett --- lib/maple_tree.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/lib/maple_tree.c b/lib/maple_tree.c index cc356b8369ad..089cd76ec379 100644 --- a/lib/maple_tree.c +++ b/lib/maple_tree.c @@ -1360,12 +1360,16 @@ static inline struct maple_enode *mas_start(struct ma_state *mas) mas->max = ULONG_MAX; mas->depth = 0; +retry: root = mas_root(mas); /* Tree with nodes */ if (likely(xa_is_node(root))) { mas->depth = 1; mas->node = mte_safe_root(root); mas->offset = 0; + if (mte_dead_node(mas->node)) + goto retry; + return NULL; } From patchwork Mon Mar 27 18:55:27 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Liam R. Howlett" X-Patchwork-Id: 13189973 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 56F70C6FD1D for ; Mon, 27 Mar 2023 19:32:30 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id BB677900003; Mon, 27 Mar 2023 15:32:29 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id B661F900002; Mon, 27 Mar 2023 15:32:29 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 9DFEC900003; Mon, 27 Mar 2023 15:32:29 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0017.hostedemail.com [216.40.44.17]) by kanga.kvack.org (Postfix) with ESMTP id 8D864900002 for ; Mon, 27 Mar 2023 15:32:29 -0400 (EDT) Received: from smtpin25.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay10.hostedemail.com (Postfix) with ESMTP id 596F9C052D for ; Mon, 27 Mar 2023 19:32:29 +0000 (UTC) X-FDA: 80615674818.25.774A7CB Received: from mx0a-00069f02.pphosted.com (mx0a-00069f02.pphosted.com [205.220.165.32]) by imf01.hostedemail.com (Postfix) with ESMTP id C632640009 for ; Mon, 27 Mar 2023 19:32:25 +0000 (UTC) Authentication-Results: imf01.hostedemail.com; dkim=pass header.d=oracle.com header.s=corp-2022-7-12 header.b="1E7UtTX/"; dkim=pass header.d=oracle.onmicrosoft.com header.s=selector2-oracle-onmicrosoft-com header.b=IK8z7yes; dmarc=pass (policy=none) header.from=oracle.com; spf=pass (imf01.hostedemail.com: domain of liam.howlett@oracle.com designates 205.220.165.32 as permitted sender) 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=1679945546; 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=9958vdTUG0kfKUD1Gb4WTYzGWMv36VHhSQpJWxkmkHw=; b=kCu//vtL5xrZJqEnc2NEuMdBV0JRDREKijdZ3JYqNnD8wqcsD82d3trlTsQAyBVNMxTs5b Y9W79or9m3fiX77Pv+3yYkLY/SN2IAw6jSKKZPuqEqhwP9RZz6qVaHVDsnQpJ6Erj02DuT 60sTK5cxTsMCyvP4Xv8U0TwM/qoVNd8= ARC-Authentication-Results: i=2; imf01.hostedemail.com; dkim=pass header.d=oracle.com header.s=corp-2022-7-12 header.b="1E7UtTX/"; dkim=pass header.d=oracle.onmicrosoft.com header.s=selector2-oracle-onmicrosoft-com header.b=IK8z7yes; dmarc=pass (policy=none) header.from=oracle.com; spf=pass (imf01.hostedemail.com: domain of liam.howlett@oracle.com designates 205.220.165.32 as permitted sender) smtp.mailfrom=liam.howlett@oracle.com; arc=pass ("microsoft.com:s=arcselector9901:i=1") ARC-Seal: i=2; s=arc-20220608; d=hostedemail.com; t=1679945546; a=rsa-sha256; cv=pass; b=Gr+j2xCfNv8AdtfcMzqXX7hrH60DRV3cxw/ZhAO3Dl3rhL5Rsv99JuoENdNjsXEkfymP0x HoDWPq4NBCGdHA96lZKV1vsUzF4itdNvd94LhumhQdUkxJVZqBPdi76CAhTeFq3lIcD+Jm KTav8HZt3HMNskUALx/9BFySZ34LkuM= Received: from pps.filterd (m0246627.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 32RJK4ZU006613; Mon, 27 Mar 2023 19:32:21 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-2022-7-12; bh=9958vdTUG0kfKUD1Gb4WTYzGWMv36VHhSQpJWxkmkHw=; b=1E7UtTX/TLIquZWlD8T+bwZHvCtFtvAjQYdOsV+TXKhp3MN63+w0ThCeAFbdED30WZAz T8XvTl1JHicbTByfe5vGhqrUr4NEx+KGBmZT7SOS+Yq9dxwNvQMjUzNXY0zRqGnrXhU2 o4RgqvKZ5SWr9UW+yYv8bC9gH1fVyaPJvI+aa6UtRimh37TxTBMaUCv8A9urfCxAqmtq N4Ur0Fpp+NUKBj/TndMSZRqnxWM3fvirKzpdQpylHvVFqEMBe0xzYAfRBkHmcCmv91xX yw6zpm6tYTYtSFHugLjWCyuWD/ZNyJ3rSPhH2URAXkHXEdyu1a8kKx248M/of2b8BoNO oA== Received: from phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta03.appoci.oracle.com [138.1.37.129]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3pkh71r179-11 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 27 Mar 2023 19:32:21 +0000 Received: from pps.filterd (phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com [127.0.0.1]) by phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (8.17.1.5/8.17.1.5) with ESMTP id 32RIR9fK005488; Mon, 27 Mar 2023 18:55:45 GMT Received: from nam12-bn8-obe.outbound.protection.outlook.com (mail-bn8nam12lp2172.outbound.protection.outlook.com [104.47.55.172]) by phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 3phqd5cnnm-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 27 Mar 2023 18:55:45 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=KQbTLq8sUd/Ja4AOts8bbKRdiXhsrVFkonFpzTThFJZpiy3XUbHfJNw8KTjwxGEckOz2ZC7y1iFO2lA509L7aDwe9fXHYdnugx+1v5Q8bpUQFiP6eDBcglTRQ9Vw0xNToWaCC0xlZvUQJ7PJQ9jlIjlOFXevd49Gbj0WReaf8YX1wpx0IxZXTjG8jeYPC7/2fs2dGeuhcymkwmwt18fNgYiLx6Eo18OAuiQABph1phYZoNbpJwvpSkkk1hnc4jZPOVKprGIhux5d4QE6zB+5ba44P0+OhLRCaCJcnsqABqQ23DV70dLcLuAWOCGnQxaho1agnuH47n1jGV/ORcBrNQ== 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=9958vdTUG0kfKUD1Gb4WTYzGWMv36VHhSQpJWxkmkHw=; b=KDkWuuZI/s3LRhlUXNNBeRYcev086AC9XvbLAnc9N9ERdw2uXqjv2hFficKXFePhkPIlz5zFD/g7i0CB7L4hP/1k8E2us4l9XV9xnFT7DHe7rv/UyaHAH2xan0X3iC83hzKFdd6lWDTDHTa8uE30Oj3Xfb5/wbdDV/hwC4I3QgIxd4Ei7JY9/cJxIgT+3dVzAxugthBNOE/X2mBOFLlaH6jcvhggLPpNIRAbV3vbP4QvyEYcCVESfK6MW+M1RvlDY/c3l2RL92cALgm6k2KwF0OvqWVXB0uJOvU7g47DMpySjKnK4i0kISdEvxaJs1wdixxO9pRZwYDC7Q+dSr0V8Q== 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=9958vdTUG0kfKUD1Gb4WTYzGWMv36VHhSQpJWxkmkHw=; b=IK8z7yesrGXAB3dzLfSk3u1BYvtieQCCnWkW6eZP1ddow7qBSW/wwOtfh44ccnxno7zQsiWGj4bW1TkmMjikQe3cSjFYLTtkNoWqGuqqElMoUFHpehJhjSS3OCdwstqF+bvDUS2yWJIE3PeNFo+9wXuzcTv7pspUEJOIBztjrZE= Received: from SN6PR10MB3022.namprd10.prod.outlook.com (2603:10b6:805:d8::25) by PH7PR10MB5722.namprd10.prod.outlook.com (2603:10b6:510:126::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6222.30; Mon, 27 Mar 2023 18:55:43 +0000 Received: from SN6PR10MB3022.namprd10.prod.outlook.com ([fe80::9fc8:73bb:cc29:9060]) by SN6PR10MB3022.namprd10.prod.outlook.com ([fe80::9fc8:73bb:cc29:9060%5]) with mapi id 15.20.6222.029; Mon, 27 Mar 2023 18:55:43 +0000 From: "Liam R. Howlett" To: Linus Torvalds , Andrew Morton , maple-tree@lists.infradead.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org, Matthew Wilcox , Suren Baghdasaryan Cc: "Liam R. Howlett" , Stable@vger.kernel.org, "Liam R . Howlett" Subject: [PATCH 3/8] maple_tree: fix freeing of nodes in rcu mode Date: Mon, 27 Mar 2023 14:55:27 -0400 Message-Id: <20230327185532.2354250-4-Liam.Howlett@oracle.com> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20230327185532.2354250-1-Liam.Howlett@oracle.com> References: <20230327185532.2354250-1-Liam.Howlett@oracle.com> X-ClientProxiedBy: YT1P288CA0019.CANP288.PROD.OUTLOOK.COM (2603:10b6:b01::32) To SN6PR10MB3022.namprd10.prod.outlook.com (2603:10b6:805:d8::25) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SN6PR10MB3022:EE_|PH7PR10MB5722:EE_ X-MS-Office365-Filtering-Correlation-Id: 2539281e-35c3-498a-b524-08db2ef4dde3 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: bv9MQ5jVW2K2O5rsvDNm8Dw0wAxERyzzRxTQL/mWTK+M3ZQVJi1tzcKTdsXhGNtPtUL7C4gVUdW0QDoGvEFyfaetehdbxTkjeKB9iaajSMzFeFeLhClw2mcLjJQBqthEZ+S4hAaT3ih+vBsoO3BI4gzOfUF1VYHkpiZZ3Y3HGy/I91JegEPFOAOmPli4IuRfYK8mw49n8ZadVB6Bsp9+rucrqkJXwiQiO0gC2xoCmA+NLtgCS0ijVFOrmAOmH+HR9nqiCGEi7N9rWc7jz0IKM5hPiwt9U+l8nwzx+DHu4rIvEDYhqkzNRWuWe/8vzN653h+CL6Qy9GoOp4/Izbv9W3/zHFtzKVKH8yDYmXwl4elI3ExEtV9FKbNf9Raw1M+FWpWOUJK/pq0+nYQP4YF5Xjt5mOYdyYJt2YeqnJod4DVHOUiRSfyieFiIcOy/J6CrJ5mi2/1qbg5M9T2mt9XUUBuhDa0RJn06zO2i/9rETYuFWVS1xlslmB5ktzw8g9go+BUiOI0bSLaVCfTUqEehsncWluVYjmTCvTGclhOIUjA= 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)(376002)(136003)(366004)(396003)(346002)(39860400002)(451199021)(2906002)(38100700002)(83380400001)(36756003)(5660300002)(41300700001)(8936002)(86362001)(2616005)(6666004)(107886003)(110136005)(54906003)(6506007)(1076003)(6512007)(26005)(316002)(6486002)(966005)(478600001)(186003)(4326008)(8676002)(66556008)(66476007)(66946007);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 2jc1Yn+tEOEOT9QilGmI4y6qFkEXfrQ+JfHHyHEbDpWIjsW1uRUCS39Ibe3wSgPElwgougkmj1IE+JMuBa1HxUmbIjZ6kxkqRVLnLdzadjTHfuk8zMC4v7u0PP/VkgimtQVIv1uw72OCFygPmPEj5PcAPHypcfBgJcM0aH1R+WPRgLEboszV0ulwgvLQaSm+xS1JYXxjd7y5d7WfUEPPgpYiEcRV7+uUmEGDN30xZ/Dnw9I7oepYlPP4H/IhgnpgBJfIPCH5yZbgYR0grsIVxUAlSsnhzU4tixruq/YSR9XLKDxLkD7nd0Ku9nl0u5kkyUqv6LlEzp/h5klBjE/Avx+/fSbN/Ux8BPFXoWciiPDAwYeeIHYd6apQqNTt7CWWMkX/TLTy7cROa/DtyzyR7cvx/fkBIPhi8EisQnkeeAQRaQV4QbAA2/aDgcl05DXOSWtTKm9/vSeZNEjmbOwFDCshfz9jmGDz9gPRCXzZoh1RncIITif32WpJa6hXZr4yz4FUVnBHY/4baOiHOXhgAkwCJiyJRMZb2pXBnLESlqwwLj5jk/g5EdtXY1K61FDYOGtzjYf/bG5/goHoHSAVHkZ+eaLPs/w+/usTLtql0mI4YXUj63icLWaSLisWzjv5i0BNeXhY3MaAc8enMWUCCDXr/m9wOaDP9dzz0wAgjCn7O5j6Z/16dHCTayceFB/f71TyTRxs5rHV8YYxzk9XHKWISqGcdPYenYTjfPEt+/JX2ahJmEe4uu8QwhFbL4vg8hBSkHifJgVo1eNVFLA+3D7gpDJQldfno1ww16cEMpwlUPzElhiKzzm0wdZZBl7VTURPudKIwGfyVin4kF/0OsdiY7vJHth4xTshJXkv00K0SVmhnOc+aF7vVKIM70xTij7aku9U5Wf+yADpfpIaulYuDvj3lGzRcadzrCe551Bcj6OvakUe3UrfuY1mBUH6Qbf/GxrbtOkTuuwqQL4j+KZIX3dmhvebmmVkB5Bf4ryOZaRI/uaOqSPx0poD0HzGm9BcaHrAThI8s7w7P5czxDuscZsO4pm4pnhlP4+TY90eCYDh1Y7QR/TAy98V4WEmzWuZIABgS5LCp6SCNHHgddsooJhM7cMIMd7B3Mq/eL8PDe39UI2sWy6toAW0pMyXawilP7PKniy73nLpz5AYvPCM9Zsw+Ur/M2QfHSxDREHmC108x9AnQ93eJLMEmERST7RR+FnQ9r3M2xssByx4e9ZJB9vnTXHVvDW82ottntHHlBvyVm5AShogKS6IsHw/RxjgBAA9Mv7/7ko0svIwr5dNPyAluuX8/D0eLA0RatviCKOmDi6Ou07DjlGa262umJO7pw2Gjwj6ISRnB6bp0pISOB0UlQzFZX1Wb28VZX/JEbkGiIvL1xcaaHc+yHJ8FFq0tl8smCD+rcxlKuHKr5nHzjknxPwOV2Un0/1ydK4j4oAxX0uPX4ocOvmAQ6eaaNeNzru8XoFAFHJeKfbyzEZsFxdaf5gQO8lBLsUATvdSwDqWFk9FZTic2Xbx7QY3MkMWwcl1t6+NpGfGZYuNA891UZSDctuReVH39HfpevOZKv4bJImkIkCeoTKi7n4ENIE0Se/2XpTO59IrFsgl2g== X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: ncntFVIsuvaLBaTgKoJBJXRp3DbxSWstKyEtg9kFBSZ2nchguKeFGiJpmwR0vx2N1LLfTQ5whABFM7JzenHYiCZkULMQvVlqGPN3m5ceLU5CrJ11NEAWK9vvbBQAD7NIYPyatkTHqjQxyezmZwvspKCTe3sztink5ADBKR+TFIUnZ4UIY1Mmu7zxzz/WBL1CGj4piGhC1XHRE1H+jz3NGpfw2oDugYdmf8kxXelAUnEx3+iOaEPq2M5DwWEOpBAHQqNSxIrcBi+4Cn00Lgvd8f+3iXP9CF68IboNhaYIVIj3I90kvuKLaX7lePtwXlBGzRfsdT2XrN6vLKF+gJoJHaxzecj7PsQYmKgkAZrROI52B5tLO0NHc4+m0rC52tCQN24j9gywilRZoiITW8ffTrzsO271Dt2XslgYi8BZ8P8Grw3SNwR0z7cE+VXhJQgR1gT1HW/NQCzG0sTFG7I0LMYZi6RsYRI1EheFOKULzrYas6HlfuRoYKF+27LhGHBZiBJ6NMtW0tranKiNhDzHOeryNsZy31+uIvOeVOIy1gH3vo5Eq3+/JIP45AHyQwrs4PuIbetjqyJQe8A2wVMVJUTi66MQITbAhoqG4UAB45ksOlYNFaU+aSquO9e21Cbm0XLCkgXeTZXoTMs4yzdFJli9L6gL8jDOQO8fcFvmpnxq4TuWzMPh29t3nUUoTkqL6N+vuZ3PZZ1ccx4XUO2kMa8LjhkHFJjxw4kRyj8QLv8dkQOESrRlpd9WxXkODL3vW7BeqS06sccjDYuExihCRdSh5ants1unnJjsmo8iqfiRM/lxo5kMT1646VndMai1XSRnn1CN5AND0iwkNQaTXmKXgyFM7HD83y2Naa2CQOWzRWrJvnujMmvLTOmo+ogQOGIIYakIo+DVRXSkQYR38pjgSWU9f2XdYY/akdkEg8EADVQIwoI9dIzc/IboplYE4RiUMro/ajqdQIrTWVFXdw== X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 2539281e-35c3-498a-b524-08db2ef4dde3 X-MS-Exchange-CrossTenant-AuthSource: SN6PR10MB3022.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Mar 2023 18:55:43.4030 (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: Oc5rhuITm+0u++RPSgD8H3z9uj9nbUHeiR5k5QgqZnFxygLKpEEtWlCcqmYs9QSQuHYSeRJmhrOord+M6odFjw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR10MB5722 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-03-24_11,2023-03-27_02,2023-02-09_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 mlxlogscore=999 adultscore=0 phishscore=0 suspectscore=0 malwarescore=0 spamscore=0 mlxscore=0 bulkscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2303200000 definitions=main-2303270155 X-Proofpoint-ORIG-GUID: MqwT9VG-NhxC3Y_REuPVz0JyaVsjifX_ X-Proofpoint-GUID: MqwT9VG-NhxC3Y_REuPVz0JyaVsjifX_ X-Rspam-User: X-Rspamd-Server: rspam02 X-Rspamd-Queue-Id: C632640009 X-Stat-Signature: xbc6farw5ygmkhtrricfdkyou9ny3kqg X-HE-Tag: 1679945545-184795 X-HE-Meta: U2FsdGVkX1/nCYtSAP6dljn+fIpLv6+yr5FpHfxG5ofEd9s1YD4YvK8afMMn8JSZD6utgqblMg7PPczncMs5YHfbrMXAVwFE8xQgfeRlMsJ0AMbtBkzff6WbwjUYZPvYT+uHASZYcCxpaqUa7LI26GASWDh7HVktjTtanNHMHuFyrjKcnjUq1xfoAdyX+o7XQc6N/d1N6mb3HCcW8dUg1zy91+TtC+yL0dPxQrWZ07d+t9B01Yp7A4ILjJBRGDsbdssFaGGc8OrU8IeUqtS0Oyq5QKWVWv3QOMCCtemmXBTgqoj/sIBOUBLFYTcgGnUpcIpSyduU+0Mh61uI+2OlJhhzFqVUHku/LbSr56tXPvZAE04uJE2tGfa4WItSpZtS/+MFpculIY5c+arMbs+qNfvF/Thvy1MytRbVoAqmwt6vSQfqyxoJO17yB0JxGdnB6gHddaxp16JgVyyBcpUiV6DqIiNsC8QdtsFgBn2bDw8ZekNmHmw961NLnridAqEqITK4ki5PX4ZJUTfJismjRu3rCqk3qPPtZNoblPXtEOlEO1JJV3HQ5+fT+17ZTBFwfE6OgiEQNJUnYokRff/AxSMzbqOmGWUPQh3fv2BbFnUabgDzKhHZN2r1q7UcouIunNkz0s8E0EvUWcs8qz/vmiOP0csIkDXsSRPJq4MXCtGSHOHQVWy5CYcWQekw5Kt4epziAvPU4VquTCo5YeoqSoGTK3tZzItkTcLPMlmQYd9fnRLvkKyie7a02KMC9cKHyBdnrAqk6MSN/s2kHfUeiryRIWqNEXX85adQEDwqqdZDBM9ti/3VU/X/rC5KgjfnTjgq7yw9GEiP17WeyVGDlNNzwtZ9qoO4amXzNDKnnZz9D5UX0RVdZ2Z4/jEsGDWV6jv5eCMXcCc8Qjwymxs3b/U9TKZNpR+jEZu47HHSGS28tT9oB2SUBW0+MIzNJx6cB1jZFVue6Mpx0siJEuV vWK+xOdZ nWmXAcud91OwJWkLjmhLZ82+mcgj+dhr0xShcbVTZMiXm6VnC1lIkJSKNtjnjd73z2N6ErNLQuDgcs8DUIE2upYXI9C5z2gWm4XASs9ThhhkUzvbxUoUebE9D1G0XhJq3LDBW6GgsnO4faMiroNdOF4EVLFcqAaOgSYh/v8VIM/uqrb3w41zvg+8NSYl4WivDD//KVB5OcsoE/3cczWhQuA2tK4PjyV6W6iIrBwYjcYg9JssGC/2MkPnL8ETU59196ZomRMkXixIkl8f+o7IBuVKDxojfUntJU+bgH57aK5L8xJgABLj/uTpjX2yoU3P0IouE/ROD1APxi+qeQRjZBdD6WhDFBpVlXYLC9GQI2LOoWNb/+4oSufP+tAbAObgVzzcrD9x6bqwVI5Fcu7Hr5fw5h1macasAXkEshwnW+vcwWjL8N007PEaVRogqU5UTRoUsPf830RB5c+qbd1+uUrli7WYNaHVtkSQJuBMCza8LF8hdsDATfdBxwKiUFNtyCmLCExJPn1ge1dg78JAYHKwy7g== 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" The walk to destroy the nodes was not always setting the node type and would result in a destroy method potentially using the values as nodes. Avoid this by setting the correct node types. This is necessary for the RCU mode of the maple tree. Link: https://lkml.kernel.org/r/20230227173632.3292573-4-surenb@google.com Cc: Fixes: 54a611b60590 ("Maple Tree: add new data structure") Signed-off-by: Liam R. Howlett --- lib/maple_tree.c | 73 ++++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 62 insertions(+), 11 deletions(-) diff --git a/lib/maple_tree.c b/lib/maple_tree.c index 089cd76ec379..44d6ce30b28e 100644 --- a/lib/maple_tree.c +++ b/lib/maple_tree.c @@ -902,6 +902,44 @@ static inline void ma_set_meta(struct maple_node *mn, enum maple_type mt, meta->end = end; } +/* + * mas_clear_meta() - clear the metadata information of a node, if it exists + * @mas: The maple state + * @mn: The maple node + * @mt: The maple node type + * @offset: The offset of the highest sub-gap in this node. + * @end: The end of the data in this node. + */ +static inline void mas_clear_meta(struct ma_state *mas, struct maple_node *mn, + enum maple_type mt) +{ + struct maple_metadata *meta; + unsigned long *pivots; + void __rcu **slots; + void *next; + + switch (mt) { + case maple_range_64: + pivots = mn->mr64.pivot; + if (unlikely(pivots[MAPLE_RANGE64_SLOTS - 2])) { + slots = mn->mr64.slot; + next = mas_slot_locked(mas, slots, + MAPLE_RANGE64_SLOTS - 1); + if (unlikely((mte_to_node(next) && mte_node_type(next)))) + return; /* The last slot is a node, no metadata */ + } + fallthrough; + case maple_arange_64: + meta = ma_meta(mn, mt); + break; + default: + return; + } + + meta->gap = 0; + meta->end = 0; +} + /* * ma_meta_end() - Get the data end of a node from the metadata * @mn: The maple node @@ -5455,20 +5493,22 @@ static inline int mas_rev_alloc(struct ma_state *mas, unsigned long min, * mas_dead_leaves() - Mark all leaves of a node as dead. * @mas: The maple state * @slots: Pointer to the slot array + * @type: The maple node type * * Must hold the write lock. * * Return: The number of leaves marked as dead. */ static inline -unsigned char mas_dead_leaves(struct ma_state *mas, void __rcu **slots) +unsigned char mas_dead_leaves(struct ma_state *mas, void __rcu **slots, + enum maple_type mt) { struct maple_node *node; enum maple_type type; void *entry; int offset; - for (offset = 0; offset < mt_slot_count(mas->node); offset++) { + for (offset = 0; offset < mt_slots[mt]; offset++) { entry = mas_slot_locked(mas, slots, offset); type = mte_node_type(entry); node = mte_to_node(entry); @@ -5487,14 +5527,13 @@ unsigned char mas_dead_leaves(struct ma_state *mas, void __rcu **slots) static void __rcu **mas_dead_walk(struct ma_state *mas, unsigned char offset) { - struct maple_node *node, *next; + struct maple_node *next; void __rcu **slots = NULL; next = mas_mn(mas); do { - mas->node = ma_enode_ptr(next); - node = mas_mn(mas); - slots = ma_slots(node, node->type); + mas->node = mt_mk_node(next, next->type); + slots = ma_slots(next, next->type); next = mas_slot_locked(mas, slots, offset); offset = 0; } while (!ma_is_leaf(next->type)); @@ -5558,11 +5597,14 @@ static inline void __rcu **mas_destroy_descend(struct ma_state *mas, node = mas_mn(mas); slots = ma_slots(node, mte_node_type(mas->node)); next = mas_slot_locked(mas, slots, 0); - if ((mte_dead_node(next))) + if ((mte_dead_node(next))) { + mte_to_node(next)->type = mte_node_type(next); next = mas_slot_locked(mas, slots, 1); + } mte_set_node_dead(mas->node); node->type = mte_node_type(mas->node); + mas_clear_meta(mas, node, node->type); node->piv_parent = prev; node->parent_slot = offset; offset = 0; @@ -5582,13 +5624,18 @@ static void mt_destroy_walk(struct maple_enode *enode, unsigned char ma_flags, MA_STATE(mas, &mt, 0, 0); - if (mte_is_leaf(enode)) + mas.node = enode; + if (mte_is_leaf(enode)) { + node->type = mte_node_type(enode); goto free_leaf; + } + ma_flags &= ~MT_FLAGS_LOCK_MASK; mt_init_flags(&mt, ma_flags); mas_lock(&mas); - mas.node = start = enode; + mte_to_node(enode)->ma_flags = ma_flags; + start = enode; slots = mas_destroy_descend(&mas, start, 0); node = mas_mn(&mas); do { @@ -5596,7 +5643,8 @@ static void mt_destroy_walk(struct maple_enode *enode, unsigned char ma_flags, unsigned char offset; struct maple_enode *parent, *tmp; - node->slot_len = mas_dead_leaves(&mas, slots); + node->type = mte_node_type(mas.node); + node->slot_len = mas_dead_leaves(&mas, slots, node->type); if (free) mt_free_bulk(node->slot_len, slots); offset = node->parent_slot + 1; @@ -5620,7 +5668,8 @@ static void mt_destroy_walk(struct maple_enode *enode, unsigned char ma_flags, } while (start != mas.node); node = mas_mn(&mas); - node->slot_len = mas_dead_leaves(&mas, slots); + node->type = mte_node_type(mas.node); + node->slot_len = mas_dead_leaves(&mas, slots, node->type); if (free) mt_free_bulk(node->slot_len, slots); @@ -5630,6 +5679,8 @@ static void mt_destroy_walk(struct maple_enode *enode, unsigned char ma_flags, free_leaf: if (free) mt_free_rcu(&node->rcu); + else + mas_clear_meta(&mas, node, node->type); } /* From patchwork Mon Mar 27 18:55:28 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Liam R. Howlett" X-Patchwork-Id: 13189948 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 1E45AC76195 for ; Mon, 27 Mar 2023 19:02:25 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 73BE3900003; Mon, 27 Mar 2023 15:02:24 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 6E87C900002; Mon, 27 Mar 2023 15:02:24 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 561EC900003; Mon, 27 Mar 2023 15:02:24 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0017.hostedemail.com [216.40.44.17]) by kanga.kvack.org (Postfix) with ESMTP id 44C11900002 for ; Mon, 27 Mar 2023 15:02:24 -0400 (EDT) Received: from smtpin30.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay05.hostedemail.com (Postfix) with ESMTP id F239B4082A for ; Mon, 27 Mar 2023 19:02:23 +0000 (UTC) X-FDA: 80615598966.30.C219FA8 Received: from mx0a-00069f02.pphosted.com (mx0a-00069f02.pphosted.com [205.220.165.32]) by imf13.hostedemail.com (Postfix) with ESMTP id 628E720025 for ; Mon, 27 Mar 2023 19:02:19 +0000 (UTC) Authentication-Results: imf13.hostedemail.com; dkim=pass header.d=oracle.com header.s=corp-2022-7-12 header.b=jt+IrPNM; dkim=pass header.d=oracle.onmicrosoft.com header.s=selector2-oracle-onmicrosoft-com header.b=mi1t0Q5x; spf=pass (imf13.hostedemail.com: domain of liam.howlett@oracle.com designates 205.220.165.32 as permitted sender) smtp.mailfrom=liam.howlett@oracle.com; arc=pass ("microsoft.com:s=arcselector9901:i=1"); dmarc=pass (policy=none) header.from=oracle.com ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1679943739; 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=rjfqf4t7uyCufquwqK3wKGn8LhXzB0cBxImqUhe0z4Q=; b=6sw1KBDvTeow3M1rJCnaBXpwne1In3tO6cM/sG7EQEc4A5aMYaVtcD0s9QODjDtC+qe86d r8yXrG7nUEfGfBqMPC0F3GjVy7eKByRL2aHnEYrzdxRK7lyiDTo3g0ACZBsXsxU9D2V3Vm Jc50PrWkHpA0tXrBnilAdf0fVTv6wP0= ARC-Authentication-Results: i=2; imf13.hostedemail.com; dkim=pass header.d=oracle.com header.s=corp-2022-7-12 header.b=jt+IrPNM; dkim=pass header.d=oracle.onmicrosoft.com header.s=selector2-oracle-onmicrosoft-com header.b=mi1t0Q5x; spf=pass (imf13.hostedemail.com: domain of liam.howlett@oracle.com designates 205.220.165.32 as permitted sender) smtp.mailfrom=liam.howlett@oracle.com; arc=pass ("microsoft.com:s=arcselector9901:i=1"); dmarc=pass (policy=none) header.from=oracle.com ARC-Seal: i=2; s=arc-20220608; d=hostedemail.com; t=1679943739; a=rsa-sha256; cv=pass; b=SwRIFU1zed6Or8cAPNE5eCRztxBhlU5wNLiJhN/q9lWEUnYcjPeOoOC+h2mWfAKS9BN5c0 MF4Twc0j3I1koAKBW0vSFyfF+o4yWxseqm1ZYUxZEb3QvH0ZGIqYWq0V5LwgL0omB09TJt GIFxG47g4DJhTq8SC51ORq8bWpfN0D0= 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 32RIoLVa028778; Mon, 27 Mar 2023 19:02:11 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-2022-7-12; bh=rjfqf4t7uyCufquwqK3wKGn8LhXzB0cBxImqUhe0z4Q=; b=jt+IrPNMWOxOat8ZCC9worjF894WaX+YXy4zdLjMMkoJyEuU7MCGkg+qVfkco7kVnPOr qAQuIruGe1lVuGSWZK8ajU+4FZVdsLJ4i6nRgxp/XLV5V+sqvORwwFCsvRJUq4VpN+h6 4wBXMlJX5uM0GsmDyt5MdKvhfQR1xyrU6XCM3NALquonpklMHibt3UaimtTnCJwNC/z/ TM8Is2O/M8o3HckiI4iDs4Lvksq5zXh11NE+WpLmG+RKJA7NAy6jPR85rVhO8BXP99fS spsvH7weEwwBfrkxTNAd9Yc6y/bNJZY2HfDl6faC8ovSbig5BUVmJSjbMeGZyRwJIJ7E eA== Received: from phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta03.appoci.oracle.com [138.1.37.129]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3pkgsa01m6-3 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 27 Mar 2023 19:02:11 +0000 Received: from pps.filterd (phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com [127.0.0.1]) by phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (8.17.1.5/8.17.1.5) with ESMTP id 32RHmK0O005430; Mon, 27 Mar 2023 18:55:49 GMT Received: from nam12-bn8-obe.outbound.protection.outlook.com (mail-bn8nam12lp2176.outbound.protection.outlook.com [104.47.55.176]) by phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 3phqd5cnr4-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 27 Mar 2023 18:55:48 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Im/6roL+RwSZAGfiYpioVTA64PfFoGYubFepiym3r8C+SfEQnJwSQN09MtXZyaQUsqxJfyB8Q/D2P37fzr6HYyZcVPSFmkmmAk7Gnv23pfcwzpOoIveZ+4qFap58jZLTJxR4MFYRfnaVRjui4YPfj/ED7G9krwLRcRJ8KDGtx6Ny1cMKsTp54yWO/hCSgd2jd9hGZqHM6K3NNq9jSGKiO3krWGIXEjGRmr1NtPkVclyVfvom5G3tdsVsVOVpAzUTf+I94p9ctO5r+83NFVjUVK/QNNfSg0p+o35p6msyz++eXG+yQMrJXTTTEST2vx+6rieq1G+/PpQr/M0pQg3nSQ== 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=rjfqf4t7uyCufquwqK3wKGn8LhXzB0cBxImqUhe0z4Q=; b=HsQAMIQ1ntPoL8h+tyOUTEzRBZKMgcORe/0KCZwiL47efYbG22KrN7Ylfw8UfuAwDK2WpMsMoUl4tMskv8obWqa+Xz4ZUagpDO9AKy5FLEvk6eM+G2D3BygfHmD8R0eVKHmGm/sk5C410YCKdch/KCmpTG5SdBlzPxmvNpEF/c98oi2KgwapuCyz9vA1FdNRlLIKkFCoQMTP7odN4uQKMcmqal2GajWPMExu0H/MRW7i1qqPV00Oftrcm0LNiNBuZZfnFI4hZ6sTqA57rlVgZEtbjDib2bSKZPPP1qasTQ9Kc0EfSd6zYY6rrFWvjaUWC2aS8BPO8vZQFuVYSWxU3w== 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=rjfqf4t7uyCufquwqK3wKGn8LhXzB0cBxImqUhe0z4Q=; b=mi1t0Q5x7Qv2/Bd2tlJ5ylQ9HlxSyUyo0XkI1NHHRXbgYfounl8KBZmJCmMOqyx8O1gWcG86D8FCVbv7y2GTBy988at1enj6v9rwOgUJvyqtZXJ8me4mAGF8pPY5UgJhYAvkGPuhI+LPrqnKDS7tNMqcVIb1EUldo/Ottb6gHBY= Received: from SN6PR10MB3022.namprd10.prod.outlook.com (2603:10b6:805:d8::25) by PH7PR10MB5722.namprd10.prod.outlook.com (2603:10b6:510:126::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6222.30; Mon, 27 Mar 2023 18:55:45 +0000 Received: from SN6PR10MB3022.namprd10.prod.outlook.com ([fe80::9fc8:73bb:cc29:9060]) by SN6PR10MB3022.namprd10.prod.outlook.com ([fe80::9fc8:73bb:cc29:9060%5]) with mapi id 15.20.6222.029; Mon, 27 Mar 2023 18:55:45 +0000 From: "Liam R. Howlett" To: Linus Torvalds , Andrew Morton , maple-tree@lists.infradead.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org, Matthew Wilcox , Suren Baghdasaryan Cc: "Liam R. Howlett" , stable@vger.kernel.org, Liam Howlett Subject: [PATCH 4/8] maple_tree: remove extra smp_wmb() from mas_dead_leaves() Date: Mon, 27 Mar 2023 14:55:28 -0400 Message-Id: <20230327185532.2354250-5-Liam.Howlett@oracle.com> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20230327185532.2354250-1-Liam.Howlett@oracle.com> References: <20230327185532.2354250-1-Liam.Howlett@oracle.com> X-ClientProxiedBy: YT4PR01CA0343.CANPRD01.PROD.OUTLOOK.COM (2603:10b6:b01:fc::15) To SN6PR10MB3022.namprd10.prod.outlook.com (2603:10b6:805:d8::25) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SN6PR10MB3022:EE_|PH7PR10MB5722:EE_ X-MS-Office365-Filtering-Correlation-Id: 39bcb855-def3-44f4-c474-08db2ef4df5e X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: SoT9U2NSh9TZIFx6IE+K7PsaXkRVc+V11xyg7Ogn3raqP/k0X9M6crSXpSNl/Hjlurf4Q1G23iqLSnLZcAhTKXSa9zHrN7STUyytNVmT6qzXn42186y6QEiSbY+B52D5rCRj3oao+qBaEhDiQQganlYtLEkLkuLq9RrfMEnttOn6O1deEOdf5mQIzosR5J8ffTyTVAZeEj6S8/Htc9bzzHJdMXB8lxF0liFDumv9mgtRR6P+2xUdG8JJAYILUhqL46p/DlbreKrfuLRT59AfF7noMN7LXK640YZswsYU59h6Un8KiXmNqRZvmpgYyOcAArU9qdd0WHhcS1u+oLeBQu2iQzYfEVzscZvBr8t7pW39BLozZdV0Dfd/WjSiDMNX3CuSXn2iIyezME0KOVCazZc2yUZvlEPnLXcoAyVexd+m8MMsI8NEtUrGMmOH258mUsys9TD+ZEizhBl3a5vkQ8R8W2A0TszyPZQ0oAzelHxSvwAEp4g5Ep6B2Eghlw0q1OfRTBIKuRClg7Iyx2Ns+T+ScI5yOVC2YoWs6LzWpLM= 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)(376002)(136003)(366004)(396003)(346002)(39860400002)(451199021)(2906002)(38100700002)(83380400001)(36756003)(5660300002)(41300700001)(4744005)(8936002)(86362001)(2616005)(6666004)(107886003)(110136005)(54906003)(6506007)(1076003)(6512007)(26005)(316002)(6486002)(966005)(478600001)(186003)(4326008)(8676002)(66556008)(66476007)(66946007);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: bn3UhfIR5QOLCQXOJkAi4UGlsY/5RHFvS1/pKbSf1QW0AV/bjnXdxD+SHfwlWd4xF3Hzw4XPZH1D1Vze8hpVqCK+yJudMsEW45UqlOhHEkt4wKoeoJpNeBXG44p84yQCDv6CQCOs2HzSd8KAnLCJalxKI5efhmAfiI5cMc0rm+LRHNRAoVHuB8PZRxj3N5qCXt8yaNS8qpQ/as/nIPI+L/LiDITLhTxSpMrNRFicl9BgEc2T6kbamAYN29fsrFh/mL5hIB4/loGmtoZsvFm+qHx/5qK1vWgA7fnyjZdSMjKQ8Jg1Ae08j+Snb8Gct/EGzyY/xZ9IUJzAJa8I3us82JQPHFitiokzVxysHhi3sM6iLY9Ln3puUglwvBO/2ocIBt1/ltFbL199onXpu1ZpIQjW5/CXuPY3z1RHD3LLnjYCzx4aoax5KcGUd5Mi1T3pb7CCp9zv9iOH46KOiKbLenvVz13vWQW52FOMXWH8wPhEL4Sajbt1BcUo3RTZ6hKaIz6f30oqXOqYiqQXchhzOMYQz/coqmGy6cc+sdRztoL1byRX4l4Q1kK9VUHL9f4KSq2AMXj8A9TVA4NWFJm0O+5t58X2tbZcWqk8pcS3tl6Ap2w/j8W1kc/JNfF//4EUTbnX1MMHVPlk3XE7h2ILVl+dlzYq/bmkQWo8OohFl7P+Y12rAZ+haWub+S7+zzlkyyDiH3HytSaPRvYSJEG77bj8iu15ayxjpHgxZmlLRKYpiPNW4SLAMlgAB3FLT1iKJUGPGifMvvocOJCYz+esoCUEJ6VhHmjhbFVGSoyGua+k7c8c7DjS39cXpKnZqicMleAlVHUNmQLDsn7O/sG4JN6QSItdzv8cE/v1rXAw2vT82AMnA0L3IAtWbbe5AIKtmuA3YtJoJmW1VRapalcXoVsNjYHhxOM4OSRFMUiVA5tKxQZRAKjVcfERKypFxK1D1DUHm3lMdkndoq0dX90ckMdi/ulcHmN0jWmVI7tyGJybrdjW7n5Tt11xpZZUCHf8OzBZ+8+dGAn55UpwW2qYujbQbcVcpdqIo5TD8WsPu+uWXnXHsyrn//DpZWDo9ziMLf2AQScdV4GxqCDB4aqUeO77tW61tJ0R3tg5cqcMDOJET0ZQSX1fs/rRv+tUfwBwX2PSHakxRmKbjTjO5xffGZeFYBQsWJoPygzKQQ8VcOBCeoxcNqisecDEDjc/fIvS0jxixI2oD1d69PhubGtTqTT8tIhyoxj/0MigPAK/1e9zEkicSHdkSdgyZkAohXrky/5s9x3CSHu8KmO+QJzoEcjahfaRIqAWF090Sk5lAjn8SOcueQKbleKKcB3I6dVwSxI2LVweaK1fKidFlxYDZNpFys/RTjGMLr1Yd8BOz3bTOE4yBSCRbyoe+HH7fP65yJXI3UXGdAlG8MQMvzAqyHdsoYBT2ouZ9DbQni69BI4dl2PiHiFgksNbLXQTYREIwx/AMUcCiG7j2qIPeE5/6H3XGEXHGZITSTFRAx2Ao++lu0blACyaHFodHyoPeyD/Rj/pbL2F6oGECkqEbhQEuZXqk/uAkxwT2jV08rzEOa1o/L/TAUrKVvwNtMNxl0xIhwLEGtIkb8sbnahic21pOQ== X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: InXK1xskIPbbXDKHwWrrPBz+JPwz6UZxsDjBgyo+neh3LpwnHQBKvCYc0k0mQA0c4804BEgLVrTm2/759NLj6Bo+7GzIERzH4dp87i4q0Kei4ngJXZLZ+nF/QPYvoI5gEEv4Mfv3hJ+8ft9cM6n4MDEE2iW7y9jJmt3AQMRPfndpEMB7SFCsHDqmBfDw0Vz4tGdK95GnpsaZtXWcuqgxTg2sHm27I/XsG60S6PuydyB7VS7jZn3CKS7aJ6Cw9Jm9lJ0U8UJjwFvYuehGusmaBl5k3eKTi6jtvXigP6cBy27/E70q6LA66kARezveFq1X+AnAMexKsQeQKte3/30M1qeOIgaKyOi8BBwdqEYOH9eVmFhSm14VP/xHk+EnO8rHzditTP25mKnvBsno/ikEosgObrVCj7cf5k9c4Q828FSr4/hxd3LvC9HDMHtIEL/yd8zbPLE9CWamaaGv+cDvyacAHdtnldBw9E6ZZrAOcSMCM3AvTsxlVCOKKEtBPxlSdhdAJbnOFZa/Ce6CdMBNaa7qn+SauDfIPINVYPfouGSD5bnYh0Vc0BEy0zKkwvv3OhARoHNmYP5XF5lKTr/VwQbO6KI/9qS/perV62ygNu8/9G1Byf84+a5J6ql00Q8Sfj/2DwZZqx26sFpcbjLYDGWOUG3KTTjCzHuuZu640xBEpGFcUob7uA/4wRaNYEPDGoHaAid7F4vpJNaH7z/HxHOKHJ8pNoulXzuVZjzNV76v00NFAqPnBjPzWTxmmautkQK5Dcvt8cRpPY/rw0Az8fUJMk659Q+T6LrpAadUnOBJC5/W/zfXqPo8VYxHqpaq8oRAWDR4RsH83owunedmUOSE7tZze84/nMOQbP99aSdqRZdVj5u6YhXURj33/2f6VaNY1CtLLrwtd2XMZYa+2c7rb7MkALSn+bBFhhdJT27VC5UxAI/EJSAp2hkCLXnviC9T9i5m/uO9YXa0d//z/w== X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 39bcb855-def3-44f4-c474-08db2ef4df5e X-MS-Exchange-CrossTenant-AuthSource: SN6PR10MB3022.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Mar 2023 18:55:45.8560 (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: hnWTxAq+oxSD2M6UKHRdkPHW6LkQzQoWExOZhMcdhqZT/a0HFOMQ9l3/e9g47667Vi6Z4LdR7E0RfaI2jbnwiw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR10MB5722 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-03-24_11,2023-03-27_02,2023-02-09_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 mlxlogscore=999 adultscore=0 phishscore=0 suspectscore=0 malwarescore=0 spamscore=0 mlxscore=0 bulkscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2303200000 definitions=main-2303270155 X-Proofpoint-GUID: NqQ70RbxqBlrlFEjOuhCd11A5A7kOfcM X-Proofpoint-ORIG-GUID: NqQ70RbxqBlrlFEjOuhCd11A5A7kOfcM X-Stat-Signature: 794t1n5nmn8jje31skzkoqfbb8hw9xca X-Rspam-User: X-Rspamd-Queue-Id: 628E720025 X-Rspamd-Server: rspam06 X-HE-Tag: 1679943739-121344 X-HE-Meta: U2FsdGVkX1/thgkHXEJKxX9cPzIFuko6iPHh+pOqZq7hSMFMl1TnfvIrEdXMA+Ppa/waLvgc/UsmaG0ml8iD2vM9/w/HGUXE17uoWuvgthZoHu/B5QtaGc0rXzUUgIPmcbD8PkhnTa4k5iltvpKYagu6dx0uEsdxXgL+zdmQ7Aa2UUYGzi2cOSYSOjWVk7e4V4UyGZHNCx9yby7qpF5bK2spb+o1uc7ofjeU36GDVBFm5Q/Wi0HXhz/7LI9/QMtDHvMKcuUUsBoZXzimDrkOyOlGfBy2VDn3zfgRLsLsgeZgCsgD3FCCtE+KbXxs5h9O3eoptTyQcbeDf0GG8e8hID5dvcxN0gJOBCRTm7hZxndQ3iUlmGH+rN1Goo+prSbXRS/2sxx1r1NqPnEOZtAgufkipmSQa3uyTiRWa8vG0KaG9GGcFMrKR3hcSHR0YNuGn4paiHa3PIYA1UMgb1ClC/jHMowuFSzbjYxbDjyM7oi2KYVpR75cBoioN8JfoAs41jPxPWtHGtPVKtnW3ty2IkfwChLXwkrKtSMTm9GDsHwEMyTu8LGyCwiP2BLg7cGouU1MQiQnYmvFm7PZffT8vnaZmhVE2oLiY2U7kfM9daU+qAC8tWUZc5LKRhxcxqwTRibOqMtF+Ya7W3P/5g4YQRSyoPkSnEppcl4sjyvLdCMzLpC3ItOwpLPY8m2izk3fNJgly9FETOJ/j/6W1+S+sc1wONwFiTI5JwKH1resgWKhQnENTXxA0d9/TBhPCAjGNjocU+Wbo+NzV9m8+bKGtaCAXK1inE44WTco9742vNk7rKXCqEAbXMIDb17b68KghJy10vO3NO0yWwjsseeUJKRqtB51akRk5CWNKPr+lu2SXybD6zIu4tI+vh77TOblrfVRNu3nA0Kad/GWOjAN40G8XhZQ7ub8mhWYqnGAGxkffQa20PWZfFf3LqZXjbzf/glfsIQyXL6HFaSGiPZ H1b2jLTs oHzruH7PCaeUsJXJ4J9+f3R+x4eU/Oe7e42mDcxSPiyxP41bOEefUDxJ4rOdBuTUXMf3Ewfbh1mMKBJI0S9728fxcwOMm9zo15kXBoLoAzQEsX7c+UHfBXQHrKqyJKsXIBX5k6BZ27Zy9IfLc8xxWfQwjejKV4w2XvXv2w53LkenYC7moIcGa9oTy1iWIedcc5cmVF8L/uqtq5eYOWag1wd8p6DT3zqoJttssKnhu/Mq1WHk411JuTDyZOsI0sWHGtFdiJFSnzW+s9dZD/rNWAibUnW5a37Tc4KZ/ZpQhZm6FRe+jUyqcKCyGydr7WNiuiGEh6QPhiuRpr3jDOuCvC71nH9xyqWNoyhQrVwTd8pa5Eci7OWaGkGsPmnPOO3rt4XT95IRRvg4iqs/JxntRxafBDbVUueohmlgHrzeUavCKKqpHqQXVOf/wnh0xXfbBfU7RS9sFR3JqFHBRVQGlh/0ccstD0MTZEvkoqDuXMOEVvhy+1niIndAeFM42hDjUjtQ9sWUMpPE2TH/BgHJvtnPyWg== 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" The call to mte_set_dead_node() before the smp_wmb() already calls smp_wmb() so this is not needed. This is an optimization for the RCU mode of the maple tree. Link: https://lkml.kernel.org/r/20230227173632.3292573-5-surenb@google.com Fixes: 54a611b60590 ("Maple Tree: add new data structure") Cc: stable@vger.kernel.org Signed-off-by: Liam Howlett --- lib/maple_tree.c | 1 - 1 file changed, 1 deletion(-) diff --git a/lib/maple_tree.c b/lib/maple_tree.c index 44d6ce30b28e..3d5ab02f981a 100644 --- a/lib/maple_tree.c +++ b/lib/maple_tree.c @@ -5517,7 +5517,6 @@ unsigned char mas_dead_leaves(struct ma_state *mas, void __rcu **slots, break; mte_set_node_dead(entry); - smp_wmb(); /* Needed for RCU */ node->type = type; rcu_assign_pointer(slots[offset], node); } From patchwork Mon Mar 27 18:55:29 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Liam R. Howlett" X-Patchwork-Id: 13189966 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 8FD7FC6FD1D for ; Mon, 27 Mar 2023 19:14:52 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 189FA900003; Mon, 27 Mar 2023 15:14:52 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 13B2B900002; Mon, 27 Mar 2023 15:14:52 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id EF5C2900003; Mon, 27 Mar 2023 15:14:51 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0010.hostedemail.com [216.40.44.10]) by kanga.kvack.org (Postfix) with ESMTP id DE9F6900002 for ; Mon, 27 Mar 2023 15:14:51 -0400 (EDT) Received: from smtpin13.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay01.hostedemail.com (Postfix) with ESMTP id AF30E1C6364 for ; Mon, 27 Mar 2023 19:14:51 +0000 (UTC) X-FDA: 80615630382.13.67CC2B4 Received: from mx0a-00069f02.pphosted.com (mx0a-00069f02.pphosted.com [205.220.165.32]) by imf06.hostedemail.com (Postfix) with ESMTP id 4B3BC18000D for ; Mon, 27 Mar 2023 19:14:48 +0000 (UTC) Authentication-Results: imf06.hostedemail.com; dkim=pass header.d=oracle.com header.s=corp-2022-7-12 header.b=2Wna5Yw1; dkim=pass header.d=oracle.onmicrosoft.com header.s=selector2-oracle-onmicrosoft-com header.b=FdDTCwPp; arc=pass ("microsoft.com:s=arcselector9901:i=1"); spf=pass (imf06.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-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1679944488; 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=Ya0OSxyyiULQwyiXZ56pyELwM2Q/Ve134O6hzHHQq9o=; b=ede62SPzaTeprSHvL8gJJZhAyi06foyX3NA6RvzXybRMGKwWc1c/PkGPBQHg5fc+g3s7Tp lSBKgEQNyRVFkqYqwHSXPc0rAC0ryoAlxWF5Qun7qWymgeCmW/mTBi4bITTm82x0mwkCxa 7T9VHdy9OKOaZ5WNWgoJivfXOcLWcrg= ARC-Authentication-Results: i=2; imf06.hostedemail.com; dkim=pass header.d=oracle.com header.s=corp-2022-7-12 header.b=2Wna5Yw1; dkim=pass header.d=oracle.onmicrosoft.com header.s=selector2-oracle-onmicrosoft-com header.b=FdDTCwPp; arc=pass ("microsoft.com:s=arcselector9901:i=1"); spf=pass (imf06.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-Seal: i=2; s=arc-20220608; d=hostedemail.com; t=1679944488; a=rsa-sha256; cv=pass; b=fCzZUosAEgCvoBcJSIC9vkXGL9N1N4I27GNVNHgjN6oXqvarEwuTHcRJPJOvp1ybMGXcrx tVL7KsmATfhB6JOP6/q7ZTcgvXOkuqLH6IU5xKldIMGBj6QbvGJgY6dPPBPlXYx66WbnR3 s9kQ08KtQ8VQcO7Gyw9rDKkGY/Yh2Sg= 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 32RJ57R4010731; Mon, 27 Mar 2023 19:14:43 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-2022-7-12; bh=Ya0OSxyyiULQwyiXZ56pyELwM2Q/Ve134O6hzHHQq9o=; b=2Wna5Yw1p8Nr4zJ4uqqZrcmhCDhAe6DvJ/6c8zry3LrE5etlNclqiFrVfJnAp++F+Z8A 1znGPn10B0LH0Hxu29nKec/CbyedEHZPCArOfPJ1j44XJs/WuXQHKyT3D1qCemVZRfLj nzgz84ubPJblIUqza/5jK7AmmYvK+UbP+FoXboO5a69Q2H1FmGzn2M/tdaJhskcOeXbg PO/bxlm254oC0wxLjrKxm+JNAMDix9u1HNCXC1Imbh6jcaAlajUUfuQpD9v4E/WRji5W Kl0WDM5pJWVs3uxnhQrADZFOlhwWy/d99Yj+LUe9gj1W8cS5hpaTR8BJcUlRybubXv5I vg== Received: from phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta02.appoci.oracle.com [147.154.114.232]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3pkgywr171-13 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 27 Mar 2023 19:14:43 +0000 Received: from pps.filterd (phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com [127.0.0.1]) by phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com (8.17.1.5/8.17.1.5) with ESMTP id 32RISia3027753; Mon, 27 Mar 2023 18:55:50 GMT Received: from nam12-bn8-obe.outbound.protection.outlook.com (mail-bn8nam12lp2170.outbound.protection.outlook.com [104.47.55.170]) by phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 3phqd5ceft-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 27 Mar 2023 18:55:50 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=dXL7O44HLqcLUwtiwIRE/3M5uPN6Q/SkYKlrSZy8jl2Su7/s+fsUQJZOmohJSh70ORSk/JCKum5OhdQyNPrkAElnK29nHJSoco+HaezP4zA207HJlaqyjbiz9Oe8So3wLYQmPx8S5pyQzQks71YNi5qUpyLsb3lUbDCa2oMS5zcYwZPN4SL638Ewa/eoozzQ4HIBNGlU+mFkku8U0fOXP+3s7N8106N39qCWDLHVMlbMNk8hI3H4YmiOR7pQubOJtHRSEnFeW1j8htP++SYMed9XA0DIMP5D6iNuaM4ReKTV4TPpq8QutFe2GeGgw/RO+aMVWQKmQQ+bWZswyJKORw== 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=Ya0OSxyyiULQwyiXZ56pyELwM2Q/Ve134O6hzHHQq9o=; b=CPdqH/NM1p1DzPXnSpMQNQYIPSsLBxi1NfFzpflExYJ8CbgpTiUJ9YCmwgNL4plBwnyI8mAwZQs1Fkha+NETuVp5obbrgcOK0Loc4OaNwD5BuhiREJVluvfWKNu0koWA3XR/zgA5529CYp8k+SOH1CJgGx0uLBsS3yUSzyMgkS3fmwHGXnCGNekjECY5liuvo0qh43DvG5vbIZn+4z4+EThLF4r0qGUz5Kcy2cxC6pDmXnAtpDxpPRdtmBfb0rIVq+Wh26bCOhujWCLeFvFE+yKXRYJKg3Al37aTnRuFDMEyJGk2pNXvvsaVDXYjDWF2pZfoeSiGHxs9V5IyfiSwQg== 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=Ya0OSxyyiULQwyiXZ56pyELwM2Q/Ve134O6hzHHQq9o=; b=FdDTCwPpU5uz5DiPQY27nQWs9OSu+HaPB2yKae9S+3EDAPWpsCFZ/JZ/xAx38h1F/ky02R+Pc5zqARmIzdArGmMzw+ilpUyzShspFqO7xhXRu7iEZAl0cp3QSDoBPOh/ZvifGvAihDIeAXxbns1NSv9T5+mzTf4lRjf9whKE3Uw= Received: from SN6PR10MB3022.namprd10.prod.outlook.com (2603:10b6:805:d8::25) by PH7PR10MB5722.namprd10.prod.outlook.com (2603:10b6:510:126::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6222.30; Mon, 27 Mar 2023 18:55:48 +0000 Received: from SN6PR10MB3022.namprd10.prod.outlook.com ([fe80::9fc8:73bb:cc29:9060]) by SN6PR10MB3022.namprd10.prod.outlook.com ([fe80::9fc8:73bb:cc29:9060%5]) with mapi id 15.20.6222.029; Mon, 27 Mar 2023 18:55:48 +0000 From: "Liam R. Howlett" To: Linus Torvalds , Andrew Morton , maple-tree@lists.infradead.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org, Matthew Wilcox , Suren Baghdasaryan Cc: "Liam R. Howlett" Subject: [PATCH 5/8] maple_tree: fix write memory barrier of nodes once dead for RCU mode Date: Mon, 27 Mar 2023 14:55:29 -0400 Message-Id: <20230327185532.2354250-6-Liam.Howlett@oracle.com> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20230327185532.2354250-1-Liam.Howlett@oracle.com> References: <20230327185532.2354250-1-Liam.Howlett@oracle.com> X-ClientProxiedBy: YT4PR01CA0373.CANPRD01.PROD.OUTLOOK.COM (2603:10b6:b01:fd::15) To SN6PR10MB3022.namprd10.prod.outlook.com (2603:10b6:805:d8::25) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SN6PR10MB3022:EE_|PH7PR10MB5722:EE_ X-MS-Office365-Filtering-Correlation-Id: 00c2be14-01e0-4acc-2195-08db2ef4e0e8 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 2oj127m4CD84/+/FkOXXBGsh1WDc8IW4EeTSEcCs8n6vcbKQJClIQZpvEnz/fwHwVv/crL0oapA+OL9mtN/fbifefLRJ45opE6C4CodN+lV/3NjwPASf+KUaHf/nAHGnd9h000Yc352tnlOr0MmviQedqOKlNnzNG+nboU07ecVU8NCvYMSJjXAZOY+ytt5b1n4jWfQKNMGraJalWJzGg1hyhFz9mZe90UV6zlAYSlef8GP3+Qg+4W8HV+UUL7PhwGqKJYGA7qWCVfAqBUHxMTWjkb9XPLsXOby/NR9kVaY28iOb1AqII9H74YQRpk6Myk4req3PphtvqJ7ARPbO5SantDGJku3ThjTYlEcwmh23EpPjFwxnkfX8MIplB95zfmF76Dlao/A+RP8sPS9Gpqh2vAK2McCsIvf/9NmKXBG+U3Hkj6rzE1zEZXRiGYzPfUd9hJOFb1pJfL1TesdWPTXqfs7jSt80jKGDrzjnl/5+miQ+VUz+DDe/clAAbPlG9unIbCyhD+dwW7oFrSUyNuYAI0yoFacfose0xfAtpS8= 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)(376002)(136003)(366004)(396003)(346002)(39860400002)(451199021)(2906002)(38100700002)(83380400001)(36756003)(5660300002)(41300700001)(8936002)(86362001)(2616005)(6666004)(107886003)(110136005)(6506007)(1076003)(6512007)(26005)(316002)(6486002)(966005)(478600001)(186003)(4326008)(8676002)(66556008)(66476007)(66946007);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: iynNyDARCq8bCZabbAWbXkho2aGvb/rLlU8ernIgbjVtRAqSkcOrgCFbJJBHmtD6wxubqZGcy6eY/rou+nBeBooBYr4wPkU4XOZTCaULnfoTP8EBjVL9WHbabZfoVzxROAOG5UTUQGUULyLydje0rsHw6tEPy+27gwhVHPKZRDVvO1gIlEVxtfZ12+BoXr/c4Q6DNRWRqEGFgqXaAhmbtYU90RWqWqSYcyw5mp+wf1Q+wfZ1BQyw1Hk3G0gJcn36HKYgrYA3Xb9fHhymM1+ajuYI/k/b9exH2P0ESwmXeneNpTLjsdBCb5IyofoL5M/nK5q5DjL0IvLCGFBK8DvLO/VVhJwaYUxnmlh4PVuI6vMbeuEdqNSQ04YBoFOmEVjuQcoX7SbVA4vLonRBPk/sEAO2AMUpPgWxGkA/buO2BrzI2eUHW1/bbtSxrheCeHAu/AVUSwtJMOk2pqU7Xo8PrQ6TYF6XT3x2WX632rqP2aLQCxkeLYmGOvqqM+sIun/VUW7E/RURgCAM5diqAzQ+v1aQFo5HOyQ7o4BHrwcAa8dLLGqdLWUiIavfTedw/ywj9xCfJNsAKOxOKWcJbjzvmVXfg6/vIpHdYm8V6XZDaUnSntW2uJen6gfeocjnqaeRIeIP3Olel6n9m09fv3xLU7Z8q+V7lwG25ZfNniz4QJlUkXMm1tNasIXAXZeS0wXI5sSUsuA1yq6Qx96wdHxHjmw0fEErn+DThX7FxGxJcmUXglfGtIJQ7VSB1n2f7GZlrscjocbQQLSZmL+pfXpcBrce8YuOr2ezi5fFyZRQSHkRxUOZrMYJW+Vlp2Mj4tifbakDQSGFZmW/8naR3t3/iGYNsPMphcSxtKtlCi61jgpJEJyMTRtevsAT5FIjZE7x+l1k34YmGgG3tZlxldM6ecDCj/5oWKJUosCzA05dLc5prz8svFrf/3PAoce8tM4C90LQYbe2BvOEe7kQSjtroH3fno5nd2mnQm6yKlHZnp/WacNLZv1IB6HAFav40Y6KkUGGWGKxeJ7qrdf75e+WXtd5dPzI7qawMlcYtP5+QJjQQ5ZjbdTTIkj1Of+lq3LQEgptTkfPAiubKpdCHorEJIsse2eZC4CtYZwsrYuNaJ64oFgY/6fTFL/Q14YLGDKWLdi8JX95XgF297IUeZ5B35+Kp2U+ZGsUq58z0FTbcBosMOedo9PrtxukiD1FxIuwVS4Dxxyt1jNpHcrBDBi3S/jCiMG6boXxY8vq3WIwrS8PaRpcC0+q89Pw3qQ4zOjB+jHWwiNcXv4zPKFl9kaZ2BLMSzfKR89mcckpgB4aiG4IReYD+7w7klQAUljqTEw2g2Rd8lQBF5tE6CBZSjDHS5SR7LgkI0Ian5N1ZdNEwx0d1nZnq62U6DuHAeG7bvp1NCOV0s7HBOqFXihZpcDsG7/H+DQDsRRXlrTQOV2D1ESffYSCZAD8/A7NDWxUv1XMxO8EyXf+srRwH9U036i59T5ZlXx4ijXaAy3sHmtaArTLDwcfPjPtb5a2l9tRNYFmjBQ1s2po5IHUvs4JrfqqNKmr7KeGHR9ekZXV179FypnJZOpljoJalS1p4oO+MpKulIQlqMEB9FUgL1FXHzrGZg== X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: 3h0fuprnE4dhUCslft1cHXQYSmLQ3JKXW5yFdEaNlaNLY5XERG9PzHM9AOWqjWXBeNo38o9X/pE0ypEC8cqCQBqVWD3j5PPgvc+f+Fauf0x8wn32xv4ZabtLnbJ7vX35IR3SxW6EkuOPazzh1sJQjKnpZFwsZYR6eYbATmO/ByYnHmFVLSsa7O2nnNAqFNvD7WiJo+ZPqfbhvaemWbzPhyNpWEC7o41v5xMfjcuAcCsO3fGQQe27BUbEwlESxFf9NEH/CcKOXa0XJUjSEjMQbiPabArLo9XFJ8p5cjRZ0+UA+brozLGG1gPQHVet6WwrJvGDD81Y2EVj9LwWdd79q6cIX5yG7OlwLyc1pVGiMI3PGDa/Hm2Nx6ASkM6V1YXPy+hCATDE64pWDoPdu/0RaVMnErMWAEUe7QRF339vSdFWi8/Tn8znZzwYyR7/pW/VD+z0ftZVHuQnZshxdI6X1VWEHWZuvPI8Nzxe+oytT/CuIzTji/u2I6bElQv4RzX9rP/DoQ43JtkgGT+RTDVMTLa2Yxv86wSmVCXrerbjn2ZRbt5gBoupJ26yqHU79C0gqsNHpzpbu4Tr6ANkhx7cxDs2u7AzWJEiwIF9Q4PEDXI933wbDTEYBtybcXTl+Nb3ZLuBh60/VOYdSGAK4UwXMJ1xV1Tp0aw+Xuc+5wXIpXdP2SZmAVHKjipzgBwEWIr+nlwrOI0ta2p9laXIxoqzLkYehuqwmYOGqMsR3gUGaJ447r4lc+oZ4QDzFgEY6RYjg6tgmIu+shTr/GbC4SFoJpRXLufJ+emGFBcagzkgd3g72j5vj3eDQ+Dd60WtO4pP1X7nG0+BctcsKUjDyf1bDXbgf061jh92/uTD9nXi3S7wr/m3V3Pz20zHLyBl+Xo4ONqsUPuu31b92mN77CWNDmre0bUgfJbL2TnpHFanUZE1u8MysKRg4+9z6FZxCWM37b2oa7uKBYXQYMnizvWWxw== X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 00c2be14-01e0-4acc-2195-08db2ef4e0e8 X-MS-Exchange-CrossTenant-AuthSource: SN6PR10MB3022.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Mar 2023 18:55:48.4468 (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: j/uFurRFOUDOhPEhFCsPfV5SCyP4TrpkroSXJhTItsiB68zPpLcebVoY1sd6qAgqrwVqf7rBmhZ+8n1msC8D8A== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR10MB5722 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-03-24_11,2023-03-27_02,2023-02-09_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 spamscore=0 bulkscore=0 malwarescore=0 mlxscore=0 mlxlogscore=999 adultscore=0 suspectscore=0 phishscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2303200000 definitions=main-2303270155 X-Proofpoint-ORIG-GUID: S2OarG3THK-cgV-7DjI3GgKrv61Lp9do X-Proofpoint-GUID: S2OarG3THK-cgV-7DjI3GgKrv61Lp9do X-Rspamd-Server: rspam05 X-Rspamd-Queue-Id: 4B3BC18000D X-Stat-Signature: d1uhyhsrmaihbum75e886sfzt19rrj8b X-Rspam-User: X-HE-Tag: 1679944488-992667 X-HE-Meta: U2FsdGVkX18JdUwR4d7eRVfwTrZYLk2p8hkMK3O8hQSHHxMPgxYgwxq4tWGjqWCpU3exKD2e87bWuj5GJcJNhfB8ozhSU0EfwcAGms82QDyT+pTHiMQpzdwCfg6qXGdGHep3oqR+x/9YuMCIeh8xQ880Dr/bOSia8G1Fy2J/pTJjC+AddYsa89UOAPJttjv1AJp9iErxSvs00NK1+UNKmDmc9PgBDzRY6QD0aOe00z2K62uhT1L5cXXHcKNs3agUzxOnRjjA9m3O9eEBayC31paAwGi+y8Mwl0Wyk+6LQzy8Xf2NGLU4GMWGoFYhD+j3B4mRqalGSPO1ktKWAVr2IUdMjNCVnZnfxLRqzIb52kq2ENwdYYJQ7E8lf5hqd5JU/7XsX16iDNzZ7RMvpFHmMpTEONFolBCsDnX3VdsABoW2QNTme/cjOZ63soJo0/SMSpKVrWWVL8Zq0V1yJDAzxxw+ne5indDHn3IdpGmLDlAs+PGNPEzBMRjNpIrqWLylchIV1YVo7hanPjAq+78lNb4JRyBkjFJGov3Wr0cExx29fTF3VGiPkjAMvaDa8q17RbpGgv9CQLuRfuTxxOkyShTqMxRg9/zoowvJx9qUoZqoPSKZb1vUx4aiRBsMXIyngnlBBQDgkuAOmmV7/ZWoCfmktf3PrpCOkarKp2X01gk04ei9iaUG9R6DT3gsP4APure9kxp4LKIpF+V4VgAHydwUwGeF8EKwIFzK1FGm9USrgwypISR56pItGixNumiIGNQ59EWnxaEl2ggYKoTHjyAmqHyadrhuJo8dHztCl1DvRC2KE4Oo8gEFfuZEN1lPUcpaKf7ONJ083rlST9Lm7CRRxUnk+SdXn4uHbP2rONpVinyjySEpMxLfGYcMhQ6cXbutwZx1uDoAp1VlH3uHRddhNwFUiaV42WsCGtOjnzXVC70aJfJzOXqnk4PLHZUuX78ir/E5xHTyYNCK5Gk xkpZXhd6 QMkaoRIAn2Us8ZwtB0W31FtaJd81IuzaTBvJkL1ThBFd0PeMHoyIDxb7Uy3Y1iXZtGrs5YW7RTOZRWM8vdyZhTjK6NC9DfnFO2U5HRWqjfeq64RpNU0lpcYy6sHs3sbmBUf9T2XcZpf5pWmseBwZznuFRI8l/kk0rF837fNVYKQH0CV+beXA42KzvM7WpI2MwHAEMeyI/Nqzm4f4VnQ1BqU7cGes1GnDdDbjTCWuMjBI0livQOsRuzMN/wcn0dDPt53mGxc4ezRi0+4j5CAGStqk7D3OpbCFbQ8v0udrJ4yNzmtl/oAzCEjfnfMGL6QuIY9Z4RYgC1rhkYAA49ELM2AMrnoJ0JaJ/49ZyV8mm22KTrC9uodb94Qb9KMSvRJVtvoS8cGbMIJGV8aDOfKgrGqkBMZGu5bXUi2ghWs7r1wX2X5GS9P8x08JUDNbGtmBRqtPpzZr91A8ADtxNOchhmNX/solVQx49r6W1mU/rP0DOvtc2FwCXHqko8QnD0uA9fdvMQuUG51NgYEbwCtQvnti2bVnqRCI0vJijCebZAatW4jR6tLAYIX2zZMTw/Jz6408zGPmpYbcGVS4= 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: During the development of the maple tree, the strategy of freeing multiple nodes changed and, in the process, the pivots were reused to store pointers to dead nodes. To ensure the readers see accurate pivots, the writers need to mark the nodes as dead and call smp_wmb() to ensure any readers can identify the node as dead before using the pivot values. There were two places where the old method of marking the node as dead without smp_wmb() were being used, which resulted in RCU readers seeing the wrong pivot value before seeing the node was dead. Fix this race condition by using mte_set_node_dead() which has the smp_wmb() call to ensure the race is closed. Add a WARN_ON() to the ma_free_rcu() call to ensure all nodes being freed are marked as dead to ensure there are no other call paths besides the two updated paths. This is necessary for the RCU mode of the maple tree. Link: https://lkml.kernel.org/r/20230227173632.3292573-6-surenb@google.com Fixes: 54a611b60590 ("Maple Tree: add new data structure") Signed-off-by: Liam R. Howlett Signed-off-by: Suren Baghdasaryan Signed-off-by: Andrew Morton --- lib/maple_tree.c | 7 +++++-- tools/testing/radix-tree/maple.c | 16 ++++++++++++++++ 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/lib/maple_tree.c b/lib/maple_tree.c index 3d5ab02f981a..6b6eddadd9d2 100644 --- a/lib/maple_tree.c +++ b/lib/maple_tree.c @@ -185,7 +185,7 @@ static void mt_free_rcu(struct rcu_head *head) */ static void ma_free_rcu(struct maple_node *node) { - node->parent = ma_parent_ptr(node); + WARN_ON(node->parent != ma_parent_ptr(node)); call_rcu(&node->rcu, mt_free_rcu); } @@ -1778,8 +1778,10 @@ static inline void mas_replace(struct ma_state *mas, bool advanced) rcu_assign_pointer(slots[offset], mas->node); } - if (!advanced) + if (!advanced) { + mte_set_node_dead(old_enode); mas_free(mas, old_enode); + } } /* @@ -4218,6 +4220,7 @@ static inline bool mas_wr_node_store(struct ma_wr_state *wr_mas) done: mas_leaf_set_meta(mas, newnode, dst_pivots, maple_leaf_64, new_end); if (in_rcu) { + mte_set_node_dead(mas->node); mas->node = mt_mk_node(newnode, wr_mas->type); mas_replace(mas, false); } else { diff --git a/tools/testing/radix-tree/maple.c b/tools/testing/radix-tree/maple.c index 958ee9bdb316..4c89ff333f6f 100644 --- a/tools/testing/radix-tree/maple.c +++ b/tools/testing/radix-tree/maple.c @@ -108,6 +108,7 @@ static noinline void check_new_node(struct maple_tree *mt) MT_BUG_ON(mt, mn->slot[1] != NULL); MT_BUG_ON(mt, mas_allocated(&mas) != 0); + mn->parent = ma_parent_ptr(mn); ma_free_rcu(mn); mas.node = MAS_START; mas_nomem(&mas, GFP_KERNEL); @@ -160,6 +161,7 @@ static noinline void check_new_node(struct maple_tree *mt) MT_BUG_ON(mt, mas_allocated(&mas) != i); MT_BUG_ON(mt, !mn); MT_BUG_ON(mt, not_empty(mn)); + mn->parent = ma_parent_ptr(mn); ma_free_rcu(mn); } @@ -192,6 +194,7 @@ static noinline void check_new_node(struct maple_tree *mt) MT_BUG_ON(mt, not_empty(mn)); MT_BUG_ON(mt, mas_allocated(&mas) != i - 1); MT_BUG_ON(mt, !mn); + mn->parent = ma_parent_ptr(mn); ma_free_rcu(mn); } @@ -210,6 +213,7 @@ static noinline void check_new_node(struct maple_tree *mt) mn = mas_pop_node(&mas); MT_BUG_ON(mt, not_empty(mn)); MT_BUG_ON(mt, mas_allocated(&mas) != j - 1); + mn->parent = ma_parent_ptr(mn); ma_free_rcu(mn); } MT_BUG_ON(mt, mas_allocated(&mas) != 0); @@ -233,6 +237,7 @@ static noinline void check_new_node(struct maple_tree *mt) MT_BUG_ON(mt, mas_allocated(&mas) != i - j); mn = mas_pop_node(&mas); MT_BUG_ON(mt, not_empty(mn)); + mn->parent = ma_parent_ptr(mn); ma_free_rcu(mn); MT_BUG_ON(mt, mas_allocated(&mas) != i - j - 1); } @@ -269,6 +274,7 @@ static noinline void check_new_node(struct maple_tree *mt) mn = mas_pop_node(&mas); /* get the next node. */ MT_BUG_ON(mt, mn == NULL); MT_BUG_ON(mt, not_empty(mn)); + mn->parent = ma_parent_ptr(mn); ma_free_rcu(mn); } MT_BUG_ON(mt, mas_allocated(&mas) != 0); @@ -294,6 +300,7 @@ static noinline void check_new_node(struct maple_tree *mt) mn = mas_pop_node(&mas2); /* get the next node. */ MT_BUG_ON(mt, mn == NULL); MT_BUG_ON(mt, not_empty(mn)); + mn->parent = ma_parent_ptr(mn); ma_free_rcu(mn); } MT_BUG_ON(mt, mas_allocated(&mas2) != 0); @@ -334,10 +341,12 @@ static noinline void check_new_node(struct maple_tree *mt) MT_BUG_ON(mt, mas_allocated(&mas) != MAPLE_ALLOC_SLOTS + 2); mn = mas_pop_node(&mas); MT_BUG_ON(mt, not_empty(mn)); + mn->parent = ma_parent_ptr(mn); ma_free_rcu(mn); for (i = 1; i <= MAPLE_ALLOC_SLOTS + 1; i++) { mn = mas_pop_node(&mas); MT_BUG_ON(mt, not_empty(mn)); + mn->parent = ma_parent_ptr(mn); ma_free_rcu(mn); } MT_BUG_ON(mt, mas_allocated(&mas) != 0); @@ -375,6 +384,7 @@ static noinline void check_new_node(struct maple_tree *mt) mas_node_count(&mas, i); /* Request */ mas_nomem(&mas, GFP_KERNEL); /* Fill request */ mn = mas_pop_node(&mas); /* get the next node. */ + mn->parent = ma_parent_ptr(mn); ma_free_rcu(mn); mas_destroy(&mas); @@ -382,10 +392,13 @@ static noinline void check_new_node(struct maple_tree *mt) mas_node_count(&mas, i); /* Request */ mas_nomem(&mas, GFP_KERNEL); /* Fill request */ mn = mas_pop_node(&mas); /* get the next node. */ + mn->parent = ma_parent_ptr(mn); ma_free_rcu(mn); mn = mas_pop_node(&mas); /* get the next node. */ + mn->parent = ma_parent_ptr(mn); ma_free_rcu(mn); mn = mas_pop_node(&mas); /* get the next node. */ + mn->parent = ma_parent_ptr(mn); ma_free_rcu(mn); mas_destroy(&mas); } @@ -35369,6 +35382,7 @@ static noinline void check_prealloc(struct maple_tree *mt) MT_BUG_ON(mt, allocated != 1 + height * 3); mn = mas_pop_node(&mas); MT_BUG_ON(mt, mas_allocated(&mas) != allocated - 1); + mn->parent = ma_parent_ptr(mn); ma_free_rcu(mn); MT_BUG_ON(mt, mas_preallocate(&mas, GFP_KERNEL) != 0); mas_destroy(&mas); @@ -35386,6 +35400,7 @@ static noinline void check_prealloc(struct maple_tree *mt) mas_destroy(&mas); allocated = mas_allocated(&mas); MT_BUG_ON(mt, allocated != 0); + mn->parent = ma_parent_ptr(mn); ma_free_rcu(mn); MT_BUG_ON(mt, mas_preallocate(&mas, GFP_KERNEL) != 0); @@ -35756,6 +35771,7 @@ void farmer_tests(void) tree.ma_root = mt_mk_node(node, maple_leaf_64); mt_dump(&tree); + node->parent = ma_parent_ptr(node); ma_free_rcu(node); /* Check things that will make lockdep angry */ From patchwork Mon Mar 27 18:55:30 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Liam R. Howlett" X-Patchwork-Id: 13189946 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 554A2C76195 for ; Mon, 27 Mar 2023 18:56:08 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 45733900004; Mon, 27 Mar 2023 14:56:07 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 406BA900003; Mon, 27 Mar 2023 14:56:07 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 27FEF900004; Mon, 27 Mar 2023 14:56:07 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0013.hostedemail.com [216.40.44.13]) by kanga.kvack.org (Postfix) with ESMTP id 146E5900002 for ; Mon, 27 Mar 2023 14:56:07 -0400 (EDT) Received: from smtpin10.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay06.hostedemail.com (Postfix) with ESMTP id D5B5FABAC3 for ; Mon, 27 Mar 2023 18:56:06 +0000 (UTC) X-FDA: 80615583132.10.453B2EC Received: from mx0a-00069f02.pphosted.com (mx0a-00069f02.pphosted.com [205.220.165.32]) by imf27.hostedemail.com (Postfix) with ESMTP id 59C8A40011 for ; Mon, 27 Mar 2023 18:56:03 +0000 (UTC) Authentication-Results: imf27.hostedemail.com; dkim=pass header.d=oracle.com header.s=corp-2022-7-12 header.b=1QP6aIqM; dkim=pass header.d=oracle.onmicrosoft.com header.s=selector2-oracle-onmicrosoft-com header.b=LTRrM+wV; spf=pass (imf27.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-Seal: i=2; s=arc-20220608; d=hostedemail.com; t=1679943363; a=rsa-sha256; cv=pass; b=4hLXTnL6NVV4b6HxCgty3hHrCz4EoFabTGQGX7lxXLnpgd16cyzC1jkiqDNGl6+afzqUvL uWkxtqH3ncu63qWbrnsMufbympV0z9jQligHHBlA7G6Q+y+4Hota1/rpCtW769Hf+BFS8R NRRu4r3E+SA6Pj18fqLqvgSYp7wSqQQ= ARC-Authentication-Results: i=2; imf27.hostedemail.com; dkim=pass header.d=oracle.com header.s=corp-2022-7-12 header.b=1QP6aIqM; dkim=pass header.d=oracle.onmicrosoft.com header.s=selector2-oracle-onmicrosoft-com header.b=LTRrM+wV; spf=pass (imf27.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=1679943363; 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=JfFU47Tty7dlR78n4RVrbx+u99E2UUhFZGnQs4qzgQo=; b=cEgjjkTxFSdvTeZjsISsEdW2EKc3HGgkhPZg3HKtBp/4y8CJ0AluBgfGiWp4CktD+D/lXT +mcroQ0ZH0rkCHcc0Nd2pvKHzjCiROQFRMECfCnfMI5auWXdX2zRmf6/+R7BIUbCLZevK+ wclspWGRpzIS2S0tlA68G9C34R7nD0U= 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 32RIoaUD029000; Mon, 27 Mar 2023 18:55:53 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-2022-7-12; bh=JfFU47Tty7dlR78n4RVrbx+u99E2UUhFZGnQs4qzgQo=; b=1QP6aIqMXaD7LMjiODgC+Mw98pBdr/Co9ZS9XYtkkMd6FedJ+MYGCiJwypC1WdOe0w3h R4s6LcIdJiTrXqtOi85ZVI7eUnt4DzCqJWOw8Em880JCwGPDq76hcVQHwuLTtfuuKFqW pyqEIy4XkflW+Nnl5lAqeuDvBDDE/Nd+XVHu9TOHpQkt/44XePIDFHEXVbCCBxGvIIde A2IlRmcBs3juDJHJq/1GtkDnb7AIQsMANrjiwo2R9PchQvb11+kVvsVxNNqSn0lKSUt3 KQbs57Wz3yTRJfNlJpgA80CfirXo4GhH9ZOp6LZIZDH11PAqNjA08uWrXgaKgtQ9rKWf hQ== Received: from iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta02.appoci.oracle.com [147.154.18.20]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3pkgsa00f4-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 27 Mar 2023 18:55:53 +0000 Received: from pps.filterd (iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (8.17.1.5/8.17.1.5) with ESMTP id 32RHrF05032248; Mon, 27 Mar 2023 18:55:52 GMT Received: from nam12-bn8-obe.outbound.protection.outlook.com (mail-bn8nam12lp2176.outbound.protection.outlook.com [104.47.55.176]) by iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 3phqdd4vub-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 27 Mar 2023 18:55:52 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=UPpDZIVeYU+nNrpGzCgoSyhY6fmIyWddHH+tYyqPnekK6vJ+BNTddth4alSwoZ+5lhL9Pwsk3BwtzxSGbtt0o9+lQ0SZta2Q9DgQvjN1zym3LBwrhBXneKy8dtYJOwuBHVE1ElZxpS9zkeTB0vJ2/Hnxu7bLbMQDkijghzIbSZ+UzSqlniBC3VEgxFMJ2BFpP1aBma0rvtS9ZQBuRd5WHFvFqeTSvdjR1Jx2Y78uw4LdiG3BPgtRJ1uA9owg/JAeicw/3Y7wMtYnztAUFDjjZcbkoU0sTvi3f+mhovTtjsx0cPnmRKLnpwnxFROCvSAA1BVddyAooWsAd0H+5u1+Eg== 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=JfFU47Tty7dlR78n4RVrbx+u99E2UUhFZGnQs4qzgQo=; b=MDlcM53H6OaU7OZ7gvWGKxpZYp8BrfbC8UfA2sJA4+TLGtwgDteCzEpEbAbC+NwRCtmUemGJUuJsO/5ry9eaE8SHab/5zMbYhsy3MJh+0XjC6E/tO0lSmRYKM2CGXUoqn7GZbBRtiaLcLMbE2C8tdYlzQ4LmFlQNagWwhXG4x1Z6dNBvyBDODCfuQIMcUN/taaL0GuKANUBGluJvDpqfBdMFTq6nQ/5kYgbybTnqjnoOCGZuhW232ntkkgIiyFfGdMjlI1XJ4sLgU/ZJoVBOzLMNVj+1ZR2hUP4wqnVWBuLwyPNUiaZ6x6Eh1wYLndcBk0o54G/P65RnBLdzo1XsxQ== 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=JfFU47Tty7dlR78n4RVrbx+u99E2UUhFZGnQs4qzgQo=; b=LTRrM+wVSkk9+PHxlnjN05toKiYcFsHlNuUJUB5xCnpnjPzAWyPTOyzke4oZ4SuPo/dB21FG5mlmEHjqrVRtf18TALhuei8jZ63/4u3cjdx42C551MNoBaRa+X+nBnbvHkVD4xYghKoxcznIG65KY6guKPep9wl03nedzWhoJHI= Received: from SN6PR10MB3022.namprd10.prod.outlook.com (2603:10b6:805:d8::25) by PH7PR10MB5722.namprd10.prod.outlook.com (2603:10b6:510:126::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6222.30; Mon, 27 Mar 2023 18:55:50 +0000 Received: from SN6PR10MB3022.namprd10.prod.outlook.com ([fe80::9fc8:73bb:cc29:9060]) by SN6PR10MB3022.namprd10.prod.outlook.com ([fe80::9fc8:73bb:cc29:9060%5]) with mapi id 15.20.6222.029; Mon, 27 Mar 2023 18:55:50 +0000 From: "Liam R. Howlett" To: Linus Torvalds , Andrew Morton , maple-tree@lists.infradead.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org, Matthew Wilcox , Suren Baghdasaryan Cc: "Liam R. Howlett" , stable@vger.kernel.org, "Liam R . Howlett" Subject: [PATCH 6/8] maple_tree: add smp_rmb() to dead node detection Date: Mon, 27 Mar 2023 14:55:30 -0400 Message-Id: <20230327185532.2354250-7-Liam.Howlett@oracle.com> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20230327185532.2354250-1-Liam.Howlett@oracle.com> References: <20230327185532.2354250-1-Liam.Howlett@oracle.com> X-ClientProxiedBy: YT4PR01CA0044.CANPRD01.PROD.OUTLOOK.COM (2603:10b6:b01:fe::19) To SN6PR10MB3022.namprd10.prod.outlook.com (2603:10b6:805:d8::25) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SN6PR10MB3022:EE_|PH7PR10MB5722:EE_ X-MS-Office365-Filtering-Correlation-Id: 0c76710f-387a-40c0-f97a-08db2ef4e229 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: v4P4BwcQ59Ku060m51Neqtfwpwu5YnWQ+oFUb+VU8+ZcaEhk4M4Bzf+C2oVwk41tmXBOpbNT44wUTDUMqCjUZEugbtYl7kapWKCbXE+m5egTmfKzraMZ9DYqrzDhNtAmvs69t1osCObxmlO78js3J42ZXRy9V/piO9qZgl7WPPZQzS2FHcE3JQYhpeT16SqXALz6M7I7fx2t+JoN7/sHk0lP6SCL3nmIFoK8a2fWG5FVijln7mPikWTfTlGV98jPG/E804tNEF+aG4yLdngaUCCkwQfgG+0StJidfc5SqZbwU1KewDk05eAru9oT3h4cS72nE8tqqQLK1pZ4GNkP0g2eVW+NQiKV14pFOB3q3rffEMp+L629aCHDrEnZ+qgKF0No/GyZkdIB2+zaDyO7Xx5RW6S6dfWGvMGdXv/ksq8X0E3Hr7CYyCaRtt4mNUxFG90oqvMQuBWFkrs7eHC/wCyKiWPy3HXHl2RiHhnme7IO65fuQ9yiC/M4/c4aP1u6SzoYtwhvCXnW+7QYFrvP2MFom1cjMhJgKicqo5471iY= 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)(376002)(136003)(366004)(396003)(346002)(39860400002)(451199021)(2906002)(38100700002)(83380400001)(36756003)(5660300002)(41300700001)(8936002)(86362001)(2616005)(6666004)(107886003)(110136005)(54906003)(6506007)(1076003)(6512007)(26005)(316002)(6486002)(966005)(478600001)(186003)(4326008)(8676002)(66556008)(66476007)(66946007);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: qgPdoDjL3Vb08/IcTEjush9XtmG69m5zjcnGxtVpxE67dObCBvX+9aetB7UHt13mZVaiZN+bhHVFkixbp7BXQMzHKbEogUlNfylxUEGGbdwQhcn9JF1bm8td/s28pOURhuIcSNkHijEk5UyURKngLCCJ6Fkr+5JhT8L85orxX5rovGrZoYLF8cwrpA18+ewlfkJ5W+GdXf5BKOkIjpQmQdR8RrTsGXJXNCJ/Jzp6i1xeykH6gto1vda35jHlWde7gi0tolE0w6mbv+D8UlbAERFK17/tEuspPrHaD3D+QYkhTH9CFZbnj7DguJxdSWBSkXxProzZju+p57fk40n0q3RaCOqBjCUkR3NDizNOZRXiggHZ7Coz+ZZxr72g3zWJidKyQzYe95rHvWlr6MOmu8Ft5Fe2Jtpvc4Mh5dmxebQLIuzXeC6fgns46f2WPY9s5Oxg33aHUeqQPwrflDiDbFTjrYrvNUTETyQ2yJeJhd/aVcbtXh9Ifm9j4JjmxSkoVACrFIp/wOCJoL3i7Jo1tqPYlVZViiEmv1YE4v1A60tGYANGZB+WRHK84+3I8IphHzL3EZlYemmWnmLkOhMWBbLPUwK+yjJHuIyzkcuf1xn/7NrtH9E8YY6+rz3m7eFg7Z9HSgQZrVbutPqp++rEOCvE0f4NJERyzknWvd/eml23ufJoPlxG7AqKdEJ/bKgamIEOAX3kFqsGZVqbZBSpe+NGkW9DsjAUmXAZU0iLkmUCxe+Hv0a2pYOXV8c0k1tiguzGHUCVdhzXOSpYy2Gaurl23ti4PNSqalMj+ZWVYEfe/WSgJwaNPBfKkXyEyhMlbfOcYRZmakQreloab5EBYN2x8izOxwwVgvbunJcgMWQ5r4sfur95wxTBPF8/EuUvs/VBgpt3e6De3sGYIOmD7TR1pg0q7Im/RSSHRWDbKj4zgbmhwqGjSBrBKDJl6OqVHGOa4MJWKfQGFJQLL+ooUZYDl0YGllw+ur661RgiJ7W8dx5dxPX8FHQvnukPd7QVa3yO50YYhtySTB2zlsUjwk4txg2YBTfktGE53KGafLKDy/vsTickGzcDbrpQBpfeW5MXizKwmhoRhYG+fdtfBFv4eML9oEAGq/BiDM2W00xc5CHO6blBsg2JEiBY3CLoj9wraQSVWRyq8HrKrOAE6nVdZOSvdqj20GKfehBB51nznrZ31xfdUJn/T3xZXOGCysI/7CB2TsEDK6cO3TzOiONw8YmCaowF8XQfN4McQJy6EqKnUvZ6a1tSIq9FyValGeCy8aK81fp/7oeb1EW5sOOzomIzVm4+OsIYWDgZKHQnlAnA9fny3NajO9AtZIfrxSboh/boH63s0PQiiz7VhMze8oTM3ZJeJWPvP8yQOPNxYw07/Mq05pCHVSITxKxWYuvOBhFNUCEyG8t5F3mvMVW3WyBdIhXPQc7PCmyd6hdUl64lstWQurPqv6FRYVPoA9jVaZ1vegf7VnQS44Y0yXlEnKGeSH2h4iE0d15bo3yrUiz5CUl8sdmofUWtMoofpcTQFRN1rKTzhAa7gztKX+Qs28EanQlXvpEDX0XZJzZdqaqczx4MBToWTbyFcAXUlnJfIFuUUpCajAep1gE8LQ== X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: 8ggrrtl7qbNhepSMk4wFl+WtmNB3DvZBVxbb4oo9X0X6bZUi6mFZWDI2g2J8VAs7dJ6r0yO6QzNS1baOeO6n9kzL8homooU9ekTQGBGbZwrwR2eQzWkXpopZt3/2fO4f68Z1i3b7L1RSF+ec1emzfTIUKYDm9czcovyTTZiNDt0z4h12jdNYK5+yGqhQkkZeIy1pUzIn3A49fbpzGHRQ7NuLM+tciVgNlg6NounxCEkWnBpRxP/jJ109e0nK/uE4W9ssnlmd//qZ1c7pXzJzkpgxFeLxCbXlW3ln/47GeBx2T4dhggFz5jf28sA70iWOguMwsc++08H4TfOed626VpVniQ3VQXAqThA34CAPqcS2F6fNwDaqKki+59FPVbLrXEy5bGJFQ5nkdwThOU9PTFajJvCYk/D/Rf1TdT059KsxvqaCNd4U33pr1PDWatDPZkbrtfWbUQwdg/TSR4IUlBaXaivQwM/+8fLSZAgmOamfKdqxpPwbZTy4IZpVo/mJjbMPYcTXZA5AJ139DKhYxYvA/yIHjb4pY/gMOYkxc1FBmBoQtGbw/dIXBrqQq1QrKPut63N1EkwC11RX1vAkO1P9HLNDQLOl0TlgHeKQfqtbmcsz0/v48rdKhovpyq3AiVwxYAbdLfxxnOZLw56WswKi7Ly+3EhxK3dXf9QGD7S/PhAJAmwAvVvSkaiMV1KxNsnHOkMZwAucTjdx9MVHNWMLfrZmVUw4VRe1zEqfYQcFrOWBy/E2E/Wj+dhzVO+0A/2Ra7dn2OW0w/YCouQKvUBpB9yFetK6dt2puw2LLX3xaa4TSibKiMjaOXYLkcifzumwsbB6Cm7Rv4fqhLD+eahrP1/7Sm1lS2RpzZHRwIesSvEnbJtnY5hhfVrZZwa82Qt6TIWI0BuzAkhP0DO669vaTOwftE6YKyzUS3hueY9179EuIdoZ9yzA5FtOj6M8cCU9OunN405B5A2xjwmmuQ== X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 0c76710f-387a-40c0-f97a-08db2ef4e229 X-MS-Exchange-CrossTenant-AuthSource: SN6PR10MB3022.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Mar 2023 18:55:50.5457 (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: XlxcQ2/cq0nfCnGITXRh69FFwD5xrZkj8OXP+pk+M/kqhOiWj8/0QKePIOlx7VYhI+T7kRVvTJAB8JypeKMq3Q== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR10MB5722 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-03-24_11,2023-03-27_02,2023-02-09_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 adultscore=0 bulkscore=0 spamscore=0 phishscore=0 mlxscore=0 mlxlogscore=999 suspectscore=0 malwarescore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2303200000 definitions=main-2303270155 X-Proofpoint-GUID: MYRgeADDFXDmnMbBMZ0SVXaNARkkq41C X-Proofpoint-ORIG-GUID: MYRgeADDFXDmnMbBMZ0SVXaNARkkq41C X-Rspam-User: X-Rspamd-Queue-Id: 59C8A40011 X-Rspamd-Server: rspam01 X-Stat-Signature: sh5ijsp5j9rhpm5sappoe4zznk84hyps X-HE-Tag: 1679943363-57368 X-HE-Meta: U2FsdGVkX1+nBwgrFSbh1WCGFtXNECKsaNbwzi6oH5J+QDVgmJ7DxP+sVIUmK82/UQhkb0UBw1bAPHmq6GaDU9+Kw0dLhAKqCAMVbOQcHEkjPBaFEwnbSCNxxpSX/NhZOzxCvYq2QfPV4pk1J1kvqBavkolp4gzCYb4vEXsZ38HQOrs89dX/6qMrjZ+czFof8LRFTbRVBAphEcmHAF/8NLy/zYciVjGH4TCaQ2lEG5cB64OAr2sRippuo1AgnwP8MSES6aqNdBWj2pE8rk5maX3myEugZ7Bmnv2bnHrNYBQvHVi/Jr6mkatBLiWcYB+rRMvY0EpxwEMsSO1nPy56ye+8Tfd516SJy+StTVkvSOWvdklG+SHUFvQu7uB3yWorp9NGzvKVglk8O1jBDIXHpClfawRCR22A54AcArnLPhSlO68rzvipt+whz1pFbmxJGdsiALbLgrAti4jCzF2X7aXjodd+WfwMK80pXbm4Mrn9L1S93rju8DuWZW6h/JELXV/ywt+Y9lFnWTJsPhhmk/PhwO7/QAWHuegtRFeft7ZM8+MWNetpLZtLlKyKMitQwXlIUVNfKOddh37YzJ5k7bG8YpjGzUzldL4nR6cjGYJ3gvfEWqmFdLoPll7+qKxFfj9BhdR/FxJuOSWLDwVN10kDkf3ulPZCaY3LPtyPj5/BUBFeOPVOyIxXzNF2WYO7FE3w5mqUm6Hi9jw5l0+SUaqwHrS29i+Q7NNGXHbgNCsyx4TM7Ap8r+IRI7z7BjTXtOLi6QAAok6s5yzGctFows23w3/qwujAVGEB6OjEcgzEBJrJZWUphVfBsczqTUFdBJCWlPUImG9SBpKhoKv/4cbgqTyODZapzHmsbe+cYpC/fhgxhSisXhVXglf9wGblg3jlJL49APzUrO7kkCGnFNhPMHA96bDDxWiHPiq/xSFabIk/B9cJiYYYNRBckOA8EWzOdYzpiUCBFBVIhPv UZYw7q3l iCLsQrK5nSv9Qv8V9e/F9br0eLj9iHU1HcXhnoLlt0NEE46O6/lu2Ix5DPGdaQlEENylxP3t1rBX+w/AdUVOpF8f9OAm5bft/gQqMgx78/bLX/VOyzMWk65Qs5qN4ex5UrT5C8E4LbSdO3RxiFvk5195UIq/HdRhNI1/jtDbAOxKpyI7bQQR+1XqkZt34cPJUq1ECnLy6HuPH4YjJ+EpeWZvKfCZilpIjh5SB4rjzV+C9yprVHUMCLryzJn3TGrVCnibTnfvstFurEbFPHKrKxzKAkmUQhdvbZedE4+ouWYtqgiyFiYzrnwGSzlW43x/Q7cZU5ViPCxOKKAipG7BvZyOqBJh62J4oT4ZdXnrZpdP552tBMNzyzikivLTqOgyRdRc7tmO1H7qLtxXkmYY1wz6xz5gsbz/c5bXVghICw5GczEm72VIpY6twEWHWSPjrFFRwySKU0S1EWjtQPO5bGodVSw04yqSZ1VQyj2mRH+0/uoWFmvol2vqx8sozyIDZmE00HHcwG/D4O++4FOa50N8ZMA== 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" Add an smp_rmb() before reading the parent pointer to ensure that anything read from the node prior to the parent pointer hasn't been reordered ahead of this check. The is necessary for RCU mode. Link: https://lkml.kernel.org/r/20230227173632.3292573-7-surenb@google.com Fixes: 54a611b60590 ("Maple Tree: add new data structure") Cc: stable@vger.kernel.org Signed-off-by: Liam R. Howlett --- lib/maple_tree.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/lib/maple_tree.c b/lib/maple_tree.c index 6b6eddadd9d2..8ad2d1669fad 100644 --- a/lib/maple_tree.c +++ b/lib/maple_tree.c @@ -539,9 +539,11 @@ static inline struct maple_node *mte_parent(const struct maple_enode *enode) */ static inline bool ma_dead_node(const struct maple_node *node) { - struct maple_node *parent = (void *)((unsigned long) - node->parent & ~MAPLE_NODE_MASK); + struct maple_node *parent; + /* Do not reorder reads from the node prior to the parent check */ + smp_rmb(); + parent = (void *)((unsigned long) node->parent & ~MAPLE_NODE_MASK); return (parent == node); } @@ -556,6 +558,8 @@ static inline bool mte_dead_node(const struct maple_enode *enode) struct maple_node *parent, *node; node = mte_to_node(enode); + /* Do not reorder reads from the node prior to the parent check */ + smp_rmb(); parent = mte_parent(enode); return (parent == node); } From patchwork Mon Mar 27 18:55:31 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Liam R. Howlett" X-Patchwork-Id: 13189952 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 5E627C6FD1D for ; Mon, 27 Mar 2023 19:07:53 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id F23C3900004; Mon, 27 Mar 2023 15:07:52 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id ED379900002; Mon, 27 Mar 2023 15:07:52 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id D282C900004; Mon, 27 Mar 2023 15:07:52 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0012.hostedemail.com [216.40.44.12]) by kanga.kvack.org (Postfix) with ESMTP id C442B900002 for ; Mon, 27 Mar 2023 15:07:52 -0400 (EDT) Received: from smtpin23.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay04.hostedemail.com (Postfix) with ESMTP id 80A351A086D for ; Mon, 27 Mar 2023 19:07:52 +0000 (UTC) X-FDA: 80615612784.23.AF244C1 Received: from mx0a-00069f02.pphosted.com (mx0a-00069f02.pphosted.com [205.220.165.32]) by imf19.hostedemail.com (Postfix) with ESMTP id 1A7921A0026 for ; Mon, 27 Mar 2023 19:07:48 +0000 (UTC) Authentication-Results: imf19.hostedemail.com; dkim=pass header.d=oracle.com header.s=corp-2022-7-12 header.b=2xgMlF6B; dkim=pass header.d=oracle.onmicrosoft.com header.s=selector2-oracle-onmicrosoft-com header.b=EIgRMH6u; spf=pass (imf19.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-Seal: i=2; s=arc-20220608; d=hostedemail.com; t=1679944069; a=rsa-sha256; cv=pass; b=eT4ez0KyEbyOLxMPJ0w5OMaEZGHqnlvL0MgZmgkW1cWivB/LHzL//jczPP3JfAre0alxSp XRC/Cz6nT3/PPXGJzr9khd8A0qtTcXJtEsgLbZO2qyr+PsAMV/HbaEceUHvEs9tZkTc9DE g0XVViRZWP2NYqolwq2KTJperFE1/WE= ARC-Authentication-Results: i=2; imf19.hostedemail.com; dkim=pass header.d=oracle.com header.s=corp-2022-7-12 header.b=2xgMlF6B; dkim=pass header.d=oracle.onmicrosoft.com header.s=selector2-oracle-onmicrosoft-com header.b=EIgRMH6u; spf=pass (imf19.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=1679944069; 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=l3Ziv234beX3yrE/vWwNH+Dl8Ov2kzWoTk1v5fbxVIo=; b=E35hHC5xu6yv58U8ryRjmi4PLNmcG3/YLCVjpeuhvl+rIkyZbRSuLU6FlBmYcs/ka7W6RS fhodZw/PUxExMVxW3RU+3tm0oIEDkTVP2YOCICXJyB6lTIAAPVmPbERZ6baEGpzzsIfUqU V9Psjajfo45OXC5sF+HFOgdN7SFayf8= 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 32RIoabU029000; Mon, 27 Mar 2023 19:07:43 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-2022-7-12; bh=l3Ziv234beX3yrE/vWwNH+Dl8Ov2kzWoTk1v5fbxVIo=; b=2xgMlF6BeKoCsGZ4HHVY0uQuH6NH8P/iDadJmx4ndaBkUpBgiZANp1K5HucfnCJbCKVK MZZYeX0hmnsRgS/Aes5ZtL+S18S17AQ1mzVGZsGy/PSE+446xvPkLdzaEuXHhiqbKXeg mgtyiYf6OKu3D3LvTRxdlFY9om/acUS6inVIoYxuuozUEqkXa7WBkLNKREn1l783AD5B XU9clpk2ldzhuuwMS1q82Y3n3AdKr3ypO/SJ+KW37v8JSlurkved2lPcjiRr8dNCr1Uv dKG7JMb84jKxpriWc3oucmBYXnKm7BHNwh/WzjHvOhDceIXbjY5pn31KEWoWpxvuQFj/ NQ== Received: from iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta01.appoci.oracle.com [130.35.100.223]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3pkgsa02kh-9 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 27 Mar 2023 19:07:43 +0000 Received: from pps.filterd (iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (8.17.1.5/8.17.1.5) with ESMTP id 32RIcRVu026831; Mon, 27 Mar 2023 18:55:57 GMT Received: from nam12-bn8-obe.outbound.protection.outlook.com (mail-bn8nam12lp2169.outbound.protection.outlook.com [104.47.55.169]) by iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 3phqdbvywk-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 27 Mar 2023 18:55:57 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=R5IX2K/uj2hgmwu1r64Lp95LOefm9qsy1UJf4QnGe+rnZNciHL45dRpXFYGNbKWcEbQM/quYJtGM19wTYbyGfdqxs3mNijRVK0WbiTSCuqfkh2Zh9bS8ARuYyux1DsTo0qX6kdY/wn4mOx86+Oiz1i+/0ivPd4AmIZCdslfFP/qQJ6Lkh/FkSfMJD181/vZrbgM5qJD4SD5wnVR18DhKWd/yyeTZo9vkOehafBRZmzQxzH1Gw+g5KdJvlxrSy2Amu+09BUPTe1NB+/qQ/iIuHHYgItsIs2bCvSNTi3VOYxI2zF+g8jWW95gvAhcrLb0BaaZ3o8VaqQMmUUsiYmxScw== 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=l3Ziv234beX3yrE/vWwNH+Dl8Ov2kzWoTk1v5fbxVIo=; b=a4QCyFrNhEDLSc/khWbD6m95HQNQlHVASmfOhWUaA6enA58m6+EskTrKqFT7Qd75kM2l1hjox8X4w7dsXlmfisiYMGVQbUOWXXoS6NqGKugon5DnZpV7Hgo13W5qlqlWI52SXN38wcG1uFp4wsgHOLjSeouzs1/V3D6GdVzs9OOoqNE6VFnNXCvy9fWMJYuwXnBS5Bet/0ymeTxLoo9M671jzzUcHxEWDeFo6/g5hNr6r8DNULpxKISw7AfxB0TCnmWQHzPO2xYEXICuV3FGSps3bdO7sI3qKpvHXI+mKKj4LLfqlMxz8y5uD9V1TJ9RjQOMcC6lycUf3lpMci8ECg== 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=l3Ziv234beX3yrE/vWwNH+Dl8Ov2kzWoTk1v5fbxVIo=; b=EIgRMH6u98ARMQyS66Zaf+0jEtHJAONcA7MnN/dXM6RH6lgIDpwBPEc/9/AcBWMXdE4y5nVHJq3fO6A7keZRodKkj7Q8cg4EixUNYgnTqfMsW+YNZvpY/gNm2GkR6Z1NPkXS8r4J4AFckKnYAtkOvWpjB1V+YBL3g3Ux+4qbyXI= Received: from SN6PR10MB3022.namprd10.prod.outlook.com (2603:10b6:805:d8::25) by PH7PR10MB5722.namprd10.prod.outlook.com (2603:10b6:510:126::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6222.30; Mon, 27 Mar 2023 18:55:55 +0000 Received: from SN6PR10MB3022.namprd10.prod.outlook.com ([fe80::9fc8:73bb:cc29:9060]) by SN6PR10MB3022.namprd10.prod.outlook.com ([fe80::9fc8:73bb:cc29:9060%5]) with mapi id 15.20.6222.029; Mon, 27 Mar 2023 18:55:52 +0000 From: "Liam R. Howlett" To: Linus Torvalds , Andrew Morton , maple-tree@lists.infradead.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org, Matthew Wilcox , Suren Baghdasaryan Cc: "Liam R. Howlett" , stable@vger.kernel.org, "Liam R . Howlett" Subject: [PATCH 7/8] maple_tree: add RCU lock checking to rcu callback functions Date: Mon, 27 Mar 2023 14:55:31 -0400 Message-Id: <20230327185532.2354250-8-Liam.Howlett@oracle.com> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20230327185532.2354250-1-Liam.Howlett@oracle.com> References: <20230327185532.2354250-1-Liam.Howlett@oracle.com> X-ClientProxiedBy: YT3PR01CA0075.CANPRD01.PROD.OUTLOOK.COM (2603:10b6:b01:84::15) To SN6PR10MB3022.namprd10.prod.outlook.com (2603:10b6:805:d8::25) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SN6PR10MB3022:EE_|PH7PR10MB5722:EE_ X-MS-Office365-Filtering-Correlation-Id: 4385e9c9-7ae2-4c77-d15f-08db2ef4e36b X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: DP/885f5mr3PCI/Vfylyg868Uegs/I5QID/YiXpqsRdsGPhKdQlJtZQw9OTlVNLu5H4eqzGnS+HBEiAkXc+abqi9asiMrEJwPfsRC3CWiHCpr5XmGMPRx6qWEvTA9TmoEiuhZluZPEwNRG9MmOSw4RUshuFACS4qsC5mLD6zMu7tQ6iWPwnqYDEaasL2vIX3OX7+6VpGNnbqI0/oxqUVSvnaej2i1I+3WUEX6ubjVIcFvaYcJvqfORcW7emh91erkwRBzzlL1tLOBtYCucxUJvcwoFklIesF1FPj679Mp5zMjuUVrQ4DlK0weu38E6ecHJkYbB2ECilEmWDjL6fbPFuMcz9DYvb/knRKW7w7Kz25Xbg25zw4N7pGUenZ0VGQ9IChhZnOIk8D6EUezK3H1Yyi3G9VSYO6UoPlDVJlQP4De8AHN6S46D5ltgrbQopq2uLh52u+J0tA/HPoWTVED4BDO1VJnXgKGpNdrkpKT0HJLRMDIkLZAU1M9XL2uIpuX2Mj1wmz+VP8cQcyi2oPwRv7mufeAZVCfifBA7Rza2Y= 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)(376002)(136003)(366004)(396003)(346002)(39860400002)(451199021)(2906002)(38100700002)(30864003)(83380400001)(36756003)(5660300002)(41300700001)(8936002)(86362001)(2616005)(6666004)(107886003)(110136005)(54906003)(6506007)(1076003)(6512007)(26005)(316002)(6486002)(966005)(478600001)(186003)(4326008)(8676002)(66556008)(66476007)(66946007);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: M586xTfujb5E6xE/r93dV/eWFOUPPDNdSenu4Hm9UXBGqJnEwOpVF/mNbiXj5MxF6dpwZBcX25kBSgUu3VkEwOv3Xs3VnTdXYedqyFYh2oXL52S7R92KeVkdp77jUf0fBQ6MSOC4R6OPzfrp45gyGD7QWBk57PyutL7k8QgKU25g2VVKq4JzMxFGs+d5PuI/XIjgnut5j/35pEwNPfsKqn9ALXucMiepw5H8OdxrRqg2QV7g8AMhDl9eT1hqqvLp2VyY84PGWJl7I2bWkZ6XgBBV444JRViiYfav/aAPodZElcbCs6oPF1IMh1lKeGTBX7Bz0Lbk7G8uLfsPrJFB+ZNIvhf5HMK7NNxKqynUu43CRAf3Rrckpzrbqcd/J3SsmnG4fQK7/wT7bSP8PYdCpbTwK5hxFtpb6coPre62Ref2UBvy7jmBrt0U6uGo4ZFw7vRD+KCaNvn7g56basig0HYdaMWKAG0/FX+1R9kDyCUUvlO5ptZVV0xxWEtS+o506pajWDQs4+jUV8D2yJVzOTCb7bZAeJCiWESO3p/PrVtVp+73nDg1kXBhts23OcnTygJybbr9lFJy++HikRVBCa7lTJRYrEQNL+KXxaYLrqo3ASrWa7Voj6JVzr9QpIOI9f4wnipq+oAiU7rLE1fJ4NjcKmhaljaXhpHxpiXlBg/zdOMrshE5mz10uFMoCCZ5kMl+B3HXnFOQIy9oniK8APYH8vT5EPIqZiCDFpWTJ9teuqr1+VRroTCjX9gSCfvPJryZR1+7gi8my0UE6QrHuURknAF+3FX+jEJ6SQApOX7kZ2fYiHfLaSaUStcNn6likkmqC4zOT/NO39Fb9WvqkLjgzSgXXWpYZRFJ5GMR3Af/8KYluFhCF76u0KA1I2kKg0IxZnEP/Iv/R4ab1l5UMR6/P+ELZao8/mjgmCngUOSpxFRshqJoE4ySgmh/w8s5mpgbvTYNLJOIKGj5rTiO5BWR5eug66tsucmitLlZ6Tgud/z3eTLXL2F+5lAJS1pDdl8lY41lDBzyY/kg7Xw6Agd+O4u4N2ODB27w4Ezmw1eLw11Dh8lhMV/bjNpc62ieCQJ3R+i9jq2noMz8RdIhSY74w1JKznmPg7gvs/tH5hQAtajVTQPc3i/9NoUNt2Gz6DPrNOoqu7SSNcQaCRRoOnNUy4O0aek07tjGtUuGD/lcl2kFvL/Yw3SgWQJCPoXj1dIFYCSr7p1EF+tpL1hBmqOEcdKIJewEQDe6qLx3eWK9V6IfZq4LPVMLChcnKZenksNiuHTwNFf1DUPT/YFkypHcOuru/OprH5olnrDYSU5u6lBKAIbE5NpV6R1jM1dw4h4hJsmwaNCb31iZPJQb2DjVrZaZeUhyuRUl5E3wGRC528iZExODKnj7KwbGwtezQ4h0qR/HXe4ZsS9BrKnlTMzRJ1TwjN15jBqwFp4J22wT1OrEV48yOSZSGGP09u6sSq8SrgyRgNegVKCS8iJwy2z27pBH0kAR+N2m5Sj2kWRwalhI9ZcypULFCJNakb290cm0+aHE7koAtVm9qpnD1CHZp1R6BturkpZ/EGIndvS1FdhVwOKq44W5YLOTAMUb0XoqlgImDXohUB+lI08UPg== X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: K9P5Xs8WYfz7I3aAbqPsM3hFHeHWXz1DC/Q6Jftwb0u295vXS093iGTfWuGpbBaNbTHKjUWtQzooOOSMwdEyOCgnOGRxGSGHdx0WPQIoio4NSsCuMUvwZEKIgsvqScTHyP5UcUZxHJ9a3Ljw6PuPHYkKRaZ6iBvSjVEAIhOAWR9prd/RoDIjVcz9iy0Xt1vwVJWozdIozBLvQGajBho9Y99a+86BA4UPFmsLhVAddJMRiB7PaPu1tNUVfq2NzeTahvd8pxMH1zSZnJ3L0M1NJYSbf6ih4EXQVC2jPviwWzEuws5upmcG+06A2CjKslmzjkwLPIK+MGGG8GchgYIg0vAM6Tfuoe3/PeeQk1h/RLZLyIY7UNNsHpACBofFCfyx8Bv86GILaXt4Fpm/1/i1egu77DS9/Pv3McDuJ4v+O70RAEWT7Yvcwk/5UclzVUwMkz8dQaUw1BjlhSUuLV3QgtaSd4VKlzld2JAxVSbIcWyC1ErMtKzwXmg6s06NqPofSa+XE2ceLZauiE+/f3vPgoVmeZb7OXau6lKKJJzp/azdky7X2/wEAcvm7qhAl8zrXUjFwRSceiy7xblablm7uFGOjeldTzibOZE0yrZxHLPJZ4JQV15XSq5qbircw4kvuv9W+KtFjY5cv9poFLxuIXuVBUuGi2EuXZmKnkmDV1mKf0ZwBg7xlsr4oJ6CQde4jRczekIOljOBpXXr2mRoY9wJZLgn/FabB8fVHXICS7oKgGt2DaZJhYAFSqro/DMAUpO35yujkVmzxW7TRyFSMVdRBuEw1zSoZQnpX6g93JANFioNOhMlKpblaBxMr4ud898EDTgA2wmdfR6ZxyxPwvM4FSWLp/FF75xOJ5kI1E9mZUhhJXteu0uuCluwU7MN9uVYiBLj1UnZ6pSXOqlO90P4/VhtZQ5DdGw7jOLlsGptDl8b9vTnVW16AdxNi965d0988mChJbtQflrrctxVuw== X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 4385e9c9-7ae2-4c77-d15f-08db2ef4e36b X-MS-Exchange-CrossTenant-AuthSource: SN6PR10MB3022.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Mar 2023 18:55:52.6978 (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: WlG2fRksC7GkhKfD/BKfNyh+yZkXBUoEbsHK8iChUlkfyKtr1eB2gFVQiIeyiPfHHLKUVj2w2ViB8O0rhEm17A== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR10MB5722 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-03-24_11,2023-03-27_02,2023-02-09_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 bulkscore=0 malwarescore=0 suspectscore=0 mlxscore=0 mlxlogscore=999 spamscore=0 adultscore=0 phishscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2303200000 definitions=main-2303270155 X-Proofpoint-GUID: jA7JcKBCk6vESVCfXYsYXtSGCeCqW7BR X-Proofpoint-ORIG-GUID: jA7JcKBCk6vESVCfXYsYXtSGCeCqW7BR X-Rspam-User: X-Rspamd-Queue-Id: 1A7921A0026 X-Rspamd-Server: rspam01 X-Stat-Signature: iec98ypxo83i647gw933s9ykb54qu7rk X-HE-Tag: 1679944068-606684 X-HE-Meta: U2FsdGVkX19fxSeRioN+Ks4YlIkZJ6lg4KLiLys2+POubtTcPX9H6Q+2EXMe85cx6j7i0zrXAtz+XEy/ssx2jZJdQ2+pntUJbIm3UWgx+CPCIsfVoILgTP37+/8WGO/u6DYQFAad+IJOmkHt6FfT5wvdFRMucghzF10iMPtsjcctBHEUa2ZWQCGfhMBptpuyhOhXBHx8sWQpZqy8iCVPlGxeZPIWDq97yU+dZwzlOO1vQHKT80sdyn56EiOYdW6yO536hwWobXzdTc6fdI9D0VF3bEKwTqCcnCYiCCiIiGfgE3hOmq5V4lcTboSo/Zvuz6oLkDELbTXr1aU3J8b+pwz6EonhWrxmxZ7Qz43FFTnAU1V/HpRQBwvInf2QOG4w4Dj2dx8sUUj/mVMtpmeiSZy8o0Q28wdEbsHpNLgM1qU5OtHH+Vd1Spmakr7hxkuX3ss7trY6cr3D/ZZ9qhPYslFphy4FCBbE06OSC3+6tAuCdusfeX4uYRPjv4NhgL0uZYbod7h9esfgOZTuY78kRDArXRTGBguzYTzDDyO8bqvpk54R/abYtuB9vAkBe17M+7EoANNPzjL8AasdSp6qH7d2V9rCOSaw/roDpJpsGrM8yM0hKdFrdxfwzs/2kCGsMgOn/hFePdIhb7xoyk09g/fsPcdLmh3H8SOmlUdC3apGy6BbKX2ftTZHeNO8nmeC5DObN2ShVlHodler5m/ZTswTuWcNTNVBprBKNc/wXDq15lP3wAnj5w7/Ij6r2qf7Il1km5ZQe+Tg2HkPVpgPthaRStjKkLtJBwNYb+rT6+I1lO6cqgKvB6HPs+ggoFBvc7Cuti+SiZKRpoIVIFAyb2VMlhz5CU/gcGmeuUTeeNw1Ezk+BeCO/JMDRT6FMFuik6iOXXRNri3D+1snOkI0CcD9bQEsmmfgELeIMZ9K08/m1CLlAAF3U7Y+lJUbMiqQXcTyWQpbOU0EAQhmhDh u+StBUgf jjnAvhsf4TINDSblR8lVTWcyqflw6Qps3KAcbfcFg7Nb7LrdFnCc9rroMTqOd7QBDGZ16wzwwX0KePYr1l0eSgAaQwBOHHGSJCZb8B85iegz1pNq3IV6c/Q7R8giOhN8m/hWjswPXZ9V9T/ITynLxfywcS2CD7yIt33Rg7V5bPrx2CL5NHNqqvryVJYxt9HMi8eZ/AEIO8zNTxQxsjVH9oxTyHOnazz6URqA8b8kd/M4DNUZqVmKXzhDEWjbmxkWLrYrrj91w5f5YH03HfvqDeH99VA7yYGvhYia7jRlFzqAyOnA0Y1PRYI0CFibD9y8dliazzV3ZHfBmerFmHzvOibId1FmVVxrNK3zxBrh4g3/NawK8hKKEThZdNeso/RnczsSMkbNLj0DGje2mqWf/y+n0D9oM92J6oto/SmTFSHJlV4qPex/vW5xya+qKiscSUs65wGGyXl0VyHTmJcoX5BD1OTIT6k6iKXDA3StDATDJLJa5eUviH4FI3iajrIGTu3+Kq/9QFEXF7kGfZIrmvECI+Q== 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" Dereferencing RCU objects within the RCU callback without the RCU check has caused lockdep to complain. Fix the RCU dereferencing by using the RCU callback lock to ensure the operation is safe. Also stop creating a new lock to use for dereferencing during destruction of the tree or subtree. Instead, pass through a pointer to the tree that has the lock that is held for RCU dereferencing checking. It also does not make sense to use the maple state in the freeing scenario as the tree walk is a special case where the tree no longer has the normal encodings and parent pointers. Link: https://lkml.kernel.org/r/20230227173632.3292573-8-surenb@google.com Fixes: 54a611b60590 ("Maple Tree: add new data structure") Cc: stable@vger.kernel.org Reported-by: Suren Baghdasaryan Signed-off-by: Liam R. Howlett --- lib/maple_tree.c | 188 ++++++++++++++++++++++++----------------------- 1 file changed, 96 insertions(+), 92 deletions(-) diff --git a/lib/maple_tree.c b/lib/maple_tree.c index 8ad2d1669fad..2be86368237d 100644 --- a/lib/maple_tree.c +++ b/lib/maple_tree.c @@ -824,6 +824,11 @@ static inline void *mt_slot(const struct maple_tree *mt, return rcu_dereference_check(slots[offset], mt_locked(mt)); } +static inline void *mt_slot_locked(struct maple_tree *mt, void __rcu **slots, + unsigned char offset) +{ + return rcu_dereference_protected(slots[offset], mt_locked(mt)); +} /* * mas_slot_locked() - Get the slot value when holding the maple tree lock. * @mas: The maple state @@ -835,7 +840,7 @@ static inline void *mt_slot(const struct maple_tree *mt, static inline void *mas_slot_locked(struct ma_state *mas, void __rcu **slots, unsigned char offset) { - return rcu_dereference_protected(slots[offset], mt_locked(mas->tree)); + return mt_slot_locked(mas->tree, slots, offset); } /* @@ -907,34 +912,35 @@ static inline void ma_set_meta(struct maple_node *mn, enum maple_type mt, } /* - * mas_clear_meta() - clear the metadata information of a node, if it exists - * @mas: The maple state + * mt_clear_meta() - clear the metadata information of a node, if it exists + * @mt: The maple tree * @mn: The maple node - * @mt: The maple node type + * @type: The maple node type * @offset: The offset of the highest sub-gap in this node. * @end: The end of the data in this node. */ -static inline void mas_clear_meta(struct ma_state *mas, struct maple_node *mn, - enum maple_type mt) +static inline void mt_clear_meta(struct maple_tree *mt, struct maple_node *mn, + enum maple_type type) { struct maple_metadata *meta; unsigned long *pivots; void __rcu **slots; void *next; - switch (mt) { + switch (type) { case maple_range_64: pivots = mn->mr64.pivot; if (unlikely(pivots[MAPLE_RANGE64_SLOTS - 2])) { slots = mn->mr64.slot; - next = mas_slot_locked(mas, slots, - MAPLE_RANGE64_SLOTS - 1); - if (unlikely((mte_to_node(next) && mte_node_type(next)))) - return; /* The last slot is a node, no metadata */ + next = mt_slot_locked(mt, slots, + MAPLE_RANGE64_SLOTS - 1); + if (unlikely((mte_to_node(next) && + mte_node_type(next)))) + return; /* no metadata, could be node */ } fallthrough; case maple_arange_64: - meta = ma_meta(mn, mt); + meta = ma_meta(mn, type); break; default: return; @@ -5497,7 +5503,7 @@ static inline int mas_rev_alloc(struct ma_state *mas, unsigned long min, } /* - * mas_dead_leaves() - Mark all leaves of a node as dead. + * mte_dead_leaves() - Mark all leaves of a node as dead. * @mas: The maple state * @slots: Pointer to the slot array * @type: The maple node type @@ -5507,16 +5513,16 @@ static inline int mas_rev_alloc(struct ma_state *mas, unsigned long min, * Return: The number of leaves marked as dead. */ static inline -unsigned char mas_dead_leaves(struct ma_state *mas, void __rcu **slots, - enum maple_type mt) +unsigned char mte_dead_leaves(struct maple_enode *enode, struct maple_tree *mt, + void __rcu **slots) { struct maple_node *node; enum maple_type type; void *entry; int offset; - for (offset = 0; offset < mt_slots[mt]; offset++) { - entry = mas_slot_locked(mas, slots, offset); + for (offset = 0; offset < mt_slot_count(enode); offset++) { + entry = mt_slot(mt, slots, offset); type = mte_node_type(entry); node = mte_to_node(entry); /* Use both node and type to catch LE & BE metadata */ @@ -5531,162 +5537,160 @@ unsigned char mas_dead_leaves(struct ma_state *mas, void __rcu **slots, return offset; } -static void __rcu **mas_dead_walk(struct ma_state *mas, unsigned char offset) +/** + * mte_dead_walk() - Walk down a dead tree to just before the leaves + * @enode: The maple encoded node + * @offset: The starting offset + * + * Note: This can only be used from the RCU callback context. + */ +static void __rcu **mte_dead_walk(struct maple_enode **enode, unsigned char offset) { - struct maple_node *next; + struct maple_node *node, *next; void __rcu **slots = NULL; - next = mas_mn(mas); + next = mte_to_node(*enode); do { - mas->node = mt_mk_node(next, next->type); - slots = ma_slots(next, next->type); - next = mas_slot_locked(mas, slots, offset); + *enode = ma_enode_ptr(next); + node = mte_to_node(*enode); + slots = ma_slots(node, node->type); + next = rcu_dereference_protected(slots[offset], + lock_is_held(&rcu_callback_map)); offset = 0; } while (!ma_is_leaf(next->type)); return slots; } +/** + * mt_free_walk() - Walk & free a tree in the RCU callback context + * @head: The RCU head that's within the node. + * + * Note: This can only be used from the RCU callback context. + */ static void mt_free_walk(struct rcu_head *head) { void __rcu **slots; struct maple_node *node, *start; - struct maple_tree mt; + struct maple_enode *enode; unsigned char offset; enum maple_type type; - MA_STATE(mas, &mt, 0, 0); node = container_of(head, struct maple_node, rcu); if (ma_is_leaf(node->type)) goto free_leaf; - mt_init_flags(&mt, node->ma_flags); - mas_lock(&mas); start = node; - mas.node = mt_mk_node(node, node->type); - slots = mas_dead_walk(&mas, 0); - node = mas_mn(&mas); + enode = mt_mk_node(node, node->type); + slots = mte_dead_walk(&enode, 0); + node = mte_to_node(enode); do { mt_free_bulk(node->slot_len, slots); offset = node->parent_slot + 1; - mas.node = node->piv_parent; - if (mas_mn(&mas) == node) - goto start_slots_free; - - type = mte_node_type(mas.node); - slots = ma_slots(mte_to_node(mas.node), type); - if ((offset < mt_slots[type]) && (slots[offset])) - slots = mas_dead_walk(&mas, offset); - - node = mas_mn(&mas); + enode = node->piv_parent; + if (mte_to_node(enode) == node) + goto free_leaf; + + type = mte_node_type(enode); + slots = ma_slots(mte_to_node(enode), type); + if ((offset < mt_slots[type]) && + rcu_dereference_protected(slots[offset], + lock_is_held(&rcu_callback_map))) + slots = mte_dead_walk(&enode, offset); + node = mte_to_node(enode); } while ((node != start) || (node->slot_len < offset)); slots = ma_slots(node, node->type); mt_free_bulk(node->slot_len, slots); -start_slots_free: - mas_unlock(&mas); free_leaf: mt_free_rcu(&node->rcu); } -static inline void __rcu **mas_destroy_descend(struct ma_state *mas, - struct maple_enode *prev, unsigned char offset) +static inline void __rcu **mte_destroy_descend(struct maple_enode **enode, + struct maple_tree *mt, struct maple_enode *prev, unsigned char offset) { struct maple_node *node; - struct maple_enode *next = mas->node; + struct maple_enode *next = *enode; void __rcu **slots = NULL; + enum maple_type type; + unsigned char next_offset = 0; do { - mas->node = next; - node = mas_mn(mas); - slots = ma_slots(node, mte_node_type(mas->node)); - next = mas_slot_locked(mas, slots, 0); - if ((mte_dead_node(next))) { - mte_to_node(next)->type = mte_node_type(next); - next = mas_slot_locked(mas, slots, 1); - } + *enode = next; + node = mte_to_node(*enode); + type = mte_node_type(*enode); + slots = ma_slots(node, type); + next = mt_slot_locked(mt, slots, next_offset); + if ((mte_dead_node(next))) + next = mt_slot_locked(mt, slots, ++next_offset); - mte_set_node_dead(mas->node); - node->type = mte_node_type(mas->node); - mas_clear_meta(mas, node, node->type); + mte_set_node_dead(*enode); + node->type = type; node->piv_parent = prev; node->parent_slot = offset; - offset = 0; - prev = mas->node; + offset = next_offset; + next_offset = 0; + prev = *enode; } while (!mte_is_leaf(next)); return slots; } -static void mt_destroy_walk(struct maple_enode *enode, unsigned char ma_flags, +static void mt_destroy_walk(struct maple_enode *enode, struct maple_tree *mt, bool free) { void __rcu **slots; struct maple_node *node = mte_to_node(enode); struct maple_enode *start; - struct maple_tree mt; - - MA_STATE(mas, &mt, 0, 0); - mas.node = enode; if (mte_is_leaf(enode)) { node->type = mte_node_type(enode); goto free_leaf; } - ma_flags &= ~MT_FLAGS_LOCK_MASK; - mt_init_flags(&mt, ma_flags); - mas_lock(&mas); - - mte_to_node(enode)->ma_flags = ma_flags; start = enode; - slots = mas_destroy_descend(&mas, start, 0); - node = mas_mn(&mas); + slots = mte_destroy_descend(&enode, mt, start, 0); + node = mte_to_node(enode); // Updated in the above call. do { enum maple_type type; unsigned char offset; struct maple_enode *parent, *tmp; - node->type = mte_node_type(mas.node); - node->slot_len = mas_dead_leaves(&mas, slots, node->type); + node->slot_len = mte_dead_leaves(enode, mt, slots); if (free) mt_free_bulk(node->slot_len, slots); offset = node->parent_slot + 1; - mas.node = node->piv_parent; - if (mas_mn(&mas) == node) - goto start_slots_free; + enode = node->piv_parent; + if (mte_to_node(enode) == node) + goto free_leaf; - type = mte_node_type(mas.node); - slots = ma_slots(mte_to_node(mas.node), type); + type = mte_node_type(enode); + slots = ma_slots(mte_to_node(enode), type); if (offset >= mt_slots[type]) goto next; - tmp = mas_slot_locked(&mas, slots, offset); + tmp = mt_slot_locked(mt, slots, offset); if (mte_node_type(tmp) && mte_to_node(tmp)) { - parent = mas.node; - mas.node = tmp; - slots = mas_destroy_descend(&mas, parent, offset); + parent = enode; + enode = tmp; + slots = mte_destroy_descend(&enode, mt, parent, offset); } next: - node = mas_mn(&mas); - } while (start != mas.node); + node = mte_to_node(enode); + } while (start != enode); - node = mas_mn(&mas); - node->type = mte_node_type(mas.node); - node->slot_len = mas_dead_leaves(&mas, slots, node->type); + node = mte_to_node(enode); + node->slot_len = mte_dead_leaves(enode, mt, slots); if (free) mt_free_bulk(node->slot_len, slots); -start_slots_free: - mas_unlock(&mas); - free_leaf: if (free) mt_free_rcu(&node->rcu); else - mas_clear_meta(&mas, node, node->type); + mt_clear_meta(mt, node, node->type); } /* @@ -5702,10 +5706,10 @@ static inline void mte_destroy_walk(struct maple_enode *enode, struct maple_node *node = mte_to_node(enode); if (mt_in_rcu(mt)) { - mt_destroy_walk(enode, mt->ma_flags, false); + mt_destroy_walk(enode, mt, false); call_rcu(&node->rcu, mt_free_walk); } else { - mt_destroy_walk(enode, mt->ma_flags, true); + mt_destroy_walk(enode, mt, true); } } From patchwork Mon Mar 27 18:55:32 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Liam R. Howlett" X-Patchwork-Id: 13189947 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 17791C6FD1D for ; Mon, 27 Mar 2023 18:56:09 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 64488900002; Mon, 27 Mar 2023 14:56:07 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 5DFD6900005; Mon, 27 Mar 2023 14:56:07 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 3436E900002; Mon, 27 Mar 2023 14:56:07 -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 151E8900003 for ; Mon, 27 Mar 2023 14:56:07 -0400 (EDT) Received: from smtpin13.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay05.hostedemail.com (Postfix) with ESMTP id D411C40731 for ; Mon, 27 Mar 2023 18:56:06 +0000 (UTC) X-FDA: 80615583132.13.B9AB114 Received: from mx0a-00069f02.pphosted.com (mx0a-00069f02.pphosted.com [205.220.165.32]) by imf29.hostedemail.com (Postfix) with ESMTP id 585CF120014 for ; Mon, 27 Mar 2023 18:56:03 +0000 (UTC) Authentication-Results: imf29.hostedemail.com; dkim=pass header.d=oracle.com header.s=corp-2022-7-12 header.b=MryWMl8K; dkim=pass header.d=oracle.onmicrosoft.com header.s=selector2-oracle-onmicrosoft-com header.b=JzE9gptE; spf=pass (imf29.hostedemail.com: domain of liam.howlett@oracle.com designates 205.220.165.32 as permitted sender) smtp.mailfrom=liam.howlett@oracle.com; arc=pass ("microsoft.com:s=arcselector9901:i=1"); dmarc=pass (policy=none) header.from=oracle.com ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1679943363; 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=oqMjgSECbhb2ee2JdWQ9pJO51J5IQJ32f74Nn5k9DEs=; b=BprYDinh74A+Tsf6gYTQznOH4Lj8bkLE4IMvuRE0HxVyQuMyDUK3HFF0G06vyJIU609Uxb sQiI38E+YtIoWZP/a8hlCgUn1/w/r3FMMuUGE5tReDuRgLtM9xjypIth8CNzIrQVmGg/ZO gsshuWctmBM7NWrS5YNzRsQoj+QfhPk= ARC-Authentication-Results: i=2; imf29.hostedemail.com; dkim=pass header.d=oracle.com header.s=corp-2022-7-12 header.b=MryWMl8K; dkim=pass header.d=oracle.onmicrosoft.com header.s=selector2-oracle-onmicrosoft-com header.b=JzE9gptE; spf=pass (imf29.hostedemail.com: domain of liam.howlett@oracle.com designates 205.220.165.32 as permitted sender) smtp.mailfrom=liam.howlett@oracle.com; arc=pass ("microsoft.com:s=arcselector9901:i=1"); dmarc=pass (policy=none) header.from=oracle.com ARC-Seal: i=2; s=arc-20220608; d=hostedemail.com; t=1679943363; a=rsa-sha256; cv=pass; b=EM1THr7HJlctOMTUdZYLWfRXNeelLeQqR1WfrNgbufX3sLgMpx1Ql9mwjxrQR/Ls0YG5b3 ZfnfHl3BBttwaHjWa1s2Byv1J6G7KAHcEiPYmbCMRSE1R4rzU6BbqXd7HbkzXYWYxlmM8c IcmrLc7d7xS0m4GI1g3TNo3g9x9TTv0= Received: from pps.filterd (m0246627.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 32RIjNB7007121; Mon, 27 Mar 2023 18:55:59 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-2022-7-12; bh=oqMjgSECbhb2ee2JdWQ9pJO51J5IQJ32f74Nn5k9DEs=; b=MryWMl8KmznXf0RDBWUh3j4dFjj5X6fVozqSIxMmS/Gp4lMUKZrtOdN1KWAbNUDS2MlO KiBTYULfzTH1mO3jEGpG1jF/R0D0QlDtOz2c4zo9Ip/IEhsbiK72SviKZ/t3IvVwsKzW YQZoZf7LRf8TKJZk+kOrp70YOgXNUPpRdzHr+Z3Ck9OTjw0s6pcBCRxhHRgobeuqqEbI wsTZ2usQrnBKrTBzENKfRlE8qRsdtZzTyCE/13LkibEc5qElSWRB0SsMK5KerRiNXMlt l4Jg89paqIsn+DMJSWqbMBqtACHdTmuwPbB+hTHi3QStyECXmfmz+KgBjyG3GV3+B7wk +Q== Received: from iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta01.appoci.oracle.com [130.35.100.223]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3pkgpmr26k-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 27 Mar 2023 18:55:59 +0000 Received: from pps.filterd (iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (8.17.1.5/8.17.1.5) with ESMTP id 32RIcRVv026831; Mon, 27 Mar 2023 18:55:57 GMT Received: from nam12-bn8-obe.outbound.protection.outlook.com (mail-bn8nam12lp2169.outbound.protection.outlook.com [104.47.55.169]) by iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 3phqdbvywk-2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 27 Mar 2023 18:55:57 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Tc/vypS27vKDWYj7s/1C4DNccNZ0exxTQ2yyEqn9T3szwZuAJZ6IlOwla9RlLpHBFtZYol82f/TydLiqmx+aeI9zs5r2VSFuhCwjdC/qboqD9CGXFgjxyVgtkyyJwvxYdSZ0g3VoUW/FMuVAkLfPR9HrjYw87imKZzK0P67WFVcC6Py20bHA9rc1x0/FefI2Q/0okHJMi7LXurXdiAazbYfJTgJGVLi9NOpmRKngb2R58YSdaJRRa5dJWGbzF6eijDOjr9+mLNFDRNMwtqU1AVqKSGL4TJGpkh6SHEY34DLL5LNnZJT5OdZ+ht4yoBqSYSXQ67o9xnwUgfndNGXLew== 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=oqMjgSECbhb2ee2JdWQ9pJO51J5IQJ32f74Nn5k9DEs=; b=HSAR8jW9I0G2F5lrPOI4imsKXIXWdLjF3zhFbg9QQ4Ju1ZYW6qRHVSO8ATImlOES4YitBVlIV64V1FwJNe2wMpIYDRxSp+o3PmUQn740amKp5YwL11SRBSXlt2nq19NWW+HHO/eY1aKPkT52VPaJmEAB4udVAUiDNXse4dFM+LlIXTOEf5ylBRvCZqWJsjMFeKwsPIZe34uB8haYHw7aRio78bFArDFeOGQ+lS0BE5RgAmuQzKa0/BqoAZ94Xs7k//5fcyKruB8SUkWCs79egbKiD1Jc5PIeB2JNvwReITCj5n+rBVmlxDkywbqv+mPFcR60gGQqBz+eUEIC8XRYCQ== 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=oqMjgSECbhb2ee2JdWQ9pJO51J5IQJ32f74Nn5k9DEs=; b=JzE9gptEgPzkjyz5ZD739tT3VkB+KzpFL7LvSsHGsu19oEooWTbxxavA0Jco4pxRr5wgVfEZrEDFXXTGy0Pd1TGKE4h5tMXmxKTm0FRM9DgWRS8dHaYRVof/+peG/Z3p0PI88xMO7F0wOJbIR0UHJoMk6nQ27IINQQCDwzbtLzQ= Received: from SN6PR10MB3022.namprd10.prod.outlook.com (2603:10b6:805:d8::25) by PH7PR10MB5722.namprd10.prod.outlook.com (2603:10b6:510:126::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6222.30; Mon, 27 Mar 2023 18:55:55 +0000 Received: from SN6PR10MB3022.namprd10.prod.outlook.com ([fe80::9fc8:73bb:cc29:9060]) by SN6PR10MB3022.namprd10.prod.outlook.com ([fe80::9fc8:73bb:cc29:9060%5]) with mapi id 15.20.6222.029; Mon, 27 Mar 2023 18:55:55 +0000 From: "Liam R. Howlett" To: Linus Torvalds , Andrew Morton , maple-tree@lists.infradead.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org, Matthew Wilcox , Suren Baghdasaryan Cc: "Liam R. Howlett" , stable@vger.kernel.org, "Liam R . Howlett" , syzbot+8d95422d3537159ca390@syzkaller.appspotmail.com Subject: [PATCH 8/8] mm: enable maple tree RCU mode by default. Date: Mon, 27 Mar 2023 14:55:32 -0400 Message-Id: <20230327185532.2354250-9-Liam.Howlett@oracle.com> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20230327185532.2354250-1-Liam.Howlett@oracle.com> References: <20230327185532.2354250-1-Liam.Howlett@oracle.com> X-ClientProxiedBy: YT3PR01CA0089.CANPRD01.PROD.OUTLOOK.COM (2603:10b6:b01:84::20) To SN6PR10MB3022.namprd10.prod.outlook.com (2603:10b6:805:d8::25) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SN6PR10MB3022:EE_|PH7PR10MB5722:EE_ X-MS-Office365-Filtering-Correlation-Id: 6608797e-bcf7-47cc-94c2-08db2ef4e4b9 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 3b4xqWDOETz46XBJJ1S2jHl8fuSd8So+0hx400NPHVXNr8EgMhM9WcBaghbRm/lghs0BYDm7JJg62lSaVhFQq/mYxmwSGSfsyXHc07pubm6EFgMq86kptOQuiFq0KdiJ6ICDOfcZ96OwMPBGlKgEPfJEIj08O8jkNHhaNFVAqHB8F96cPnU+X+pGhYhjzAThKEas9P5+HHHxfF+ov2GgwSXrZO9Fdt7vMWHzXsDZ7vVim/ifESZ+3hQ/i+G/4Yh/ScBFT33G3h4PPbooJenvaZTnjoGjIo1xBB6fTHp68VtgnKhVLSANBzZC+1aE9+C5PzN3KzUjHTXZh5xqAF4Coy0J6Mel665M4Pwh2SfEDY5yqW0FF7w92zTGlRJHid8RV7N+phSccX349FaiBXf7FH1S2gU4I1OHFFrP2mAxi7hArLM2LJjzpjceeIAaCFvxK9d3XLcExg25YYKCBc+uRamWtUwuRJG8PKAbbQF2oNUPh7TgY0miSmcc7u3uPgN9wi7Ck9YxQwjRNTdbJ800IaPlhOl/twKcuVAPZeKirURLOQiP3uQTG2z+02yt2kfkUI4vnc+YItLTIxQ0Rywh8g== 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)(376002)(136003)(366004)(396003)(346002)(39860400002)(451199021)(2906002)(38100700002)(83380400001)(36756003)(5660300002)(41300700001)(8936002)(86362001)(2616005)(6666004)(110136005)(54906003)(6506007)(1076003)(6512007)(26005)(316002)(6486002)(966005)(478600001)(186003)(4326008)(8676002)(66556008)(66476007)(66946007);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: O7LXugZrmMHK6qfGDNwkmMBnlCVdpgBHW3OvNDPxh5peACG79WYhghZCDQnZGtzWtkFbUjZfKmcIfiNeW474bQ+IlQbmT5cWp7KiLrmR6n/LXXu1iw95ATc4h8eVsiutstWptNIPWmweVD1UK3NYzGFRjz74AtKsoXK7t7IH0bNBS3iqrrhnf5Uzz9rJipS09FMckG0ui+mXCvV56CtqwoXiUfePuTDo6XiYRMsOj+CnkfmqRQ0OvrEWATbKIMxMpOcIgD0XDLR9psF93QSRh2P7wosI7ha5xEPLtZTZjNngTiq+EW8TSXVgoe4jJjJs35G3rZaGqmWaBq9L40VDqq8vtVK8XyXWIrmLSUHeSpU397vCBDOy01Qfdmvfdtext88ufmbiWDou2WH0ztjoaihBcwi86gJxxuhAwup28ZjdSecgSNTjSUpagw8oLSrUDU6earr9V5u+AONSu4zTdjfT+oDQj20HBLyT+14F0Qg0RCJCtsRW1O7pn9UiVH/ZysHRvjjUwmsf5LEgRjH/+IoI9R52VU8GtXNu74LlHiJ1VjZCSInNZx4dtbEzieF6n39eG0pa1ROR7Hjn24S81lATkoLZoduClCzkNVSzSDMICogHYQzDO39hNKuBjJd4N8kr5RpQ1/6zJ6qgyYxZhcyUkZZvtLL9iSprKC58X9lBPtapzukSs9RzOJTGAhpO4b1vrFKgyPLSgEDNLTZb/Rx1Y9nrG4NXltDP5byqZs4XyTZ72YxOrGmsH3dXAQuaBhumuz4bU3S86wQVn8cETZymadhvRE9aO2zZOWdKvz4Gnq0C+ByYLT/S3JiA2qjXP2hlTZ2BuhBTtHOJQ9iK8xHKUh91AcovSOiCZXux2W1Is2viqX0Wzo6E3acevFKwSdYiQULrOnWIxHFXpN9I8jXdEBlNo6ZVkNWXwWp86NmBgQG2yfYpiGcRsrW5Opn0bJZIq2XeeAANngfXYli/F7FN0VsAf0j9ZhyWQ12R33VDPyk3ebiTXo0C7ANOuE9sBJRyXSGoqJY+jaZfZq8S6zabXb5AaMP+B+ErLuEh4idughuIeOh5sYHCEqW9f2JWyb9IOK6WKPpIAIHquo0m/av95bPNUAix+YYp7ZozYx4kcMtI9n87qjLrQcgsQUPhnlw94LM6c5sEB7QPBASASJf+XJFmQW9QJSnudzAWft+ikCa2326H36TlOqi6g+yoNf0YBgn9hX5p3fzL8LbQVTx9H6PsUkPXfVRdISvyJXeq2QvQP6eqzB9DK9HrIdgfSqmHmoxPd0gbdYv8N4XrqF9HePEsOcwyL4ZFqqzfiMw7ubr0/RyjQtFfi6FtgfD0SI1osVYfn3ov34oIJOkOxtO7CnYvv/gOL/5Pbsw5mn7EY1VnzVNrKjGpqm0KDFlEwRfhYroZigOPgBw42RSRc8vq99xiBTsb0pozZRPH4Jx3z9OdkzNMajyUGB98TxX33brcgRv/3tolId07S7ok/4zzea6EdjxnCSkQAdzUVAYK02PFluW1OimaoG6Bf9bYRw4AnqqJPF9AObMoZg4WM13x5eFsEsBL20RTHaxSV4m207ap7MfpX7wnFyUknibplQbgEYON2hi5XF2FLJ8vHw== X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: dGruqNlnqqEx5TK2EwswUyii8dTXcTjaYv0c/QYUrCqVnQs8vi9LDqfO/HtvcJmNFW8YsiZ7ipMoYbDVo28yDHOTHbLucs6MZ135zN4WyHz5xIeF9lEK+nd7Vtb6LYqpYeidMqJcQkGwEIC7qzuVPWfUypswifH4sZaStMnrBqBeGdG0UhUDs7ocJlISwzG3PEZIIq13If0mwLqySNG5qyh3t/p3TdCcqSIUEfVxUnf0Mheq5dZWoFLC7pPd4RQDn48sBByHCG+TRaNJm9lpUXuI/VfMUiZQRvXFFWu923TP1acanrUBLumoZ2zAX5QFkkIgDelJFsBSoSLSBgAGQbhBnghQ+a26Iyy3r4T9aPw6E5mx0qXuIEbewhLT2rtNNNlRpiHGwv49glbpg6uLX9hCo0BloVLRpyz2W+FZnPwrImQqPJMKYmEPbOIbnYe9CWQNcRNEvUTfXUkdyjYVIOZfTKcpkVleyHgcd0S2PyY39kdihClM80kFQ+a35TzndiZqtWKxBeHGC17cSSl7BqKwWXKWB4xBWP3Xb07pRjCWyeDEcVgu8ZifmMhYPp0r1SMjms7OY1eUcA6GLQI5oumI5mFFlJxQLuoK+wErrkXVwkuZeR5eZMNvlYrix55grOUIRVlw4KKf0bKZmojG9gLLVGjrLR1HoJjZxgm90+20Hy21aaJ39t4QvJ68mQc3Ec3X5tVK/TW4G4sYJAXnA7q8l+yNFMth0mtbScuGozXAILoetSRzYXhnd1dQHdF+AXWJDlUT9xk/7Xd3Cssg/jrLGyHBqY0/oBmQ89Lc6F9QPmypkW0dRuJj4y0YXB2d0ES9UgnHPSTSCkaFzBxaUGct4eJqrD0wKIbD+86UvVQsZp92pjsy/FHzUolYu5S/fUaA6FM3xT3V1+8zSEHW9N+y5nTegaNVserD2zKPSNBHSbxdpv3c+cl9Hol3YhctKT1t2uqclC1G64SxTpMRg9+YQlJQRVSXbJby3HtY+LpfS2C9EGnzsb8h1MTUdABuO6KRUmw05US8PQ+PtP8ddQ== X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 6608797e-bcf7-47cc-94c2-08db2ef4e4b9 X-MS-Exchange-CrossTenant-AuthSource: SN6PR10MB3022.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Mar 2023 18:55:54.9055 (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: Bsvs+oCyozlh35lJ69iBDHCeM19ykRk3ToUb8sneOtdTcvJz1fspGecjup31rcRyUnFdp9F6+Cv279prOaJPlw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR10MB5722 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-03-24_11,2023-03-27_02,2023-02-09_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 bulkscore=0 malwarescore=0 suspectscore=0 mlxscore=0 mlxlogscore=436 spamscore=0 adultscore=0 phishscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2303200000 definitions=main-2303270155 X-Proofpoint-GUID: 3R6cOwk1anQb4C3_qvpqgQRBQ5NbA7Ce X-Proofpoint-ORIG-GUID: 3R6cOwk1anQb4C3_qvpqgQRBQ5NbA7Ce X-Rspam-User: X-Rspamd-Server: rspam04 X-Rspamd-Queue-Id: 585CF120014 X-Stat-Signature: s6fp8tc6yz468t6ngyqkb3cdsyta3395 X-HE-Tag: 1679943363-309225 X-HE-Meta: U2FsdGVkX18HV7ponwets5+caUnJhsc8ygQicOPg/vM8IA/20L9ODd3AoKWuwY4tJ4h4IMPEBm1N0AQFGqurhXBewilhkIiQ5fpomH8pyHzbhSfsjn4HvEC0vBFNAXmmy9sP269ZIaQZD6q+GVtBJjQwbuufMuQ0IU0Ume4n9My2XflWQmAtQsmTq6IHYVHnxazVxJDi9hxykgcsQCpeB50+fPQWNrPox/2CHjKLZ4HkbB8AKLB0rgSc/dnGj2uUfJnrFYv3rCIOKH5sFtcEx33WRhmIHr6vR/IHeTW6IhwZdGXUPl5hHNtpShZkBvpeAGLlY1c0wg9m4Ubkk66OSAMRiYNdWzMVLMLSS0TXeZQbSlrXYHKO9ruGPsv8CUHVmItlmMye206VWT9gdajR95KuT+AP/KyUQFSw/OK7RvPbSFUdHBaQI3/xt2a3F77L0Q9V/3U9W3Wbda1i/0absBwj2I99OdkdKnrUvVuWvkchoWpDrwfn+Eri5GpK1aBy9Y3hWjm2PP854mbJDPzP/MScJzzep9L+wyaUWEkYwQqFtnxSfHDDh73hAlMR4sp001A0X3E/zUl+unnJKUiTTMliSRA5j9PiRTwWx5dUNxX1qop3/1bCHoL1tohdBtUVs9Wdsdvop8ZYDNETCCVUlL61fcx4qM6SCAS6lR+qUApzKOt0aImhIhqDkUH+JrARSPF2nYbLFCASDexpOeSIGY0soL3djBXN0RP552D0cOGRdSx87zKfv+iHoJ2oq7zzDEBZWahIustlHB+AWkfVykY5MAYahOyCovHaQ+iAP5ILPM3yoVG/xVmF4AUWCkcggv0yYcE9bFBnLuBMCIB5z3xhxe2bK6+8ON1qYcatBhfPENHeR+RzC/UbkV4pD4AkEYNKXODb+LdmlraSDJIvgzTC9bXCjB0lLWtEqMrOqwDdDhYI06h42dodEIDkv4N81RtSl47fKKMGu/Rdakx /1FJR/Ab Yfjprd6hcFAwqZu07OKlDhFPEnKvuqYimaXNxKDAKZ74+fwAVL9s489zkUFi5G4nzmEgCFlJB7x3Jqp0NsOPaLSLrIX8ySj3aEGxJOHnUZrXxN7/wd18wk+usCQQmmo+LvdZ6Y+mdj+3o34OTVs+4K//nZLQjm/CHbChlEfjkMR6Eerz7FEMDgMr/81bbQIVWuxBbOEmDWvOV04e8SM0jHmLPry/UjkWKEfTq2rlSn8q6XAyL38akX+65S//e/vYXDorfZcW+psL+5s2Bw3tx2H7Zk1ZVLiN4t29xKhmRTgcImUTazSAxI98wSlS6bYGbzEN8+rOnbTTJjbBd74lMhwqAXKudvgauKMe+IOcflZ2IDpf+WGktWpxU1i32kxdXm+KSGCM4I93g84UX9fGxiaKP65WQ8QZCIDYxVABOIyovb6IIegPqrx71gSNRc0MBM6ze5T8JjmiafiJqr8dzXfXHR0flBBebEsV0oKk0w3ZoEJDfTCLYF9dojwyiPzQt9G7XibXFHftA2TzBH6DUvHKKxcBCJPjskRXbiRzsdiBjHV4tqaOxZPZmEcE5rn6gqxLTjQxvRJOVtBXgxYHzuz0a/dMsFACRzoRcfkA4/kQmnEJ1X6uqHkjdNkA1VSWgHO2G 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" Use the maple tree in RCU mode for VMA tracking. The maple tree tracks the stack and is able to update the pivot (lower/upper boundary) in-place to allow the page fault handler to write to the tree while holding just the mmap read lock. This is safe as the writes to the stack have a guard VMA which ensures there will always be a NULL in the direction of the growth and thus will only update a pivot. It is possible, but not recommended, to have VMAs that grow up/down without guard VMAs. syzbot has constructed a testcase which sets up a VMA to grow and consume the empty space. Overwriting the entire NULL entry causes the tree to be altered in a way that is not safe for concurrent readers; the readers may see a node being rewritten or one that does not match the maple state they are using. Enabling RCU mode allows the concurrent readers to see a stable node and will return the expected result. Link: https://lkml.kernel.org/r/20230227173632.3292573-9-surenb@google.com Link: https://lore.kernel.org/linux-mm/000000000000b0a65805f663ace6@google.com/ Cc: stable@vger.kernel.org Fixes: d4af56c5c7c6 ("mm: start tracking VMAs with maple tree") Signed-off-by: Liam R. Howlett Reported-by: syzbot+8d95422d3537159ca390@syzkaller.appspotmail.com --- include/linux/mm_types.h | 3 ++- kernel/fork.c | 3 +++ mm/mmap.c | 3 ++- 3 files changed, 7 insertions(+), 2 deletions(-) diff --git a/include/linux/mm_types.h b/include/linux/mm_types.h index 0722859c3647..a57e6ae78e65 100644 --- a/include/linux/mm_types.h +++ b/include/linux/mm_types.h @@ -774,7 +774,8 @@ struct mm_struct { unsigned long cpu_bitmap[]; }; -#define MM_MT_FLAGS (MT_FLAGS_ALLOC_RANGE | MT_FLAGS_LOCK_EXTERN) +#define MM_MT_FLAGS (MT_FLAGS_ALLOC_RANGE | MT_FLAGS_LOCK_EXTERN | \ + MT_FLAGS_USE_RCU) extern struct mm_struct init_mm; /* Pointer magic because the dynamic array size confuses some compilers. */ diff --git a/kernel/fork.c b/kernel/fork.c index d8cda4c6de6c..1bf31ba07e85 100644 --- a/kernel/fork.c +++ b/kernel/fork.c @@ -617,6 +617,7 @@ static __latent_entropy int dup_mmap(struct mm_struct *mm, if (retval) goto out; + mt_clear_in_rcu(vmi.mas.tree); for_each_vma(old_vmi, mpnt) { struct file *file; @@ -700,6 +701,8 @@ static __latent_entropy int dup_mmap(struct mm_struct *mm, retval = arch_dup_mmap(oldmm, mm); loop_out: vma_iter_free(&vmi); + if (!retval) + mt_set_in_rcu(vmi.mas.tree); out: mmap_write_unlock(mm); flush_tlb_mm(oldmm); diff --git a/mm/mmap.c b/mm/mmap.c index 740b54be3ed4..16cbb83b3ec6 100644 --- a/mm/mmap.c +++ b/mm/mmap.c @@ -2277,7 +2277,7 @@ do_vmi_align_munmap(struct vma_iterator *vmi, struct vm_area_struct *vma, int count = 0; int error = -ENOMEM; MA_STATE(mas_detach, &mt_detach, 0, 0); - mt_init_flags(&mt_detach, MT_FLAGS_LOCK_EXTERN); + mt_init_flags(&mt_detach, vmi->mas.tree->ma_flags & MT_FLAGS_LOCK_MASK); mt_set_external_lock(&mt_detach, &mm->mmap_lock); /* @@ -3042,6 +3042,7 @@ void exit_mmap(struct mm_struct *mm) */ set_bit(MMF_OOM_SKIP, &mm->flags); mmap_write_lock(mm); + mt_clear_in_rcu(&mm->mm_mt); free_pgtables(&tlb, &mm->mm_mt, vma, FIRST_USER_ADDRESS, USER_PGTABLES_CEILING); tlb_finish_mmu(&tlb);