Messages in this thread | | | Date | Mon, 8 Apr 2019 15:13:16 +0200 | From | Oleg Nesterov <> | Subject | Re: [PATCH] signal: don't silently convert SI_USER signals to non-current pidfd |
| |
On 03/30, Jann Horn wrote: > > --- a/kernel/signal.c > +++ b/kernel/signal.c > @@ -3605,16 +3605,11 @@ SYSCALL_DEFINE4(pidfd_send_signal, int, pidfd, int, sig, > if (unlikely(sig != kinfo.si_signo)) > goto err; > > + /* Only allow sending arbitrary signals to yourself. */ > + ret = -EPERM; > if ((task_pid(current) != pid) && > - (kinfo.si_code >= 0 || kinfo.si_code == SI_TKILL)) { > - /* Only allow sending arbitrary signals to yourself. */ > - ret = -EPERM; > - if (kinfo.si_code != SI_USER) > - goto err; > - > - /* Turn this into a regular kill signal. */ > - prepare_kill_siginfo(sig, &kinfo); > - } > + (kinfo.si_code >= 0 || kinfo.si_code == SI_TKILL)) > + goto err;
ACK.
but perhaps it should always fail, even if task_pid(current) == pid.
sys_rt_sigqueueinfo() allows to send any siginfo to yourself, but this is only needed for checkpoint/restart.
Oleg.
| |