mirror of
git://git.yoctoproject.org/linux-yocto.git
synced 2025-10-22 23:13:01 +02:00
fcntl: make F_DUPFD_QUERY associative
commit2714b0d1f3upstream. Currently when passing a closed file descriptor to fcntl(fd, F_DUPFD_QUERY, fd_dup) the order matters: fd = open("/dev/null"); fd_dup = dup(fd); When we now close one of the file descriptors we get: (1) fcntl(fd, fd_dup) // -EBADF (2) fcntl(fd_dup, fd) // 0 aka not equal depending on which file descriptor is passed first. That's not a huge deal but it gives the api I slightly weird feel. Make it so that the order doesn't matter by requiring that both file descriptors are valid: (1') fcntl(fd, fd_dup) // -EBADF (2') fcntl(fd_dup, fd) // -EBADF Link: https://lore.kernel.org/r/20241008-duften-formel-251f967602d5@brauner Fixes:c62b758bae("fcntl: add F_DUPFD_QUERY fcntl()") Reviewed-by: Jeff Layton <jlayton@kernel.org> Reviewed-By: Lennart Poettering <lennart@poettering.net> Cc: stable@vger.kernel.org Reported-by: Lennart Poettering <lennart@poettering.net> Signed-off-by: Christian Brauner <brauner@kernel.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
2bd8303a23
commit
a4fc6966d8
|
|
@ -397,6 +397,9 @@ static long f_dupfd_query(int fd, struct file *filp)
|
|||
{
|
||||
CLASS(fd_raw, f)(fd);
|
||||
|
||||
if (fd_empty(f))
|
||||
return -EBADF;
|
||||
|
||||
/*
|
||||
* We can do the 'fdput()' immediately, as the only thing that
|
||||
* matters is the pointer value which isn't changed by the fdput.
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user