Luís Henriques f5380a
From: Miklos Szeredi <mszeredi@redhat.com>
Luís Henriques f5380a
Date: Fri, 22 Oct 2021 17:03:03 +0200
Luís Henriques f5380a
Subject: fuse: fix attr version comparison in fuse_read_update_size()
Luís Henriques f5380a
Git-commit: 484ce65715b06aead8c4901f01ca32c5a240bc71
Luís Henriques f5380a
Patch-mainline: v5.16-rc1
Luís Henriques f5380a
References: bsc#1211807
Luís Henriques f5380a
Luís Henriques f5380a
A READ request returning a short count is taken as indication of EOF, and
Luís Henriques f5380a
the cached file size is modified accordingly.
Luís Henriques f5380a
Luís Henriques f5380a
Fix the attribute version checking to allow for changes to fc->attr_version
Luís Henriques f5380a
on other inodes.
Luís Henriques f5380a
Luís Henriques f5380a
Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
Luís Henriques f5380a
Acked-by: Luís Henriques <lhenriques@suse.de>
Luís Henriques f5380a
Luís Henriques f5380a
---
Luís Henriques f5380a
 fs/fuse/file.c | 2 +-
Luís Henriques f5380a
 1 file changed, 1 insertion(+), 1 deletion(-)
Luís Henriques f5380a
Luís Henriques f5380a
diff --git a/fs/fuse/file.c b/fs/fuse/file.c
Luís Henriques f5380a
index c3fd88da2a0b..ddd563fda648 100644
Luís Henriques f5380a
--- a/fs/fuse/file.c
Luís Henriques f5380a
+++ b/fs/fuse/file.c
Luís Henriques f5380a
@@ -787,7 +787,7 @@ static void fuse_read_update_size(struct inode *inode, loff_t size,
Luís Henriques f5380a
 	struct fuse_inode *fi = get_fuse_inode(inode);
Luís Henriques f5380a
 
Luís Henriques f5380a
 	spin_lock(&fi->lock);
Luís Henriques f5380a
-	if (attr_ver == fi->attr_version && size < inode->i_size &&
Luís Henriques f5380a
+	if (attr_ver >= fi->attr_version && size < inode->i_size &&
Luís Henriques f5380a
 	    !test_bit(FUSE_I_SIZE_UNSTABLE, &fi->state)) {
Luís Henriques f5380a
 		fi->attr_version = atomic64_inc_return(&fc->attr_version);
Luís Henriques f5380a
 		i_size_write(inode, size);
Luís Henriques f5380a