Skip to content

Commit

Permalink
signal: remove warning about using SI_TKILL in rt_[tg]sigqueueinfo
Browse files Browse the repository at this point in the history
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: Vladimir Davydov <[email protected]>
Acked-by: Oleg Nesterov <[email protected]>
Cc: Richard Weinberger <[email protected]>
Cc: "Paul E. McKenney" <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
  • Loading branch information
Vladimir Davydov authored and torvalds committed Apr 17, 2015
1 parent 64a4096 commit 69828dc
Showing 1 changed file with 5 additions and 9 deletions.
14 changes: 5 additions & 9 deletions kernel/signal.c
Original file line number Diff line number Diff line change
Expand Up @@ -2992,11 +2992,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.
*/
if ((info->si_code >= 0 || info->si_code == SI_TKILL) &&
(task_pid_vnr(current) != pid)) {
/* We used to allow any < 0 si_code */
WARN_ON_ONCE(info->si_code < 0);
(task_pid_vnr(current) != pid))
return -EPERM;
}

info->si_signo = sig;

/* POSIX.1b doesn't mention process groups. */
Expand Down Expand Up @@ -3041,12 +3039,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.
* Nor can they impersonate a kill()/tgkill(), which adds source info.
*/
if (((info->si_code >= 0 || info->si_code == SI_TKILL)) &&
(task_pid_vnr(current) != pid)) {
/* We used to allow any < 0 si_code */
WARN_ON_ONCE(info->si_code < 0);
if ((info->si_code >= 0 || info->si_code == SI_TKILL) &&
(task_pid_vnr(current) != pid))
return -EPERM;
}

info->si_signo = sig;

return do_send_specific(tgid, pid, sig, info);
Expand Down

0 comments on commit 69828dc

Please sign in to comment.