fuse: set FUSE_WRITE_KILL_SUIDGID in cached write path
authorVivek Goyal <vgoyal@redhat.com>
Fri, 9 Oct 2020 18:15:08 +0000 (14:15 -0400)
committerMiklos Szeredi <mszeredi@redhat.com>
Wed, 11 Nov 2020 16:22:33 +0000 (17:22 +0100)
commitb866739596ae3c3c60c43f1cf04a516c5aa20fd1
treef069020d9cdb3f3ba378bc97650605ab7369a84b
parent10c52c84e3f4872689a64ac7666b34d67e630691
fuse: set FUSE_WRITE_KILL_SUIDGID in cached write path

With HANDLE_KILLPRIV_V2, server will need to kill suid/sgid if caller does
not have CAP_FSETID.  We already have a flag FUSE_WRITE_KILL_SUIDGID in
WRITE request and we already set it in direct I/O path.

To make it work in cached write path also, start setting
FUSE_WRITE_KILL_SUIDGID in this path too.

Set it only if fc->handle_killpriv_v2 is set.  Otherwise client is
responsible for kill suid/sgid.

In case of direct I/O we set FUSE_WRITE_KILL_SUIDGID unconditionally
because we don't call file_remove_privs() in that path (with cache=none
option).

Signed-off-by: Vivek Goyal <vgoyal@redhat.com>
Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
fs/fuse/file.c