linux-sg2042/fs/fuse
Miklos Szeredi b24e7598db fuse: flush dirty data/metadata before non-truncate setattr
If writeback cache is enabled, then writes might get reordered with
chmod/chown/utimes.  The problem with this is that performing the write in
the fuse daemon might itself change some of these attributes.  In such case
the following sequence of operations will result in file ending up with the
wrong mode, for example:

  int fd = open ("suid", O_WRONLY|O_CREAT|O_EXCL);
  write (fd, "1", 1);
  fchown (fd, 0, 0);
  fchmod (fd, 04755);
  close (fd);

This patch fixes this by flushing pending writes before performing
chown/chmod/utimes.

Reported-by: Giuseppe Scrivano <gscrivan@redhat.com>
Tested-by: Giuseppe Scrivano <gscrivan@redhat.com>
Fixes: 4d99ff8f12 ("fuse: Turn writeback cache on")
Cc: <stable@vger.kernel.org> # v3.15+
Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
2019-10-23 14:26:37 +02:00
..
Kconfig virtio-fs: add virtiofs filesystem 2019-09-18 20:17:50 +02:00
Makefile virtio-fs: Change module name to virtiofs.ko 2019-10-14 10:20:33 +02:00
acl.c fuse: Support fuse filesystems outside of init_user_ns 2018-03-20 17:11:44 +01:00
control.c convenience helper: get_tree_single() 2019-07-04 22:01:58 -04:00
cuse.c fuse: fix memleak in cuse_channel_open 2019-09-24 15:28:01 +02:00
dev.c fuse: don't dereference req->args on finished request 2019-10-21 09:11:40 +02:00
dir.c fuse: flush dirty data/metadata before non-truncate setattr 2019-10-23 14:26:37 +02:00
file.c fuse: kmemcg account fs data 2019-09-24 15:28:01 +02:00
fuse_i.h virtio-fs: don't show mount options 2019-10-15 16:11:41 +02:00
inode.c virtio-fs: don't show mount options 2019-10-15 16:11:41 +02:00
readdir.c fuse: fix beyond-end-of-page access in fuse_parse_cache() 2019-09-24 15:28:01 +02:00
virtio_fs.c virtiofs: Remove set but not used variable 'fc' 2019-10-23 10:25:17 +02:00
xattr.c fuse: rearrange and resize fuse_args fields 2019-09-10 16:29:48 +02:00