On 2024/9/25 10:09, Al Viro wrote:
On Wed, Sep 25, 2024 at 09:56:24AM +0800, Hongbo Li wrote:
@@ -156,6 +156,9 @@ int fs_lookup_param(struct fs_context *fc,
f = getname_kernel(param->string);
if (IS_ERR(f))
return PTR_ERR(f);
+ /* for relative path */
+ if (f->name[0] != '/')
+ param->dirfd = AT_FDCWD;
Will need to dig around for some context, but this bit definitely makes
no sense - dirfd is completely ignored for absolute pathnames, so making
that store conditional is pointless.
Only do it for relative path. As mentioned in [1], if the "journal_path"
is treated as FSCONFIG_SET_PATH may be better, but mount(8) is passing a
string (which uses FSCONFIG_SET_STRING for "journal_path"). For the
relative path case, the dirfd should be assigned.
[1]
https://lore.kernel.org/all/20240527-mahlen-packung-3fe035ab390d@brauner/
Thanks,
Hongbo