From cfbffb56b1d70e3e001ececf9ad127d2b5452f5b Mon Sep 17 00:00:00 2001 From: Luís Henriques Date: May 29 2023 13:11:02 +0000 Subject: fuse: always revalidate rename target dentry (bsc#1211808). --- diff --git a/patches.suse/fuse-always-revalidate-rename-target-dentry.patch b/patches.suse/fuse-always-revalidate-rename-target-dentry.patch new file mode 100644 index 0000000..abbdd13 --- /dev/null +++ b/patches.suse/fuse-always-revalidate-rename-target-dentry.patch @@ -0,0 +1,37 @@ +From: Jiachen Zhang +Date: Wed, 28 Sep 2022 20:19:34 +0800 +Subject: fuse: always revalidate rename target dentry +Git-commit: ccc031e26afe60d2a5a3d93dabd9c978210825fb +Patch-mainline: v6.2-rc1 +References: bsc#1211808 + +The previous commit df8629af2934 ("fuse: always revalidate if exclusive +create") ensures that the dentries are revalidated on O_EXCL creates. This +commit complements it by also performing revalidation for rename target +dentries. Otherwise, a rename target file that only exists in kernel +dentry cache but not in the filesystem will result in EEXIST if +RENAME_NOREPLACE flag is used. + +Signed-off-by: Jiachen Zhang +Signed-off-by: Zhang Tianci +Signed-off-by: Miklos Szeredi +Acked-by: Luís Henriques + +--- + fs/fuse/dir.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/fs/fuse/dir.c b/fs/fuse/dir.c +index d092c7d75929..2c4b08a6ec81 100644 +--- a/fs/fuse/dir.c ++++ b/fs/fuse/dir.c +@@ -214,7 +214,7 @@ static int fuse_dentry_revalidate(struct dentry *entry, unsigned int flags) + if (inode && fuse_is_bad(inode)) + goto invalid; + else if (time_before64(fuse_dentry_time(entry), get_jiffies_64()) || +- (flags & (LOOKUP_EXCL | LOOKUP_REVAL))) { ++ (flags & (LOOKUP_EXCL | LOOKUP_REVAL | LOOKUP_RENAME_TARGET))) { + struct fuse_entry_out outarg; + FUSE_ARGS(args); + struct fuse_forget_link *forget; + diff --git a/series.conf b/series.conf index a2eeb6e..29796ee 100644 --- a/series.conf +++ b/series.conf @@ -17736,6 +17736,7 @@ patches.suse/ext4-allocate-extended-attribute-value-in-vmalloc-ar.patch patches.suse/ext4-fix-inode-leak-in-ext4_xattr_inode_create-on-an.patch patches.suse/ext4-fix-reserved-cluster-accounting-in-__es_remove_.patch + patches.suse/fuse-always-revalidate-rename-target-dentry.patch patches.suse/NFSD-Finish-converting-the-NFSv2-GETACL-result-encod.patch patches.suse/NFSD-Finish-converting-the-NFSv3-GETACL-result-encod.patch patches.suse/nfsd-don-t-call-nfsd_file_put-from-client-states-seq.patch