• Christian Brauner's avatar
    signal: use fdget() since we don't allow O_PATH · 738a7832
    Christian Brauner authored
    As stated in the original commit for pidfd_send_signal() we don't allow
    to signal processes through O_PATH file descriptors since it is
    semantically equivalent to a write on the pidfd.
    
    We already correctly error out right now and return EBADF if an O_PATH
    fd is passed.  This is because we use file->f_op to detect whether a
    pidfd is passed and O_PATH fds have their file->f_op set to empty_fops
    in do_dentry_open() and thus fail the test.
    
    Thus, there is no regression.  It's just semantically correct to use
    fdget() and return an error right from there instead of taking a
    reference and returning an error later.
    Signed-off-by: default avatarChristian Brauner <christian@brauner.io>
    Acked-by: default avatarOleg Nesterov <oleg@redhat.com>
    Cc: Arnd Bergmann <arnd@arndb.de>
    Cc: "Eric W. Biederman" <ebiederm@xmission.com>
    Cc: Kees Cook <keescook@chromium.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Jann Horn <jann@thejh.net>
    Cc: David Howells <dhowells@redhat.com>
    Cc: "Michael Kerrisk (man-pages)" <mtk.manpages@gmail.com>
    Cc: Andy Lutomirsky <luto@kernel.org>
    Cc: Andrew Morton <akpm@linux-foundation.org>
    Cc: Oleg Nesterov <oleg@redhat.com>
    Cc: Aleksa Sarai <cyphar@cyphar.com>
    Cc: Al Viro <viro@zeniv.linux.org.uk>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    738a7832
signal.c 114 KB