Received: by 2002:a05:7412:2a8c:b0:e2:908c:2ebd with SMTP id u12csp3410431rdh; Thu, 28 Sep 2023 10:43:56 -0700 (PDT) X-Google-Smtp-Source: AGHT+IHB0I4nAP93/P9Baof6ivXV380hAdD2enf9kLvdfSbUu/WiGuXp7qgpuF6cshJZaf0FWCv6 X-Received: by 2002:a05:6a21:2726:b0:121:e573:3680 with SMTP id rm38-20020a056a21272600b00121e5733680mr1599296pzb.62.1695923036208; Thu, 28 Sep 2023 10:43:56 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1695923036; cv=none; d=google.com; s=arc-20160816; b=0r8dUrwJY+EOMSHvSvXXEzTAmZkMtsVuS6GzruuZudvwrWnp7NijJdo3NQpWqaPWkZ ySu60/a8SRV3v9wpl26Lto6/SYn1QtOhbIYlvHBHn7cWerRAVdIdE/dJeCLAIL1ja/vi Em6bwqu3z08eb5/4aoZlcJrknK0we4f9ocLyiRGjSNRdz4isNvQbCngCY9Jf4UB5sE7L uQJa0+7dyiLIpsA6nitp9FP7gx5ttI/9/2VKx+Y9oBDrmeicqiMZ/bEozHoYopJ8p3zs MTIRR0izA4gKAytWSFnZjS6nb5Bn0171tV4dzDEt0bN+PmHMKq+GF0XPKNG4yfRKBjDL xEBg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :message-id:date:subject:cc:to:from:dkim-signature:dkim-signature; bh=TMVO4JWLEU7kHL3FVMMwI/4b1Qo5sbRkTUZ8Yb+qirM=; fh=fciSVGILx1+3W+cWTz5M4UK4jYfML/V4M7yN3A+ltE4=; b=XIqYA+SIWViwd1JvY7XH0Q5VoZ4AheRM4WTA6A72y5+0HfeSGDp8fUpAZWuumYjt4l 4nGzqOz9OOxz89jHbW89U5Zb4g3oe3dJj97hp3Zhoo3UWh92xWIFObo0Efb7/ewvyzv5 fyAlBB/sntCztwPhA6q7g/VJXuhZd5k5KrQFYoHFgDp7mXAx26U39rwHxIcV78lM1sXM bs5SYw/mLzcaj/JnttbrDxOHkFceoGgwVFep4wFz0IuqqpzYsjFrybLhEHd0CnL64LeI 1f9XYlQtSwYltLowcA7KjJIx2NroSey2FdIMPBAOgizUhTJSrCAdy/zwFFFkvksq1hmH ghSQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@suse.de header.s=susede2_rsa header.b=ySQHLJcE; dkim=neutral (no key) header.i=@suse.de header.s=susede2_ed25519 header.b=L318WkBy; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:5 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=suse.de Return-Path: Received: from groat.vger.email (groat.vger.email. [2620:137:e000::3:5]) by mx.google.com with ESMTPS id z17-20020a17090a541100b0027761f79905si10566062pjh.128.2023.09.28.10.43.55 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 28 Sep 2023 10:43:56 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:5 as permitted sender) client-ip=2620:137:e000::3:5; Authentication-Results: mx.google.com; dkim=pass header.i=@suse.de header.s=susede2_rsa header.b=ySQHLJcE; dkim=neutral (no key) header.i=@suse.de header.s=susede2_ed25519 header.b=L318WkBy; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:5 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=suse.de Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by groat.vger.email (Postfix) with ESMTP id 485CB80268AA; Thu, 28 Sep 2023 08:24:05 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at groat.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231710AbjI1PXr (ORCPT + 99 others); Thu, 28 Sep 2023 11:23:47 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:45456 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231620AbjI1PXq (ORCPT ); Thu, 28 Sep 2023 11:23:46 -0400 Received: from smtp-out1.suse.de (smtp-out1.suse.de [195.135.220.28]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id B01D5AC; Thu, 28 Sep 2023 08:23:44 -0700 (PDT) Received: from imap2.suse-dmz.suse.de (imap2.suse-dmz.suse.de [192.168.254.74]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by smtp-out1.suse.de (Postfix) with ESMTPS id 3E373218EE; Thu, 28 Sep 2023 15:23:43 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa; t=1695914623; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=TMVO4JWLEU7kHL3FVMMwI/4b1Qo5sbRkTUZ8Yb+qirM=; b=ySQHLJcEODl7uYvtim5VAX7ladjWz1XOh0RKHASv29BGkqkQ2mQgWfQXCkU5dL6+D4osZX hUqBBw+uv4odRaITlGeUW4jfKLUwHAe99FGERX+G6lTjVZweXWqiv1e9uzRkZM/axjHlto c6jXihZxTuS32dlyjvdUsjzNcNYSh4I= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_ed25519; t=1695914623; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=TMVO4JWLEU7kHL3FVMMwI/4b1Qo5sbRkTUZ8Yb+qirM=; b=L318WkBygjvdQ5WS2NKz2hxFQwxy+SeJlP/E5DmGlJD1IFzzj+3pnr/0D11mPt6Kb2Tn8k AH/hpYPp4VB2aACQ== Received: from imap2.suse-dmz.suse.de (imap2.suse-dmz.suse.de [192.168.254.74]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by imap2.suse-dmz.suse.de (Postfix) with ESMTPS id B559C138E9; Thu, 28 Sep 2023 15:23:42 +0000 (UTC) Received: from dovecot-director2.suse.de ([192.168.254.65]) by imap2.suse-dmz.suse.de with ESMTPSA id R5KaKH6aFWXoKwAAMHmgww (envelope-from ); Thu, 28 Sep 2023 15:23:42 +0000 Received: from localhost (brahms.olymp [local]) by brahms.olymp (OpenSMTPD) with ESMTPA id a6641159; Thu, 28 Sep 2023 15:23:41 +0000 (UTC) From: =?UTF-8?q?Lu=C3=ADs=20Henriques?= To: Alexander Viro , Christian Brauner , David Howells Cc: Mateusz Guzik , linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org, =?UTF-8?q?Lu=C3=ADs=20Henriques?= Subject: [PATCH v2] fs: simplify misleading code to remove ambiguity regarding ihold()/iput() Date: Thu, 28 Sep 2023 16:23:41 +0100 Message-Id: <20230928152341.303-1-lhenriques@suse.de> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-0.9 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI, SPF_HELO_NONE,SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on groat.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 (groat.vger.email [0.0.0.0]); Thu, 28 Sep 2023 08:24:05 -0700 (PDT) Because 'inode' is being initialised before checking if 'dentry' is negative it looks like an extra iput() on 'inode' may happen since the ihold() is done only if the dentry is *not* negative. In reality this doesn't happen because d_is_negative() is never true if ->d_inode is NULL. This patch only makes the code easier to understand, as I was initially mislead by it. Fixes: b18825a7c8e3 ("VFS: Put a small type field into struct dentry::d_flags") Signed-off-by: Luís Henriques --- Changes since v1: Rephrased commit message to make it clear there isn't a real bug fs/namei.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/fs/namei.c b/fs/namei.c index 567ee547492b..156a570d7831 100644 --- a/fs/namei.c +++ b/fs/namei.c @@ -4386,11 +4386,9 @@ int do_unlinkat(int dfd, struct filename *name) if (!IS_ERR(dentry)) { /* Why not before? Because we want correct error value */ - if (last.name[last.len]) + if (last.name[last.len] || d_is_negative(dentry)) goto slashes; inode = dentry->d_inode; - if (d_is_negative(dentry)) - goto slashes; ihold(inode); error = security_path_unlink(&path, dentry); if (error)