Skip to content

Commit

Permalink
fs: support O_PATH fds with FSCONFIG_SET_FD
Browse files Browse the repository at this point in the history
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: a08557d ("ovl: specify layers via file descriptors")
Reviewed-by: Amir Goldstein <amir73il@gmail.com>
Signed-off-by: Christian Brauner <brauner@kernel.org>
  • Loading branch information
Christian Brauner committed Feb 12, 2025
1 parent 2cc0b7f commit 0ff053b
Show file tree
Hide file tree
Showing 2 changed files with 3 additions and 1 deletion.
2 changes: 2 additions & 0 deletions fs/autofs/autofs_i.h
Original file line number Diff line number Diff line change
Expand Up @@ -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))
Expand Down
2 changes: 1 addition & 1 deletion fs/fsopen.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down

0 comments on commit 0ff053b

Please sign in to comment.