Commit 15db6bf1 authored by Vladimir Davydov's avatar Vladimir Davydov Committed by Willy Tarreau

signal: remove warning about using SI_TKILL in rt_[tg]sigqueueinfo

commit 69828dce upstream.

Sending SI_TKILL from rt_[tg]sigqueueinfo was deprecated, so now we issue
a warning on the first attempt of doing it.  We use WARN_ON_ONCE, which is
not informative and, what is worse, taints the kernel, making the trinity
syscall fuzzer complain false-positively from time to time.

It does not look like we need this warning at all, because the behaviour
changed quite a long time ago (2.6.39), and if an application relies on
the old API, it gets EPERM anyway and can issue a warning by itself.

So let us zap the warning in kernel.
Signed-off-by: default avatarVladimir Davydov <vdavydov@parallels.com>
Acked-by: default avatarOleg Nesterov <oleg@redhat.com>
Cc: Richard Weinberger <richard@nod.at>
Cc: "Paul E. McKenney" <paulmck@linux.vnet.ibm.com>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
Cc: Vinson Lee <vlee@freedesktop.org>
Signed-off-by: default avatarWilly Tarreau <w@1wt.eu>
parent 55e1f395
...@@ -3004,11 +3004,9 @@ static int do_rt_sigqueueinfo(pid_t pid, int sig, siginfo_t *info) ...@@ -3004,11 +3004,9 @@ static int do_rt_sigqueueinfo(pid_t pid, int sig, siginfo_t *info)
* Nor can they impersonate a kill()/tgkill(), which adds source info. * Nor can they impersonate a kill()/tgkill(), which adds source info.
*/ */
if ((info->si_code >= 0 || info->si_code == SI_TKILL) && if ((info->si_code >= 0 || info->si_code == SI_TKILL) &&
(task_pid_vnr(current) != pid)) { (task_pid_vnr(current) != pid))
/* We used to allow any < 0 si_code */
WARN_ON_ONCE(info->si_code < 0);
return -EPERM; return -EPERM;
}
info->si_signo = sig; info->si_signo = sig;
/* POSIX.1b doesn't mention process groups. */ /* POSIX.1b doesn't mention process groups. */
...@@ -3053,12 +3051,10 @@ static int do_rt_tgsigqueueinfo(pid_t tgid, pid_t pid, int sig, siginfo_t *info) ...@@ -3053,12 +3051,10 @@ static int do_rt_tgsigqueueinfo(pid_t tgid, pid_t pid, int sig, siginfo_t *info)
/* Not even root can pretend to send signals from the kernel. /* Not even root can pretend to send signals from the kernel.
* Nor can they impersonate a kill()/tgkill(), which adds source info. * Nor can they impersonate a kill()/tgkill(), which adds source info.
*/ */
if (((info->si_code >= 0 || info->si_code == SI_TKILL)) && if ((info->si_code >= 0 || info->si_code == SI_TKILL) &&
(task_pid_vnr(current) != pid)) { (task_pid_vnr(current) != pid))
/* We used to allow any < 0 si_code */
WARN_ON_ONCE(info->si_code < 0);
return -EPERM; return -EPERM;
}
info->si_signo = sig; info->si_signo = sig;
return do_send_specific(tgid, pid, sig, info); return do_send_specific(tgid, pid, sig, info);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment