Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge tag 'pidfd-fixes-v5.1-rc3' of gitolite.kernel.org:pub/scm/linux/kernel/git/brauner/linux

Pull pidfd fix from Christian Brauner:
"This should be an uncontroversial fix for pidfd_send_signal() by Jann
to better align it's behavior with other signal sending functions:

In one of the early versions of the patchset it was suggested to not
unconditionally error out when a signal with SI_USER is sent to a
non-current task (cf. [1]).

Instead, pidfd_send_signal() currently silently changes this to a
regular kill signal. While this is technically fine, the semantics are
weird since the kernel just silently converts a user's request behind
their back and also no other signal sending function allows to do
this. It gets more hairy when we introduce sending signals to a
specific thread soon.

So let's align pidfd_send_signal() with all the other signal sending
functions and error out when SI_USER signals are sent to a non-current
task"

* tag 'pidfd-fixes-v5.1-rc3' of gitolite.kernel.org:pub/scm/linux/kernel/git/brauner/linux:
signal: don't silently convert SI_USER signals to non-current pidfd

+4 -9
+4 -9
kernel/signal.c
··· 3605 3605 if (unlikely(sig != kinfo.si_signo)) 3606 3606 goto err; 3607 3607 3608 + /* Only allow sending arbitrary signals to yourself. */ 3609 + ret = -EPERM; 3608 3610 if ((task_pid(current) != pid) && 3609 - (kinfo.si_code >= 0 || kinfo.si_code == SI_TKILL)) { 3610 - /* Only allow sending arbitrary signals to yourself. */ 3611 - ret = -EPERM; 3612 - if (kinfo.si_code != SI_USER) 3613 - goto err; 3614 - 3615 - /* Turn this into a regular kill signal. */ 3616 - prepare_kill_siginfo(sig, &kinfo); 3617 - } 3611 + (kinfo.si_code >= 0 || kinfo.si_code == SI_TKILL)) 3612 + goto err; 3618 3613 } else { 3619 3614 prepare_kill_siginfo(sig, &kinfo); 3620 3615 }