Skip to content

Commit

Permalink
vfs: make O_PATH file descriptors usable for 'fchdir()'
Browse files Browse the repository at this point in the history
We already use them for openat() and friends, but fchdir() also wants to
be able to use O_PATH file descriptors.  This should make it comparable
to the O_SEARCH of Solaris.  In particular, O_PATH allows you to access
(not-quite-open) a directory you don't have read persmission to, only
execute permission.

Noticed during development of multithread support for ksh93.

Reported-by: ольга крыжановская <olga.kryzhanovska@gmail.com>
Cc: Al Viro <viro@zeniv.linux.org.uk>
Cc: stable@kernel.org    # O_PATH introduced in 3.0+
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
  • Loading branch information
torvalds committed Jul 8, 2012
1 parent cd6407f commit 332a2e1
Showing 1 changed file with 3 additions and 3 deletions.
6 changes: 3 additions & 3 deletions fs/open.c
Expand Up @@ -397,10 +397,10 @@ SYSCALL_DEFINE1(fchdir, unsigned int, fd)
{
struct file *file;
struct inode *inode;
int error;
int error, fput_needed;

error = -EBADF;
file = fget(fd);
file = fget_raw_light(fd, &fput_needed);
if (!file)
goto out;

Expand All @@ -414,7 +414,7 @@ SYSCALL_DEFINE1(fchdir, unsigned int, fd)
if (!error)
set_fs_pwd(current->fs, &file->f_path);
out_putf:
fput(file);
fput_light(file, fput_needed);
out:
return error;
}
Expand Down

0 comments on commit 332a2e1

Please sign in to comment.