[Virtio-fs] [PATCH] virtiofsd: Open fd O_RDONLY in setxattr/removexattr
Vivek Goyal
vgoyal at redhat.com
Wed Jan 8 20:24:22 UTC 2020
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>
---
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;
More information about the Virtio-fs
mailing list