]> git.ipfire.org Git - people/ms/linux.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)
commit035ff33cf4db101250fb980a3941bf078f37a544
tree0fda3aa19a62f49540903c49112ec03bc58e3c5d
parentf2906aa863381afb0015a9eb7fefad885d4e5a56
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: 36ea23374d1f ("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