fs: support O_PATH fds with FSCONFIG_SET_FD
Let FSCONFIG_SET_FD handle O_PATH file descriptors. This is particularly
useful in the context of overlayfs where layers can be specified via
file descriptors instead of paths. But userspace must currently use
non-O_PATH file desriptors which is often pointless especially if
the file descriptors have been created via open_tree(OPEN_TREE_CLONE).
Link: https://lore.kernel.org/r/20250210-work-overlayfs-v2-1-ed2a949b674b@kernel.org
Fixes: a08557d19e ("ovl: specify layers via file descriptors")
Reviewed-by: Amir Goldstein <amir73il@gmail.com>
Signed-off-by: Christian Brauner <brauner@kernel.org>
pull/1113/merge
parent
2cc0b7fd4b
commit
0ff053b98a
|
|
@ -218,6 +218,8 @@ void autofs_clean_ino(struct autofs_info *);
|
|||
|
||||
static inline int autofs_check_pipe(struct file *pipe)
|
||||
{
|
||||
if (pipe->f_mode & FMODE_PATH)
|
||||
return -EINVAL;
|
||||
if (!(pipe->f_mode & FMODE_CAN_WRITE))
|
||||
return -EINVAL;
|
||||
if (!S_ISFIFO(file_inode(pipe)->i_mode))
|
||||
|
|
|
|||
|
|
@ -453,7 +453,7 @@ SYSCALL_DEFINE5(fsconfig,
|
|||
case FSCONFIG_SET_FD:
|
||||
param.type = fs_value_is_file;
|
||||
ret = -EBADF;
|
||||
param.file = fget(aux);
|
||||
param.file = fget_raw(aux);
|
||||
if (!param.file)
|
||||
goto out_key;
|
||||
param.dirfd = aux;
|
||||
|
|
|
|||
Loading…
Reference in New Issue