[Virtio-fs] [PATCH] virtiofsd: Open fd O_RDONLY in setxattr/removexattr
Eryu Guan
eguan at linux.alibaba.com
Thu Jan 9 02:23:03 UTC 2020
On Wed, Jan 08, 2020 at 03:24:22PM -0500, Vivek Goyal wrote:
> Do not open fd O_RDWR as it will fail for directories with EISDIR. This
> code can be called both for regular files as well as directories.
>
> I noticed this when I tried "setfattr -n user.foo -v test <dir>" inside
> the guest and got EISDIR.
>
> To write xattr, we don't have to open fd with write permissions. Looks
> like kernel will do permission checks on inode.
>
> Signed-off-by: Vivek Goyal <vgoyal at redhat.com>
Looks good to me.
Reviewed-by: Eryu Guan <eguan at linux.alibaba.com>
> ---
> contrib/virtiofsd/passthrough_ll.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> Index: qemu/contrib/virtiofsd/passthrough_ll.c
> ===================================================================
> --- qemu.orig/contrib/virtiofsd/passthrough_ll.c 2020-01-08 15:01:03.821980889 -0500
> +++ qemu/contrib/virtiofsd/passthrough_ll.c 2020-01-08 15:05:15.209384352 -0500
> @@ -2424,7 +2424,7 @@ static void lo_setxattr(fuse_req_t req,
> }
>
> sprintf(procname, "%i", inode->fd);
> - fd = openat(lo->proc_self_fd, procname, O_RDWR);
> + fd = openat(lo->proc_self_fd, procname, O_RDONLY);
> if (fd < 0) {
> saverr = errno;
> goto out;
> @@ -2473,7 +2473,7 @@ static void lo_removexattr(fuse_req_t re
> }
>
> sprintf(procname, "%i", inode->fd);
> - fd = openat(lo->proc_self_fd, procname, O_RDWR);
> + fd = openat(lo->proc_self_fd, procname, O_RDONLY);
> if (fd < 0) {
> saverr = errno;
> goto out;
>
> _______________________________________________
> Virtio-fs mailing list
> Virtio-fs at redhat.com
> https://www.redhat.com/mailman/listinfo/virtio-fs
More information about the Virtio-fs
mailing list