lkml.org 
[lkml]   [2016]   [Aug]   [21]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 3.10 026/180] signal: remove warning about using SI_TKILL in rt_[tg]sigqueueinfo
    Date
    From: Vladimir Davydov <vdavydov@parallels.com>

    commit 69828dce7af2cb6d08ef5a03de687d422fb7ec1f 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: Vladimir Davydov <vdavydov@parallels.com>
    Acked-by: Oleg Nesterov <oleg@redhat.com>
    Cc: Richard Weinberger <richard@nod.at>
    Cc: "Paul E. McKenney" <paulmck@linux.vnet.ibm.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Vinson Lee <vlee@freedesktop.org>
    Signed-off-by: Willy Tarreau <w@1wt.eu>
    ---
    kernel/signal.c | 14 +++++---------
    1 file changed, 5 insertions(+), 9 deletions(-)

    diff --git a/kernel/signal.c b/kernel/signal.c
    index 4d1f7fa..7b81c53 100644
    --- a/kernel/signal.c
    +++ b/kernel/signal.c
    @@ -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.
    */
    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. */
    @@ -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.
    * 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);
    --
    2.8.0.rc2.1.gbe9624a
    \
     
     \ /
      Last update: 2016-09-17 09:57    [W:4.187 / U:0.220 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site