[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PULL 11/20] virtiofsd: Fix fuse setxattr() API change issue
From: |
Dr. David Alan Gilbert (git) |
Subject: |
[PULL 11/20] virtiofsd: Fix fuse setxattr() API change issue |
Date: |
Thu, 1 Jul 2021 15:15:36 +0100 |
From: Vivek Goyal <vgoyal@redhat.com>
With kernel header updates fuse_setxattr_in struct has grown in size.
But this new struct size only takes affect if user has opted in
for fuse feature FUSE_SETXATTR_EXT otherwise fuse continues to
send "fuse_setxattr_in" of older size. Older size is determined
by FUSE_COMPAT_SETXATTR_IN_SIZE.
Fix this. If we have not opted in for FUSE_SETXATTR_EXT, then
expect that we will get fuse_setxattr_in of size FUSE_COMPAT_SETXATTR_IN_SIZE
and not sizeof(struct fuse_sexattr_in).
Fixes: 278f064e4524 ("Update Linux headers to 5.13-rc4")
Signed-off-by: Vivek Goyal <vgoyal@redhat.com>
Message-Id: <20210622150852.1507204-2-vgoyal@redhat.com>
Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
Reviewed-by: Greg Kurz <groug@kaod.org>
Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
---
tools/virtiofsd/fuse_common.h | 5 +++++
tools/virtiofsd/fuse_lowlevel.c | 7 ++++++-
2 files changed, 11 insertions(+), 1 deletion(-)
diff --git a/tools/virtiofsd/fuse_common.h b/tools/virtiofsd/fuse_common.h
index fa9671872e..0c2665b977 100644
--- a/tools/virtiofsd/fuse_common.h
+++ b/tools/virtiofsd/fuse_common.h
@@ -372,6 +372,11 @@ struct fuse_file_info {
*/
#define FUSE_CAP_HANDLE_KILLPRIV_V2 (1 << 28)
+/**
+ * Indicates that file server supports extended struct fuse_setxattr_in
+ */
+#define FUSE_CAP_SETXATTR_EXT (1 << 29)
+
/**
* Ioctl flags
*
diff --git a/tools/virtiofsd/fuse_lowlevel.c b/tools/virtiofsd/fuse_lowlevel.c
index 3d725bcba2..2028677907 100644
--- a/tools/virtiofsd/fuse_lowlevel.c
+++ b/tools/virtiofsd/fuse_lowlevel.c
@@ -1425,8 +1425,13 @@ static void do_setxattr(fuse_req_t req, fuse_ino_t
nodeid,
struct fuse_setxattr_in *arg;
const char *name;
const char *value;
+ bool setxattr_ext = req->se->conn.want & FUSE_CAP_SETXATTR_EXT;
- arg = fuse_mbuf_iter_advance(iter, sizeof(*arg));
+ if (setxattr_ext) {
+ arg = fuse_mbuf_iter_advance(iter, sizeof(*arg));
+ } else {
+ arg = fuse_mbuf_iter_advance(iter, FUSE_COMPAT_SETXATTR_IN_SIZE);
+ }
name = fuse_mbuf_iter_advance_str(iter);
if (!arg || !name) {
fuse_reply_err(req, EINVAL);
--
2.31.1
- [PULL 01/20] tests: migration-test: Still run the rest even if uffd missing, (continued)
- [PULL 01/20] tests: migration-test: Still run the rest even if uffd missing, Dr. David Alan Gilbert (git), 2021/07/01
- [PULL 02/20] tests: migration-test: Add dirty ring test, Dr. David Alan Gilbert (git), 2021/07/01
- [PULL 03/20] migration: fix the memory overwriting risk in add_to_iovec, Dr. David Alan Gilbert (git), 2021/07/01
- [PULL 04/20] migration: Move yank outside qemu_start_incoming_migration(), Dr. David Alan Gilbert (git), 2021/07/01
- [PULL 05/20] migration: Allow reset of postcopy_recover_triggered when failed, Dr. David Alan Gilbert (git), 2021/07/01
- [PULL 06/20] migration: move wait-unplug loop to its own function, Dr. David Alan Gilbert (git), 2021/07/01
- [PULL 07/20] migration: failover: continue to wait card unplug on error, Dr. David Alan Gilbert (git), 2021/07/01
- [PULL 08/20] virtiofsd: use GDateTime for formatting timestamp for debug messages, Dr. David Alan Gilbert (git), 2021/07/01
- [PULL 09/20] docs: describe the security considerations with virtiofsd xattr mapping, Dr. David Alan Gilbert (git), 2021/07/01
- [PULL 10/20] virtiofsd: Don't allow file creation with FUSE_OPEN, Dr. David Alan Gilbert (git), 2021/07/01
- [PULL 11/20] virtiofsd: Fix fuse setxattr() API change issue,
Dr. David Alan Gilbert (git) <=
- [PULL 12/20] virtiofsd: Fix xattr operations overwriting errno, Dr. David Alan Gilbert (git), 2021/07/01
- [PULL 13/20] virtiofsd: Add support for extended setxattr, Dr. David Alan Gilbert (git), 2021/07/01
- [PULL 14/20] virtiofsd: Add umask to seccom allow list, Dr. David Alan Gilbert (git), 2021/07/01
- [PULL 15/20] virtiofsd: Add capability to change/restore umask, Dr. David Alan Gilbert (git), 2021/07/01
- [PULL 16/20] virtiofsd: Switch creds, drop FSETID for system.posix_acl_access xattr, Dr. David Alan Gilbert (git), 2021/07/01
- [PULL 17/20] virtiofsd: Add an option to enable/disable posix acls, Dr. David Alan Gilbert (git), 2021/07/01
- [PULL 18/20] tests/migration: parse the thread-id key of CpuInfoFast, Dr. David Alan Gilbert (git), 2021/07/01
- [PULL 19/20] tests/migration: fix "downtime_limit" type when "migrate-set-parameters", Dr. David Alan Gilbert (git), 2021/07/01
- [PULL 20/20] migration/rdma: Use error_report to suppress errno message, Dr. David Alan Gilbert (git), 2021/07/01
- Re: [PULL 00/20] migration queue, Peter Maydell, 2021/07/05