From: Greg Kroah-Hartman Date: Sun, 16 Jul 2023 14:52:57 +0000 (+0200) Subject: 6.1-stable patches X-Git-Tag: v6.1.39~64 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=ce3b0843cce70dd204d3ec7016802537a8e720a7;p=thirdparty%2Fkernel%2Fstable-queue.git 6.1-stable patches added patches: fs-no-need-to-check-source.patch --- diff --git a/queue-6.1/fs-no-need-to-check-source.patch b/queue-6.1/fs-no-need-to-check-source.patch new file mode 100644 index 00000000000..6e48eade49f --- /dev/null +++ b/queue-6.1/fs-no-need-to-check-source.patch @@ -0,0 +1,45 @@ +From 66d8fc0539b0d49941f313c9509a8384e4245ac1 Mon Sep 17 00:00:00 2001 +From: Jan Kara +Date: Mon, 3 Jul 2023 16:49:11 +0200 +Subject: fs: no need to check source + +From: Jan Kara + +commit 66d8fc0539b0d49941f313c9509a8384e4245ac1 upstream. + +The @source inode must be valid. It is even checked via IS_SWAPFILE() +above making it pretty clear. So no need to check it when we unlock. + +What doesn't need to exist is the @target inode. The lock_two_inodes() +helper currently swaps the @inode1 and @inode2 arguments if @inode1 is +NULL to have consistent lock class usage. However, we know that at least +for vfs_rename() that @inode1 is @source and thus is never NULL as per +above. We also know that @source is a different inode than @target as +that is checked right at the beginning of vfs_rename(). So we know that +@source is valid and locked and that @target is locked. So drop the +check whether @source is non-NULL. + +Fixes: 28eceeda130f ("fs: Lock moved directories") +Reported-by: kernel test robot +Reported-by: Dan Carpenter +Closes: https://lore.kernel.org/r/202307030026.9sE2pk2x-lkp@intel.com +Message-Id: <20230703-vfs-rename-source-v1-1-37eebb29b65b@kernel.org> +[brauner: use commit message from patch I sent concurrently] +Signed-off-by: Christian Brauner +Signed-off-by: Greg Kroah-Hartman +--- + fs/namei.c | 3 +-- + 1 file changed, 1 insertion(+), 2 deletions(-) + +--- a/fs/namei.c ++++ b/fs/namei.c +@@ -4802,8 +4802,7 @@ int vfs_rename(struct renamedata *rd) + d_exchange(old_dentry, new_dentry); + } + out: +- if (source) +- inode_unlock(source); ++ inode_unlock(source); + if (target) + inode_unlock(target); + dput(new_dentry); diff --git a/queue-6.1/series b/queue-6.1/series index 45020b60045..fc83f5eb22b 100644 --- a/queue-6.1/series +++ b/queue-6.1/series @@ -582,3 +582,4 @@ arm-dts-qcom-ipq4019-fix-broken-nand-controller-properties-override.patch arm-orion5x-fix-d2net-gpio-initialization.patch leds-trigger-netdev-recheck-netdev_led_mode_linkup-on-dev-rename.patch blktrace-use-inline-function-for-blk_trace_remove-while-blktrace-is-disabled.patch +fs-no-need-to-check-source.patch