Received: by 2002:a05:7412:8d10:b0:f3:1519:9f41 with SMTP id bj16csp16854rdb; Mon, 4 Dec 2023 18:26:06 -0800 (PST) X-Google-Smtp-Source: AGHT+IHF7E8pInkCFLXPDEeR/vMfdl/oNPlIzolaGgp8yC3nuc9ulW8IqStFWpe/dxo5pxQ42tOn X-Received: by 2002:a17:90b:3ec1:b0:286:815b:8c87 with SMTP id rm1-20020a17090b3ec100b00286815b8c87mr607260pjb.13.1701743165674; Mon, 04 Dec 2023 18:26:05 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1701743165; cv=none; d=google.com; s=arc-20160816; b=On29mKm7arcLzvyytbUGG44RoL+rYC7dDkc2TQ59AGGSb/4qqdtvs/cCiETAL58IOP gykjfZFyof6Da5fSJB1JtU6DkZELOvgbFTMPRFVz/6n9EUs8bQTXs+aN93h++PNBNeeG 4JbdY4xndw40vplpXGrpe1LJSKyo/YFIjzEtpQGAqwwPRbj7zSQbD+ewb7nEOVlixmIU u7Zz42crgL8hqU3iteBFWmBzR17pmJMsNJ2FvIZDK9ruvC+9Jf6D+Tfwd8CTAJSYFQSv xx6k7OKU0SKlCtk2TnveJcMVYU4k4Qil64S75ZxkQ0DQPa9boi+jk6V0G9nvuBPOEgcS UkdA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=74v1Dg7yBE+4rxKY7xG9GKf0VfPvIUvY43ZeQBhdM3Q=; fh=DgGXwGbnyiv1Rvt/NkXbEKOXDvWVLBCb4IpCdacEJoI=; b=XJZDKulfzpc+iH/Ct1WJ5r339VMurbk5b+/y4j3L1vdervxGBjTTHk3RL2zxex0Vej 9tLa06CV9Cg9x53xDSysoly3L1ZqL/GhRiN8pv7TA9Mdot+js80NuIn6yj2lMfW6o21W qbcSCgC3AhMFr7Kh2IFY3uxykxc21XcRzMQrvn9U13LUkusDRwc29m4Ew52vXYqHIE8o fRJXmGHY99WKKxeXLT720pwOlPe8QVHyDfcOEV7A+eyujAHjpTOyHh6XV0u6nBzRcn8l jC9g4OKUGKZK8Bpsk2+oF5F8Kzrho1wn/F1VE8HO4V5qpuYq5LzeLYvSnYyRRi8eG97N u2MA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linux.org.uk header.s=zeniv-20220401 header.b="EWKMwUo/"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:3 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=zeniv.linux.org.uk Return-Path: Received: from lipwig.vger.email (lipwig.vger.email. [2620:137:e000::3:3]) by mx.google.com with ESMTPS id gm10-20020a17090b100a00b00280ca5f4ca5si4264690pjb.113.2023.12.04.18.26.05 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 04 Dec 2023 18:26:05 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:3 as permitted sender) client-ip=2620:137:e000::3:3; Authentication-Results: mx.google.com; dkim=pass header.i=@linux.org.uk header.s=zeniv-20220401 header.b="EWKMwUo/"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:3 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=zeniv.linux.org.uk Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by lipwig.vger.email (Postfix) with ESMTP id 3EFAF804C1B7; Mon, 4 Dec 2023 18:25:56 -0800 (PST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.11 at lipwig.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1346443AbjLECZO (ORCPT + 99 others); Mon, 4 Dec 2023 21:25:14 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:56766 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1343930AbjLECYV (ORCPT ); Mon, 4 Dec 2023 21:24:21 -0500 Received: from zeniv.linux.org.uk (zeniv.linux.org.uk [IPv6:2a03:a000:7:0:5054:ff:fe1c:15ff]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 61B3D188; Mon, 4 Dec 2023 18:24:27 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=linux.org.uk; s=zeniv-20220401; h=Sender:Content-Transfer-Encoding: MIME-Version:References:In-Reply-To:Message-Id:Date:Subject:Cc:To:From: Reply-To:Content-Type:Content-ID:Content-Description; bh=74v1Dg7yBE+4rxKY7xG9GKf0VfPvIUvY43ZeQBhdM3Q=; b=EWKMwUo/8wy48J2pbhY4lZQO23 0qzFugxTNoAEN6C3h1KbXW06gdXjkl9CqZv7usDSVDKr80lCUxKcKZxBy8LKYDmVrmg4aKvu0VmDX +p9QYkUT4Z2f6nJrtyEdqzDM+f1F62cMM27GViWZ3YgS8hhd8EJDkG5nxKPjhEgAZtxKv0VPgOT/7 ZVkplcpBO0uxfZREfI74yQaoSzesyndzqXv9pG2+vxzVC3mcLQI262SXcVvPvD/1kgQ0oZA5qf43F m0lTQWnFZR66n1NUUVBB2R4Z4a32Ev+UDB0weLenVXhsqAzhEJoqPf+8pKjQ/W75uqtjktbrPL8wM /Al/5kWQ==; Received: from viro by zeniv.linux.org.uk with local (Exim 4.96 #2 (Red Hat Linux)) id 1rAL6h-007924-0V; Tue, 05 Dec 2023 02:24:19 +0000 From: Al Viro To: linux-arch@vger.kernel.org Cc: gus Gusenleitner Klaus , Al Viro , Thomas Gleixner , lkml , Ingo Molnar , "bp@alien8.de" , "dave.hansen@linux.intel.com" , "x86@kernel.org" , "David S. Miller" , "dsahern@kernel.org" , "kuba@kernel.org" , Paolo Abeni , Eric Dumazet Subject: [PATCH v2 2/9] ocfs2: Avoid touching renamed directory if parent does not change Date: Tue, 5 Dec 2023 02:23:55 +0000 Message-Id: <20231205022418.1703007-4-viro@zeniv.linux.org.uk> X-Mailer: git-send-email 2.40.1 In-Reply-To: <20231205022418.1703007-1-viro@zeniv.linux.org.uk> References: <20231205022100.GB1674809@ZenIV> <20231205022418.1703007-1-viro@zeniv.linux.org.uk> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Sender: Al Viro X-Spam-Status: No, score=-0.8 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,SPF_HELO_NONE, SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lipwig.vger.email Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (lipwig.vger.email [0.0.0.0]); Mon, 04 Dec 2023 18:25:56 -0800 (PST) From: Jan Kara The VFS will not be locking moved directory if its parent does not change. Change ocfs2 rename code to avoid touching renamed directory if its parent does not change as without locking that can corrupt the filesystem. Signed-off-by: Jan Kara Signed-off-by: Al Viro --- fs/ocfs2/namei.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/fs/ocfs2/namei.c b/fs/ocfs2/namei.c index 814733ba2f4b..9221a33f917b 100644 --- a/fs/ocfs2/namei.c +++ b/fs/ocfs2/namei.c @@ -1336,7 +1336,7 @@ static int ocfs2_rename(struct mnt_idmap *idmap, goto bail; } - if (S_ISDIR(old_inode->i_mode)) { + if (S_ISDIR(old_inode->i_mode) && new_dir != old_dir) { u64 old_inode_parent; update_dot_dot = 1; @@ -1353,8 +1353,7 @@ static int ocfs2_rename(struct mnt_idmap *idmap, goto bail; } - if (!new_inode && new_dir != old_dir && - new_dir->i_nlink >= ocfs2_link_max(osb)) { + if (!new_inode && new_dir->i_nlink >= ocfs2_link_max(osb)) { status = -EMLINK; goto bail; } @@ -1601,6 +1600,9 @@ static int ocfs2_rename(struct mnt_idmap *idmap, mlog_errno(status); goto bail; } + } + + if (S_ISDIR(old_inode->i_mode)) { drop_nlink(old_dir); if (new_inode) { drop_nlink(new_inode); -- 2.39.2