[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PULL 4/9] virtiofsd: Don't allow empty paths in lookup_name()
From: |
Dr. David Alan Gilbert (git) |
Subject: |
[PULL 4/9] virtiofsd: Don't allow empty paths in lookup_name() |
Date: |
Mon, 15 Mar 2021 20:12:10 +0000 |
From: Greg Kurz <groug@kaod.org>
When passed an empty filename, lookup_name() returns the inode of
the parent directory, unless the parent is the root in which case
the st_dev doesn't match and lo_find() returns NULL. This is
because lookup_name() passes AT_EMPTY_PATH down to fstatat() or
statx().
This behavior doesn't quite make sense because users of lookup_name()
then pass the name to unlinkat(), renameat() or renameat2(), all of
which will always fail on empty names.
Drop AT_EMPTY_PATH from the flags in lookup_name() so that it has
the consistent behavior of "returning an existing child inode or
NULL" for all directories.
Signed-off-by: Greg Kurz <groug@kaod.org>
Message-Id: <20210312141003.819108-2-groug@kaod.org>
Reviewed-by: Connor Kuehl <ckuehl@redhat.com>
Reviewed-by: Vivek Goyal <vgoyal@redhat.com>
Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
---
tools/virtiofsd/passthrough_ll.c | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/tools/virtiofsd/passthrough_ll.c b/tools/virtiofsd/passthrough_ll.c
index b07101d8eb..cf453eea9b 100644
--- a/tools/virtiofsd/passthrough_ll.c
+++ b/tools/virtiofsd/passthrough_ll.c
@@ -1330,8 +1330,7 @@ static struct lo_inode *lookup_name(fuse_req_t req,
fuse_ino_t parent,
return NULL;
}
- res = do_statx(lo, dir->fd, name, &attr,
- AT_EMPTY_PATH | AT_SYMLINK_NOFOLLOW, &mnt_id);
+ res = do_statx(lo, dir->fd, name, &attr, AT_SYMLINK_NOFOLLOW, &mnt_id);
lo_inode_put(lo, &dir);
if (res == -1) {
return NULL;
--
2.30.2
- [PULL 0/9] virtiofs and migration queue, Dr. David Alan Gilbert (git), 2021/03/15
- [PULL 1/9] virtiofsd: Release vu_dispatch_lock when stopping queue, Dr. David Alan Gilbert (git), 2021/03/15
- [PULL 2/9] virtiofsd: Add qemu version and copyright info, Dr. David Alan Gilbert (git), 2021/03/15
- [PULL 3/9] virtiofsd: Don't allow empty filenames, Dr. David Alan Gilbert (git), 2021/03/15
- [PULL 4/9] virtiofsd: Don't allow empty paths in lookup_name(),
Dr. David Alan Gilbert (git) <=
- [PULL 7/9] migration/tls: add error handling in multifd_tls_handshake_thread, Dr. David Alan Gilbert (git), 2021/03/15
- [PULL 5/9] virtiofsd: Convert some functions to return bool, Dr. David Alan Gilbert (git), 2021/03/15
- [PULL 8/9] monitor: Replaced qemu_mutex_lock calls with QEMU_LOCK_GUARD, Dr. David Alan Gilbert (git), 2021/03/15
- [PULL 6/9] migration/tls: fix inverted semantics in multifd_channel_connect, Dr. David Alan Gilbert (git), 2021/03/15
- [PULL 9/9] migration: Replaced qemu_mutex_lock calls with QEMU_LOCK_GUARD, Dr. David Alan Gilbert (git), 2021/03/15
- Re: [PULL 0/9] virtiofs and migration queue, Peter Maydell, 2021/03/17