]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
fs: support relative paths with FSCONFIG_SET_STRING
authorHongbo Li <lihongbo22@huawei.com>
Wed, 25 Sep 2024 01:56:24 +0000 (09:56 +0800)
committerChristian Brauner <brauner@kernel.org>
Wed, 2 Oct 2024 05:52:33 +0000 (07:52 +0200)
The fs_lookup_param did not consider the relative path for block device.
When we mount ext4 with journal_path option using relative path,
param->dirfd was not set which will cause mounting error.

This can be reproduced easily like this:

mke2fs -F -O journal_dev $JOURNAL_DEV -b 4096 100M
mkfs.ext4 -F -J device=$JOURNAL_DEV -b 4096 $FS_DEV
cd /dev; mount -t ext4 -o journal_path=`basename $JOURNAL_DEV` $FS_DEV $MNT

Fixes: 461c3af045d3 ("ext4: Change handle_mount_opt() to use fs_parameter")
Suggested-by: Christian Brauner <brauner@kernel.org>
Signed-off-by: Hongbo Li <lihongbo22@huawei.com>
Link: https://lore.kernel.org/r/20240925015624.3817878-1-lihongbo22@huawei.com
Signed-off-by: Christian Brauner <brauner@kernel.org>
fs/fs_parser.c

index 24727ec34e5aa434364e87879cccf9fe1ec19d37..698464f3e26a82e721c4bcce8424b888aadbc0ab 100644 (file)
@@ -156,6 +156,7 @@ int fs_lookup_param(struct fs_context *fc,
                f = getname_kernel(param->string);
                if (IS_ERR(f))
                        return PTR_ERR(f);
+               param->dirfd = AT_FDCWD;
                put_f = true;
                break;
        case fs_value_is_filename: