Messages in this thread | | | Date | Wed, 17 Apr 2019 15:03:37 +0200 | From | Christian Brauner <> | Subject | Re: [PATCH] signal: don't silently convert SI_USER signals to non-current pidfd |
| |
On Mon, Apr 08, 2019 at 03:13:16PM +0200, Oleg Nesterov wrote: > 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. >
Sorry Oleg. I missed that message somehow. > > 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.
Yes, that's why this was added. I would leave it in exactly because of checkpoint/restart. I have sympathies for "this [...] project by various mad Russians" [1] and it doesn't really hurt us. :)
[1]: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=099469502f62fbe0d7e4f0b83a2f22538367f734
Christian
| |