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 60D63D66BAD for ; Wed, 27 Nov 2024 03:09:23 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id D3D546B00A2; Tue, 26 Nov 2024 22:09:22 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id CEC846B00A3; Tue, 26 Nov 2024 22:09:22 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id B8C6F6B00A4; Tue, 26 Nov 2024 22:09:22 -0500 (EST) 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 9B19F6B00A2 for ; Tue, 26 Nov 2024 22:09:22 -0500 (EST) Received: from smtpin25.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay05.hostedemail.com (Postfix) with ESMTP id 472DD40ECF for ; Wed, 27 Nov 2024 03:09:22 +0000 (UTC) X-FDA: 82830393954.25.ECBB3F9 Received: from dggsgout12.his.huawei.com (dggsgout12.his.huawei.com [45.249.212.56]) by imf24.hostedemail.com (Postfix) with ESMTP id E9009180009 for ; Wed, 27 Nov 2024 03:09:16 +0000 (UTC) Authentication-Results: imf24.hostedemail.com; dkim=none; dmarc=none; spf=pass (imf24.hostedemail.com: domain of yangerkun@huaweicloud.com designates 45.249.212.56 as permitted sender) smtp.mailfrom=yangerkun@huaweicloud.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1732676955; a=rsa-sha256; cv=none; b=jcDEKBv2/ckLyKZTZR54vI9f6BWPoqBXbrBYKHxPYPctcZO9e0p7bkTI6tk+02yfZNffVT 5de+tc22SJ+bQlB5aSl/OCaZxOg+Vqimh/qLETmS9keVXkYcgjm0jjsskINtKQveI9qTGL zooWa87+3dpZ3I4tyWcvGyy+I0aKKGM= ARC-Authentication-Results: i=1; imf24.hostedemail.com; dkim=none; dmarc=none; spf=pass (imf24.hostedemail.com: domain of yangerkun@huaweicloud.com designates 45.249.212.56 as permitted sender) smtp.mailfrom=yangerkun@huaweicloud.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1732676955; 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; bh=vCLAoGz0c+Bp4AgU1Ctwle3owavRNAu8RDG6qn6Qhqk=; b=y59DUWtcHG9+RHfY1jZ16GZ3y4o5X5HHKJTagOame3hdnFiyinL5tWs1dneoUyAdk3+6Fb Mr90mlGTomQ+UbGWAxJwi+/8zBcbhHtsaWqcrpltWof1WaEzt3041Ctnvhree+Q6wF0z5m c4hlhDo83Sf3sjHDTn/elwB7/0FuSiY= Received: from mail.maildlp.com (unknown [172.19.163.216]) by dggsgout12.his.huawei.com (SkyGuard) with ESMTP id 4XyktF2bLWz4f3jR1 for ; Wed, 27 Nov 2024 11:08:53 +0800 (CST) Received: from mail02.huawei.com (unknown [10.116.40.128]) by mail.maildlp.com (Postfix) with ESMTP id 23E831A0196 for ; Wed, 27 Nov 2024 11:09:12 +0800 (CST) Received: from [10.174.177.210] (unknown [10.174.177.210]) by APP4 (Coremail) with SMTP id gCh0CgB3U4dXjUZnw_fHCw--.28395S3; Wed, 27 Nov 2024 11:09:11 +0800 (CST) Message-ID: <6917283e-d688-a133-9193-ca5d6255dafb@huaweicloud.com> Date: Wed, 27 Nov 2024 11:09:11 +0800 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Thunderbird/102.5.1 Subject: Re: [RFC PATCH v2 2/5] libfs: Check dentry before locking in simple_offset_empty() To: cel@kernel.org, Hugh Dickens , Christian Brauner , Al Viro Cc: linux-fsdevel@vger.kernel.org, linux-mm@kvack.org, yukuai3@huawei.com, Chuck Lever References: <20241126155444.2556-1-cel@kernel.org> <20241126155444.2556-3-cel@kernel.org> From: yangerkun In-Reply-To: <20241126155444.2556-3-cel@kernel.org> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit X-CM-TRANSID:gCh0CgB3U4dXjUZnw_fHCw--.28395S3 X-Coremail-Antispam: 1UD129KBjvJXoW7try8ur47tw13Kr1xGFy5XFb_yoW8Xr47pa 95KF4akr4rX34kWa92vwnF9r40q3Z7WF4jgFWrXw15ArZrtwn2q3yIkF4ag348Wr4xCFsx KFs8K3Z0ka1DZ3JanT9S1TB71UUUUU7qnTZGkaVYY2UrUUUUjbIjqfuFe4nvWSU5nxnvy2 9KBjDU0xBIdaVrnRJUUUkEb4IE77IF4wAFF20E14v26r4j6ryUM7CY07I20VC2zVCF04k2 6cxKx2IYs7xG6rWj6s0DM7CIcVAFz4kK6r1j6r18M28lY4IEw2IIxxk0rwA2F7IY1VAKz4 vEj48ve4kI8wA2z4x0Y4vE2Ix0cI8IcVAFwI0_tr0E3s1l84ACjcxK6xIIjxv20xvEc7Cj xVAFwI0_Gr1j6F4UJwA2z4x0Y4vEx4A2jsIE14v26rxl6s0DM28EF7xvwVC2z280aVCY1x 0267AKxVW0oVCq3wAS0I0E0xvYzxvE52x082IY62kv0487Mc02F40EFcxC0VAKzVAqx4xG 6I80ewAv7VC0I7IYx2IY67AKxVWUXVWUAwAv7VC2z280aVAFwI0_Jr0_Gr1lOx8S6xCaFV Cjc4AY6r1j6r4UM4x0Y48IcVAKI48JMxk0xIA0c2IEe2xFo4CEbIxvr21lc7CjxVAaw2AF wI0_JF0_Jw1l42xK82IYc2Ij64vIr41l4I8I3I0E4IkC6x0Yz7v_Jr0_Gr1lx2IqxVAqx4 xG67AKxVWUJVWUGwC20s026x8GjcxK67AKxVWUGVWUWwC2zVAF1VAY17CE14v26r1q6r43 MIIYrxkI7VAKI48JMIIF0xvE2Ix0cI8IcVAFwI0_Jr0_JF4lIxAIcVC0I7IYx2IY6xkF7I 0E14v26r1j6r4UMIIF0xvE42xK8VAvwI8IcIk0rVWUJVWUCwCI42IY6I8E87Iv67AKxVWU JVW8JwCI42IY6I8E87Iv6xkF7I0E14v26r1j6r4UYxBIdaVFxhVjvjDU0xZFpf9x07UZSd gUUUUU= X-CM-SenderInfo: 51dqwvhunx0q5kxd4v5lfo033gof0z/ X-Stat-Signature: monpi5qhyregi16n8iwz8eq8ojyw8yrp X-Rspam-User: X-Rspamd-Queue-Id: E9009180009 X-Rspamd-Server: rspam08 X-HE-Tag: 1732676956-203207 X-HE-Meta: U2FsdGVkX19Pm/ckwb0gxf6AcPWR3ze3hOkb/MEDZc/JjG6hcqqCpfSFK9Ds6ptvNFRDdPsl5sdBNUL6kxcc27nEFgGnquAQZqL8tstvn+NWxmXbN81qs1PYgIeVUHe7POFu017IrsnX+naxN/1vpMe8V4qVirydZf2InVugKk2xTB5bgHDe1rIkMTFtTSztg4zp7bl+NQ51n56iKSPkcCtPKF5LcExVazE9bEo7P+zKKSVPmNVryGAuAXGS+l/TLc3F9YpOPAavPCsrvvQALZIIIvEEAF2xu0xi8iYcP9+eGHZOMG27/oj4xjQm23FgM+LIEdfHk5+1jpJ/i3xxkdvssAJH6rbDdyZEgyeLDhCd3/EkaWMbtpMCMt/k7xB/nqQOciJEx7069y9mQJjp8hdtZCFTWkYTcp973iFf36EnTFJGD3cE99htM/6EuAnwJnJFsBgsPz7Z8dVStivgplhQVSGFrRAix32mM8AXdzytAr0x50fNKKWhHh1uWT9X+iSojiZmd53z4MTH4K11ZIA8GPsVIQQEUikIYqHgaG8veTWMtfbuidis+t4oW+jpm9n6xnJxMGXWqmVG0J3gdPuyaWt3DygUvCrhNbHLdomztFW/v9I7d/szr4dYlPivjcMxUDenSYUAiFve49A+E3ReM/hPxfSfFQCccUcKmNheY3C17Qr6JBrE27gucAi6J5T+7Ne2rHacUV7iNcR3p3ltenrsqDQXk2r7/KNQno0IeLtl4JGGCb3alnDiKLeKnemDAcEd1HaNHr/OYilCPdro6HnQstg9eg2sRBoaQF2beKlDbBw0J5G8w+ZD+iVCDMMc4Xgq6ipuJhNnmfdhnpH3ntWmt3aWWRA3JAlQ+JWV3YaOOdmrIMIEwAYSOysaNBw9KjeDpfZww+9feHrM/RaPSS+hJsgerp2Lz6KDIxUPPXAtafqqeccO+NqjsPzZxguQrgne142S/R0RHDt 5K3vB1xn nhNsRCKYz0dP+Q6eOXC6emg4Z7/SOh7EzkqOKo21zeeJQCupToPCqg+ZhiFh5bprsCA5GRhhZt8rt5rwH8XcrkS0PnDJS+6u9jmt1BMXOCQl/PlnFkUgP4riaOuPcXaySQJ1Xau5K5AKpR15N8Rkvyta0hJREKhkjgPfKpOzWtOXR46qsw+FTd4gEXfE26irwXTK99328WsCaqRgX01zrGRbxCwczz3BbuvZOvYOd+11lLpA= 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: List-Subscribe: List-Unsubscribe: Thank you very much for your efforts on this issue! 在 2024/11/26 23:54, cel@kernel.org 写道: > From: Chuck Lever > > Defensive change: Don't try to lock a dentry unless it is positive. > Trying to lock a negative entry will generate a refcount underflow. Which member trigger this underflow? > > The underflow has been seen only while testing. > > Fixes: ecba88a3b32d ("libfs: Add simple_offset_empty()") > Signed-off-by: Chuck Lever > --- > fs/libfs.c | 9 +++++---- > 1 file changed, 5 insertions(+), 4 deletions(-) > > diff --git a/fs/libfs.c b/fs/libfs.c > index bf67954b525b..c88ed15437c7 100644 > --- a/fs/libfs.c > +++ b/fs/libfs.c > @@ -347,13 +347,14 @@ int simple_offset_empty(struct dentry *dentry) > index = DIR_OFFSET_MIN; > octx = inode->i_op->get_offset_ctx(inode); > mt_for_each(&octx->mt, child, index, LONG_MAX) { > - spin_lock(&child->d_lock); > if (simple_positive(child)) { > + spin_lock(&child->d_lock); > + if (simple_positive(child)) > + ret = 0; > spin_unlock(&child->d_lock); > - ret = 0; > - break; > + if (!ret) > + break; > } > - spin_unlock(&child->d_lock); > } Calltrace arrived here means this is a active dir(a dentry with positive inode), and nowdays only .rmdir / .rename2 for shmem can reach this point. Lock for this dir inode has already been held, maybe this can protect child been negative or active? So d_lock here is no need? > > return ret;