diff options
author | Max Reitz <mreitz@redhat.com> | 2021-06-25 16:23:12 +0200 |
---|---|---|
committer | Kevin Wolf <kwolf@redhat.com> | 2021-07-09 12:26:05 +0200 |
commit | 2c7dd057aa7bd7a875e9b1a53975c220d6380bc4 (patch) | |
tree | 38e92d88bf97d121a165c3dd090007389fffe479 | |
parent | c2615bdfbd6d5a1a48438102f8ab328fe30b8e27 (diff) |
export/fuse: Pass default_permissions for mount
We do not do any permission checks in fuse_open(), so let the kernel do
them. We already let fuse_getattr() report the proper UNIX permissions,
so this should work the way we want.
This causes a change in 308's reference output, because now opening a
non-writable export with O_RDWR fails already, instead of only actually
attempting to write to it. (That is an improvement.)
Signed-off-by: Max Reitz <mreitz@redhat.com>
Message-Id: <20210625142317.271673-2-mreitz@redhat.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
-rw-r--r-- | block/export/fuse.c | 8 | ||||
-rwxr-xr-x | tests/qemu-iotests/308 | 3 | ||||
-rw-r--r-- | tests/qemu-iotests/308.out | 2 |
3 files changed, 9 insertions, 4 deletions
diff --git a/block/export/fuse.c b/block/export/fuse.c index 38f74c94da..d0b88e8f80 100644 --- a/block/export/fuse.c +++ b/block/export/fuse.c @@ -153,8 +153,12 @@ static int setup_fuse_export(FuseExport *exp, const char *mountpoint, struct fuse_args fuse_args; int ret; - /* Needs to match what fuse_init() sets. Only max_read must be supplied. */ - mount_opts = g_strdup_printf("max_read=%zu", FUSE_MAX_BOUNCE_BYTES); + /* + * max_read needs to match what fuse_init() sets. + * max_write need not be supplied. + */ + mount_opts = g_strdup_printf("max_read=%zu,default_permissions", + FUSE_MAX_BOUNCE_BYTES); fuse_argv[0] = ""; /* Dummy program name */ fuse_argv[1] = "-o"; diff --git a/tests/qemu-iotests/308 b/tests/qemu-iotests/308 index f122065d0f..11c28a75f2 100755 --- a/tests/qemu-iotests/308 +++ b/tests/qemu-iotests/308 @@ -215,7 +215,8 @@ echo '=== Writable export ===' fuse_export_add 'export-mp' "'mountpoint': '$EXT_MP', 'writable': true" # Check that writing to the read-only export fails -$QEMU_IO -f raw -c 'write -P 42 1M 64k' "$TEST_IMG" | _filter_qemu_io +$QEMU_IO -f raw -c 'write -P 42 1M 64k' "$TEST_IMG" 2>&1 \ + | _filter_qemu_io | _filter_testdir | _filter_imgfmt # But here it should work $QEMU_IO -f raw -c 'write -P 42 1M 64k' "$EXT_MP" | _filter_qemu_io diff --git a/tests/qemu-iotests/308.out b/tests/qemu-iotests/308.out index 466e7e0267..0e9420645f 100644 --- a/tests/qemu-iotests/308.out +++ b/tests/qemu-iotests/308.out @@ -91,7 +91,7 @@ virtual size: 0 B (0 bytes) 'mountpoint': 'TEST_DIR/t.IMGFMT.fuse', 'writable': true } } {"return": {}} -write failed: Permission denied +qemu-io: can't open device TEST_DIR/t.IMGFMT: Could not open 'TEST_DIR/t.IMGFMT': Permission denied wrote 65536/65536 bytes at offset 1048576 64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) wrote 65536/65536 bytes at offset 1048576 |