]> git.baikalelectronics.ru Git - kernel.git/commit
fuse: write inode in fuse_release()
authorMiklos Szeredi <mszeredi@redhat.com>
Wed, 20 Apr 2022 14:05:41 +0000 (16:05 +0200)
committerMiklos Szeredi <mszeredi@redhat.com>
Thu, 21 Jul 2022 14:02:45 +0000 (16:02 +0200)
commit0aeb4ffb764899b12218670d8a4b1e21d78cbcb9
tree0fda3aa19a62f49540903c49112ec03bc58e3c5d
parentf040cca4b0da0180bf9de9141ef5c95f60f85182
fuse: write inode in fuse_release()

A race between write(2) and close(2) allows pages to be dirtied after
fuse_flush -> write_inode_now().  If these pages are not flushed from
fuse_release(), then there might not be a writable open file later.  So any
remaining dirty pages must be written back before the file is released.

This is a partial revert of the blamed commit.

Reported-by: syzbot+6e1efbd8efaaa6860e91@syzkaller.appspotmail.com
Fixes: e70b73bd0dd7 ("fuse: write inode in fuse_vma_close() instead of fuse_release()")
Cc: <stable@vger.kernel.org> # v5.16
Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
fs/fuse/file.c