From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 16F41C77B61 for ; Thu, 27 Apr 2023 12:27:06 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 835E86B0071; Thu, 27 Apr 2023 08:27:06 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 7E66F900002; Thu, 27 Apr 2023 08:27:06 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 6ADAA6B0074; Thu, 27 Apr 2023 08:27:06 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0016.hostedemail.com [216.40.44.16]) by kanga.kvack.org (Postfix) with ESMTP id 5D1E96B0071 for ; Thu, 27 Apr 2023 08:27:06 -0400 (EDT) Received: from smtpin19.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay07.hostedemail.com (Postfix) with ESMTP id 1AF041601BE for ; Thu, 27 Apr 2023 12:27:06 +0000 (UTC) X-FDA: 80727095652.19.C6F0376 Received: from mail-qt1-f193.google.com (mail-qt1-f193.google.com [209.85.160.193]) by imf01.hostedemail.com (Postfix) with ESMTP id 3C2AE40021 for ; Thu, 27 Apr 2023 12:27:04 +0000 (UTC) Authentication-Results: imf01.hostedemail.com; dkim=pass header.d=gmail.com header.s=20221208 header.b="eC/63kLS"; spf=pass (imf01.hostedemail.com: domain of perlyzhang@gmail.com designates 209.85.160.193 as permitted sender) smtp.mailfrom=perlyzhang@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1682598424; 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=+lugMEjPyNs4wx1BEsCrvxYBx5QxmgCHFZRpu6mcr7o=; b=RZF2clijCTn31jNbd00RTubfucrRL9NhG1brdfmroPEC07t6McKvqyUUzcxeUBzrXPPe4t DZtAaAb5c+oi/smOL+xMf7zTfqC5mjpK4fs6iCi0PU9Cm0yoJ3DBMNZ+orMOGE85SA/AE+ b+gLSC+4zgB5E8s7FWasfHEUH4hswDA= ARC-Authentication-Results: i=1; imf01.hostedemail.com; dkim=pass header.d=gmail.com header.s=20221208 header.b="eC/63kLS"; spf=pass (imf01.hostedemail.com: domain of perlyzhang@gmail.com designates 209.85.160.193 as permitted sender) smtp.mailfrom=perlyzhang@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1682598424; a=rsa-sha256; cv=none; b=qMwMbw7R0kWqFK+iP8qWYdO0y3gYR35HQzmctka+65I+UHeGJUuYWRHQ7lk6LJHN/Ifo4I P5OWqHZrS2BGWLSZjNMchZFZ4M9IIElK3r6Yz3ORt9vkJwk8gLhLm4Yv7ZZhcpDwLNEbkY DkZHkpACviQkbqmCYJdA6Mwg7wtJdFo= Received: by mail-qt1-f193.google.com with SMTP id d75a77b69052e-3ef588dcf7aso79191681cf.1 for ; Thu, 27 Apr 2023 05:27:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1682598423; x=1685190423; h=content-transfer-encoding:in-reply-to:from:references:cc:to:subject :user-agent:mime-version:date:message-id:from:to:cc:subject:date :message-id:reply-to; bh=+lugMEjPyNs4wx1BEsCrvxYBx5QxmgCHFZRpu6mcr7o=; b=eC/63kLSAEYLnkbj8Dk5ZJzowmuu9sbLmc8B+qK/hS+pxQVFNhhiPdKM5Pr9ReuugU eRZUCGHx+i2Q5Ey0n7WmOFDw3BpNmDVd3Qu8Kdl547qIq9KSlUdxIJNTHLe3Gvu3+n9g kQs54D+YT34smuc1+zySPcNYwHD/FLviPCKHxSDjt8XjhFXORzEvMF+olbbuGcuhFOTe M0dvxGxR3lJl8O4LlCCN97zoeyGnSlytReAr3j8WTTwxyzoVrmCNVfG1tTV1C5bKFfw2 4bZbj+ut6QSh8WLEjaY62t0t/A6vFVxsNv3oIvw0apsaxjXwBTC7spmR0spUy4tfuSrW YqnQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1682598423; x=1685190423; h=content-transfer-encoding:in-reply-to:from:references:cc:to:subject :user-agent:mime-version:date:message-id:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=+lugMEjPyNs4wx1BEsCrvxYBx5QxmgCHFZRpu6mcr7o=; b=SvxmB99FONskVp3fiB9rrSPxdpYzjYxiu7fzEh+k6MEmXc2Bx+lOWGdi7vR49m7OXi 355xL8atiXxbtc1VtyWp2T7zjPEYz0W32ZyxenPP72LweRPIe6u8xSB4SS4XXkmj6VX1 KPDbKJ+HcsptfZSY6U8W4dNrt0dlvRaluaOcudFNKBhiObb7iYJ8cNLWQFpJGeLZVlD4 q9zMivzgriNVDW+VMSJwBBr1sL9I0tXWaw+Cady1ciDT2Hi9sZ9ljZSkVZ6ndR9ezP+e n5vmcs7qDkEO6cdtkdyggFBb79WOOTritkZGBIxeDD8ndG51wkWnNP+7yKIonHA3N4Q7 tjYA== X-Gm-Message-State: AC+VfDz/TDXqJJfHm+OyZ+nC+163a8S6pkNSbfH4Cmswti7zleo5FBUU 7Bkh5M1BM7i0oF8Euyll4Ap4YvH3ZyYoBbbo X-Google-Smtp-Source: ACHHUZ6vMN5OPIVrNE1wbW+smYmnuHLGFzPTcfgCx7+5t9SbrwM9vpLfZLq9tkKZMK9sj/IP0oMsKw== X-Received: by 2002:a05:6a20:728a:b0:ec:a118:6471 with SMTP id o10-20020a056a20728a00b000eca1186471mr1477996pzk.50.1682594381996; Thu, 27 Apr 2023 04:19:41 -0700 (PDT) Received: from [10.200.10.82] ([139.177.225.232]) by smtp.gmail.com with ESMTPSA id k128-20020a632486000000b00502ecc282e2sm11407200pgk.5.2023.04.27.04.19.39 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Thu, 27 Apr 2023 04:19:41 -0700 (PDT) Message-ID: <578db833-e20a-cec8-c00f-5cd1e8959ccf@gmail.com> Date: Thu, 27 Apr 2023 19:19:35 +0800 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:102.0) Gecko/20100101 Thunderbird/102.10.1 Subject: Re: [PATCH 25/34] maple_tree: Clear up index and last setting in single entry tree To: "Liam R. Howlett" Cc: linux-kernel@vger.kernel.org, linux-mm@kvack.org, maple-tree@lists.infradead.org, Andrew Morton References: <20230425140955.3834476-1-Liam.Howlett@oracle.com> <20230425140955.3834476-26-Liam.Howlett@oracle.com> From: Peng Zhang In-Reply-To: <20230425140955.3834476-26-Liam.Howlett@oracle.com> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit X-Rspam-User: X-Rspamd-Server: rspam03 X-Stat-Signature: q6cy9qnuneawqki3soba43paou34t1se X-Rspamd-Queue-Id: 3C2AE40021 X-HE-Tag: 1682598424-339863 X-HE-Meta: U2FsdGVkX18GJfg/CEG4XPY/OJfjS0Pe4ah1oX9GNxJR96t05EQGTFEV0lZSLoIZy8od0ygU8lOlZCzTR0Lf72xYAhkAmdiGhqJui0A9uUbMyZA7VYc9QjmujM9xB5HuLFvy6DUblnrJeNHcEi1QTHeYv3m0k0Di3aP1FJI/S+b15O1XnUPgh1QFsFJCaHWqrj/d354dydbKc1r7sX5TVFiQE6Hgzqfp0rrpdKBgE6+2EdIgXqpzTv6wvA4/9g7K0rZhGf1ndJOuQvaVzRpVReMff/aoHnRAusrnyUb0cq8RF6g0m0U9e2BOLkne0dKCnUayVOg5pVLMdhJjoBwHTSWFw5aqq2qonF9IKNNZ+mnzYR3AW+aAVp8SmICePRoq9jSA0Ba0lDq1u+8+Y2UvonwptopON4YBz4QIMgFUY1idS7VBbB9+Bi05xcJXJbclxA3DFDpzTaugV6fpoCmFRLNLChJ/rn/BnxnPT2fVZ0GQoggkHLj8JynP5I4uDDYZhotLoFkctTUZUnat0Y04m59AFIg7/uFItUYvwomFq7kr1I7rV24NzVeIHpCjD20TQo5rbEbSFBnrILVmFRlYijQ8/xBrPbdgI2YCUmmdz7FsZqeb0ENqFfaf9REGCXQmnD7DajhV84ZqdWLIpK1sA30FQAKVvuHM8bh26WkCtZvVXdzqGW58WyM0InIOj1Dti0s+s1HvjHxfvTTBPmdnSfVZqUWXudYK4rIJXH8rq+8tzyvyTn8fxOfeWuxWNiINV5VxpD7DzxQfmi2m2IaVTOdoYzKFOVOhIhNcaxHoB3zBJMiDWaXmBaTKIg9aP3QAGUIJ/DCBDpiaJ2ZvKAlFg/48k/p0qVMF63JukUXZz/8FHXKsyU+eY1MDJ7i7OaabReGs32eS7jrpwsZKp5B57NPrcfZLBfX+PkLM1CSrA5zOKZxOvGuR5PoCYBQ2lsIFzQyex1/1W1q41OQtZdG ujgF+KPo 84dNU6LUA7F2PAuVUgQtm+cjHY5+Lc2kFvXEgFQee7MZ2uEXeYdNwqDUjRbPtFpQClvKMeFetYY/8VTZ6QWEbYRjf5Y7zz7cTY1YxtKW+OAY7uYrZYEi7UOaoQfCbnB+XcJfXrY54nsdOkTfsbcgtbSreaYkWegFj7fWi4WOnjiYecjIAFJKZk8DQOs7cEuPgZgOonD+m9TNxW/vcaspRkfc3V/4+1/qGU5GPRNWNjxVV8pvq3R+i0L9oWqb88raJlX3Pv08Xn5TJJzxtx5qjBxoxy3tSW5AL/dZ13+NhosBkfmALPvaUveNIYgVapsiF8FTJnmLlUHyiaCmiJHyOjg+mZ7bZZnlS+X60vcoLUjRv5fmZdGN3ACrshu4AprczxPs4D14QEzQ2fII/gZyPy0n8Qi8Y1j5oQAtx06QGkL/Rjcz+kvUsXiFmVwUf2giqb263dXpFjOfJA/gm43yh0YbvZe+qzcK6uzAttz9bgP2hQrcRXsfm0colsA== 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: 在 2023/4/25 22:09, Liam R. Howlett 写道: > When there is a single entry tree (range of 0-0 pointing to an entry), > then ensure the limit is either 0-0 or 1-oo, depending on where the user > walks. Ensure the correct node setting as well; either MAS_ROOT or > MAS_NONE. > > Signed-off-by: Liam R. Howlett > --- > lib/maple_tree.c | 21 +++++++++++---------- > 1 file changed, 11 insertions(+), 10 deletions(-) > > diff --git a/lib/maple_tree.c b/lib/maple_tree.c > index 20f0a10dc5608..31cbfd7b44728 100644 > --- a/lib/maple_tree.c > +++ b/lib/maple_tree.c > @@ -5099,24 +5099,25 @@ void *mas_walk(struct ma_state *mas) > { > void *entry; > > + if (mas_is_none(mas) || mas_is_paused(mas)) > + mas->node = MAS_START; > retry: > entry = mas_state_walk(mas); > - if (mas_is_start(mas)) > + if (mas_is_start(mas)) { > goto retry; > - > - if (mas_is_ptr(mas)) { > + } else if (mas_is_none(mas)) { > + mas->index = 0; > + mas->last = ULONG_MAX; > + } else if (mas_is_ptr(mas)) { > if (!mas->index) { > mas->last = 0; > - } else { > - mas->index = 1; > - mas->last = ULONG_MAX; > + return mas_root(mas); Why we call mas_root() to get the single entry stored in root again? I think it's not safe. In RCU mode, if someone modify the tree to a normal tree(not a single entry tree), mas_root() will return a address. So, this may cause a race bug. We can return entry directly. > } > - return entry; > - } > > - if (mas_is_none(mas)) { > - mas->index = 0; > + mas->index = 1; > mas->last = ULONG_MAX; > + mas->node = MAS_NONE; > + return NULL; > } > > return entry;