linux/kernel/signal.c
<<
>>
Prefs
   1/*
   2 *  linux/kernel/signal.c
   3 *
   4 *  Copyright (C) 1991, 1992  Linus Torvalds
   5 *
   6 *  1997-11-02  Modified for POSIX.1b signals by Richard Henderson
   7 *
   8 *  2003-06-02  Jim Houston - Concurrent Computer Corp.
   9 *              Changes to use preallocated sigqueue structures
  10 *              to allow signals to be sent reliably.
  11 */
  12
  13#include <linux/slab.h>
  14#include <linux/module.h>
  15#include <linux/init.h>
  16#include <linux/sched.h>
  17#include <linux/fs.h>
  18#include <linux/tty.h>
  19#include <linux/binfmts.h>
  20#include <linux/security.h>
  21#include <linux/syscalls.h>
  22#include <linux/ptrace.h>
  23#include <linux/signal.h>
  24#include <linux/signalfd.h>
  25#include <linux/ratelimit.h>
  26#include <linux/tracehook.h>
  27#include <linux/capability.h>
  28#include <linux/freezer.h>
  29#include <linux/pid_namespace.h>
  30#include <linux/nsproxy.h>
  31#define CREATE_TRACE_POINTS
  32#include <trace/events/signal.h>
  33
  34#include <asm/param.h>
  35#include <asm/uaccess.h>
  36#include <asm/unistd.h>
  37#include <asm/siginfo.h>
  38#include "audit.h"      /* audit_signal_info() */
  39
  40/*
  41 * SLAB caches for signal bits.
  42 */
  43
  44static struct kmem_cache *sigqueue_cachep;
  45
  46int print_fatal_signals __read_mostly;
  47
  48static void __user *sig_handler(struct task_struct *t, int sig)
  49{
  50        return t->sighand->action[sig - 1].sa.sa_handler;
  51}
  52
  53static int sig_handler_ignored(void __user *handler, int sig)
  54{
  55        /* Is it explicitly or implicitly ignored? */
  56        return handler == SIG_IGN ||
  57                (handler == SIG_DFL && sig_kernel_ignore(sig));
  58}
  59
  60static int sig_task_ignored(struct task_struct *t, int sig,
  61                int from_ancestor_ns)
  62{
  63        void __user *handler;
  64
  65        handler = sig_handler(t, sig);
  66
  67        if (unlikely(t->signal->flags & SIGNAL_UNKILLABLE) &&
  68                        handler == SIG_DFL && !from_ancestor_ns)
  69                return 1;
  70
  71        return sig_handler_ignored(handler, sig);
  72}
  73
  74static int sig_ignored(struct task_struct *t, int sig, int from_ancestor_ns)
  75{
  76        /*
  77         * Blocked signals are never ignored, since the
  78         * signal handler may change by the time it is
  79         * unblocked.
  80         */
  81        if (sigismember(&t->blocked, sig) || sigismember(&t->real_blocked, sig))
  82                return 0;
  83
  84        if (!sig_task_ignored(t, sig, from_ancestor_ns))
  85                return 0;
  86
  87        /*
  88         * Tracers may want to know about even ignored signals.
  89         */
  90        return !tracehook_consider_ignored_signal(t, sig);
  91}
  92
  93/*
  94 * Re-calculate pending state from the set of locally pending
  95 * signals, globally pending signals, and blocked signals.
  96 */
  97static inline int has_pending_signals(sigset_t *signal, sigset_t *blocked)
  98{
  99        unsigned long ready;
 100        long i;
 101
 102        switch (_NSIG_WORDS) {
 103        default:
 104                for (i = _NSIG_WORDS, ready = 0; --i >= 0 ;)
 105                        ready |= signal->sig[i] &~ blocked->sig[i];
 106                break;
 107
 108        case 4: ready  = signal->sig[3] &~ blocked->sig[3];
 109                ready |= signal->sig[2] &~ blocked->sig[2];
 110                ready |= signal->sig[1] &~ blocked->sig[1];
 111                ready |= signal->sig[0] &~ blocked->sig[0];
 112                break;
 113
 114        case 2: ready  = signal->sig[1] &~ blocked->sig[1];
 115                ready |= signal->sig[0] &~ blocked->sig[0];
 116                break;
 117
 118        case 1: ready  = signal->sig[0] &~ blocked->sig[0];
 119        }
 120        return ready != 0;
 121}
 122
 123#define PENDING(p,b) has_pending_signals(&(p)->signal, (b))
 124
 125static int recalc_sigpending_tsk(struct task_struct *t)
 126{
 127        if (t->signal->group_stop_count > 0 ||
 128            PENDING(&t->pending, &t->blocked) ||
 129            PENDING(&t->signal->shared_pending, &t->blocked)) {
 130                set_tsk_thread_flag(t, TIF_SIGPENDING);
 131                return 1;
 132        }
 133        /*
 134         * We must never clear the flag in another thread, or in current
 135         * when it's possible the current syscall is returning -ERESTART*.
 136         * So we don't clear it here, and only callers who know they should do.
 137         */
 138        return 0;
 139}
 140
 141/*
 142 * After recalculating TIF_SIGPENDING, we need to make sure the task wakes up.
 143 * This is superfluous when called on current, the wakeup is a harmless no-op.
 144 */
 145void recalc_sigpending_and_wake(struct task_struct *t)
 146{
 147        if (recalc_sigpending_tsk(t))
 148                signal_wake_up(t, 0);
 149}
 150
 151void recalc_sigpending(void)
 152{
 153        if (unlikely(tracehook_force_sigpending()))
 154                set_thread_flag(TIF_SIGPENDING);
 155        else if (!recalc_sigpending_tsk(current) && !freezing(current))
 156                clear_thread_flag(TIF_SIGPENDING);
 157
 158}
 159
 160/* Given the mask, find the first available signal that should be serviced. */
 161
 162#define SYNCHRONOUS_MASK \
 163        (sigmask(SIGSEGV) | sigmask(SIGBUS) | sigmask(SIGILL) | \
 164         sigmask(SIGTRAP) | sigmask(SIGFPE))
 165
 166int next_signal(struct sigpending *pending, sigset_t *mask)
 167{
 168        unsigned long i, *s, *m, x;
 169        int sig = 0;
 170
 171        s = pending->signal.sig;
 172        m = mask->sig;
 173
 174        /*
 175         * Handle the first word specially: it contains the
 176         * synchronous signals that need to be dequeued first.
 177         */
 178        x = *s &~ *m;
 179        if (x) {
 180                if (x & SYNCHRONOUS_MASK)
 181                        x &= SYNCHRONOUS_MASK;
 182                sig = ffz(~x) + 1;
 183                return sig;
 184        }
 185
 186        switch (_NSIG_WORDS) {
 187        default:
 188                for (i = 1; i < _NSIG_WORDS; ++i) {
 189                        x = *++s &~ *++m;
 190                        if (!x)
 191                                continue;
 192                        sig = ffz(~x) + i*_NSIG_BPW + 1;
 193                        break;
 194                }
 195                break;
 196
 197        case 2:
 198                x = s[1] &~ m[1];
 199                if (!x)
 200                        break;
 201                sig = ffz(~x) + _NSIG_BPW + 1;
 202                break;
 203
 204        case 1:
 205                /* Nothing to do */
 206                break;
 207        }
 208
 209        return sig;
 210}
 211
 212static inline void print_dropped_signal(int sig)
 213{
 214        static DEFINE_RATELIMIT_STATE(ratelimit_state, 5 * HZ, 10);
 215
 216        if (!print_fatal_signals)
 217                return;
 218
 219        if (!__ratelimit(&ratelimit_state))
 220                return;
 221
 222        printk(KERN_INFO "%s/%d: reached RLIMIT_SIGPENDING, dropped signal %d\n",
 223                                current->comm, current->pid, sig);
 224}
 225
 226/*
 227 * allocate a new signal queue record
 228 * - this may be called without locks if and only if t == current, otherwise an
 229 *   appopriate lock must be held to stop the target task from exiting
 230 */
 231static struct sigqueue *
 232__sigqueue_alloc(int sig, struct task_struct *t, gfp_t flags, int override_rlimit)
 233{
 234        struct sigqueue *q = NULL;
 235        struct user_struct *user;
 236
 237        /*
 238         * Protect access to @t credentials. This can go away when all
 239         * callers hold rcu read lock.
 240         */
 241        rcu_read_lock();
 242        user = get_uid(__task_cred(t)->user);
 243        atomic_inc(&user->sigpending);
 244        rcu_read_unlock();
 245
 246        if (override_rlimit ||
 247            atomic_read(&user->sigpending) <=
 248                        task_rlimit(t, RLIMIT_SIGPENDING)) {
 249                q = kmem_cache_alloc(sigqueue_cachep, flags);
 250        } else {
 251                print_dropped_signal(sig);
 252        }
 253
 254        if (unlikely(q == NULL)) {
 255                atomic_dec(&user->sigpending);
 256                free_uid(user);
 257        } else {
 258                INIT_LIST_HEAD(&q->list);
 259                q->flags = 0;
 260                q->user = user;
 261        }
 262
 263        return q;
 264}
 265
 266static void __sigqueue_free(struct sigqueue *q)
 267{
 268        if (q->flags & SIGQUEUE_PREALLOC)
 269                return;
 270        atomic_dec(&q->user->sigpending);
 271        free_uid(q->user);
 272        kmem_cache_free(sigqueue_cachep, q);
 273}
 274
 275void flush_sigqueue(struct sigpending *queue)
 276{
 277        struct sigqueue *q;
 278
 279        sigemptyset(&queue->signal);
 280        while (!list_empty(&queue->list)) {
 281                q = list_entry(queue->list.next, struct sigqueue , list);
 282                list_del_init(&q->list);
 283                __sigqueue_free(q);
 284        }
 285}
 286
 287/*
 288 * Flush all pending signals for a task.
 289 */
 290void __flush_signals(struct task_struct *t)
 291{
 292        clear_tsk_thread_flag(t, TIF_SIGPENDING);
 293        flush_sigqueue(&t->pending);
 294        flush_sigqueue(&t->signal->shared_pending);
 295}
 296
 297void flush_signals(struct task_struct *t)
 298{
 299        unsigned long flags;
 300
 301        spin_lock_irqsave(&t->sighand->siglock, flags);
 302        __flush_signals(t);
 303        spin_unlock_irqrestore(&t->sighand->siglock, flags);
 304}
 305
 306static void __flush_itimer_signals(struct sigpending *pending)
 307{
 308        sigset_t signal, retain;
 309        struct sigqueue *q, *n;
 310
 311        signal = pending->signal;
 312        sigemptyset(&retain);
 313
 314        list_for_each_entry_safe(q, n, &pending->list, list) {
 315                int sig = q->info.si_signo;
 316
 317                if (likely(q->info.si_code != SI_TIMER)) {
 318                        sigaddset(&retain, sig);
 319                } else {
 320                        sigdelset(&signal, sig);
 321                        list_del_init(&q->list);
 322                        __sigqueue_free(q);
 323                }
 324        }
 325
 326        sigorsets(&pending->signal, &signal, &retain);
 327}
 328
 329void flush_itimer_signals(void)
 330{
 331        struct task_struct *tsk = current;
 332        unsigned long flags;
 333
 334        spin_lock_irqsave(&tsk->sighand->siglock, flags);
 335        __flush_itimer_signals(&tsk->pending);
 336        __flush_itimer_signals(&tsk->signal->shared_pending);
 337        spin_unlock_irqrestore(&tsk->sighand->siglock, flags);
 338}
 339
 340void ignore_signals(struct task_struct *t)
 341{
 342        int i;
 343
 344        for (i = 0; i < _NSIG; ++i)
 345                t->sighand->action[i].sa.sa_handler = SIG_IGN;
 346
 347        flush_signals(t);
 348}
 349
 350/*
 351 * Flush all handlers for a task.
 352 */
 353
 354void
 355flush_signal_handlers(struct task_struct *t, int force_default)
 356{
 357        int i;
 358        struct k_sigaction *ka = &t->sighand->action[0];
 359        for (i = _NSIG ; i != 0 ; i--) {
 360                if (force_default || ka->sa.sa_handler != SIG_IGN)
 361                        ka->sa.sa_handler = SIG_DFL;
 362                ka->sa.sa_flags = 0;
 363                sigemptyset(&ka->sa.sa_mask);
 364                ka++;
 365        }
 366}
 367
 368int unhandled_signal(struct task_struct *tsk, int sig)
 369{
 370        void __user *handler = tsk->sighand->action[sig-1].sa.sa_handler;
 371        if (is_global_init(tsk))
 372                return 1;
 373        if (handler != SIG_IGN && handler != SIG_DFL)
 374                return 0;
 375        return !tracehook_consider_fatal_signal(tsk, sig);
 376}
 377
 378
 379/* Notify the system that a driver wants to block all signals for this
 380 * process, and wants to be notified if any signals at all were to be
 381 * sent/acted upon.  If the notifier routine returns non-zero, then the
 382 * signal will be acted upon after all.  If the notifier routine returns 0,
 383 * then then signal will be blocked.  Only one block per process is
 384 * allowed.  priv is a pointer to private data that the notifier routine
 385 * can use to determine if the signal should be blocked or not.  */
 386
 387void
 388block_all_signals(int (*notifier)(void *priv), void *priv, sigset_t *mask)
 389{
 390        unsigned long flags;
 391
 392        spin_lock_irqsave(&current->sighand->siglock, flags);
 393        current->notifier_mask = mask;
 394        current->notifier_data = priv;
 395        current->notifier = notifier;
 396        spin_unlock_irqrestore(&current->sighand->siglock, flags);
 397}
 398
 399/* Notify the system that blocking has ended. */
 400
 401void
 402unblock_all_signals(void)
 403{
 404        unsigned long flags;
 405
 406        spin_lock_irqsave(&current->sighand->siglock, flags);
 407        current->notifier = NULL;
 408        current->notifier_data = NULL;
 409        recalc_sigpending();
 410        spin_unlock_irqrestore(&current->sighand->siglock, flags);
 411}
 412
 413static void collect_signal(int sig, struct sigpending *list, siginfo_t *info)
 414{
 415        struct sigqueue *q, *first = NULL;
 416
 417        /*
 418         * Collect the siginfo appropriate to this signal.  Check if
 419         * there is another siginfo for the same signal.
 420        */
 421        list_for_each_entry(q, &list->list, list) {
 422                if (q->info.si_signo == sig) {
 423                        if (first)
 424                                goto still_pending;
 425                        first = q;
 426                }
 427        }
 428
 429        sigdelset(&list->signal, sig);
 430
 431        if (first) {
 432still_pending:
 433                list_del_init(&first->list);
 434                copy_siginfo(info, &first->info);
 435                __sigqueue_free(first);
 436        } else {
 437                /* Ok, it wasn't in the queue.  This must be
 438                   a fast-pathed signal or we must have been
 439                   out of queue space.  So zero out the info.
 440                 */
 441                info->si_signo = sig;
 442                info->si_errno = 0;
 443                info->si_code = SI_USER;
 444                info->si_pid = 0;
 445                info->si_uid = 0;
 446        }
 447}
 448
 449static int __dequeue_signal(struct sigpending *pending, sigset_t *mask,
 450                        siginfo_t *info)
 451{
 452        int sig = next_signal(pending, mask);
 453
 454        if (sig) {
 455                if (current->notifier) {
 456                        if (sigismember(current->notifier_mask, sig)) {
 457                                if (!(current->notifier)(current->notifier_data)) {
 458                                        clear_thread_flag(TIF_SIGPENDING);
 459                                        return 0;
 460                                }
 461                        }
 462                }
 463
 464                collect_signal(sig, pending, info);
 465        }
 466
 467        return sig;
 468}
 469
 470/*
 471 * Dequeue a signal and return the element to the caller, which is 
 472 * expected to free it.
 473 *
 474 * All callers have to hold the siglock.
 475 */
 476int dequeue_signal(struct task_struct *tsk, sigset_t *mask, siginfo_t *info)
 477{
 478        int signr;
 479
 480        /* We only dequeue private signals from ourselves, we don't let
 481         * signalfd steal them
 482         */
 483        signr = __dequeue_signal(&tsk->pending, mask, info);
 484        if (!signr) {
 485                signr = __dequeue_signal(&tsk->signal->shared_pending,
 486                                         mask, info);
 487                /*
 488                 * itimer signal ?
 489                 *
 490                 * itimers are process shared and we restart periodic
 491                 * itimers in the signal delivery path to prevent DoS
 492                 * attacks in the high resolution timer case. This is
 493                 * compliant with the old way of self restarting
 494                 * itimers, as the SIGALRM is a legacy signal and only
 495                 * queued once. Changing the restart behaviour to
 496                 * restart the timer in the signal dequeue path is
 497                 * reducing the timer noise on heavy loaded !highres
 498                 * systems too.
 499                 */
 500                if (unlikely(signr == SIGALRM)) {
 501                        struct hrtimer *tmr = &tsk->signal->real_timer;
 502
 503                        if (!hrtimer_is_queued(tmr) &&
 504                            tsk->signal->it_real_incr.tv64 != 0) {
 505                                hrtimer_forward(tmr, tmr->base->get_time(),
 506                                                tsk->signal->it_real_incr);
 507                                hrtimer_restart(tmr);
 508                        }
 509                }
 510        }
 511
 512        recalc_sigpending();
 513        if (!signr)
 514                return 0;
 515
 516        if (unlikely(sig_kernel_stop(signr))) {
 517                /*
 518                 * Set a marker that we have dequeued a stop signal.  Our
 519                 * caller might release the siglock and then the pending
 520                 * stop signal it is about to process is no longer in the
 521                 * pending bitmasks, but must still be cleared by a SIGCONT
 522                 * (and overruled by a SIGKILL).  So those cases clear this
 523                 * shared flag after we've set it.  Note that this flag may
 524                 * remain set after the signal we return is ignored or
 525                 * handled.  That doesn't matter because its only purpose
 526                 * is to alert stop-signal processing code when another
 527                 * processor has come along and cleared the flag.
 528                 */
 529                tsk->signal->flags |= SIGNAL_STOP_DEQUEUED;
 530        }
 531        if ((info->si_code & __SI_MASK) == __SI_TIMER && info->si_sys_private) {
 532                /*
 533                 * Release the siglock to ensure proper locking order
 534                 * of timer locks outside of siglocks.  Note, we leave
 535                 * irqs disabled here, since the posix-timers code is
 536                 * about to disable them again anyway.
 537                 */
 538                spin_unlock(&tsk->sighand->siglock);
 539                do_schedule_next_timer(info);
 540                spin_lock(&tsk->sighand->siglock);
 541        }
 542        return signr;
 543}
 544
 545/*
 546 * Tell a process that it has a new active signal..
 547 *
 548 * NOTE! we rely on the previous spin_lock to
 549 * lock interrupts for us! We can only be called with
 550 * "siglock" held, and the local interrupt must
 551 * have been disabled when that got acquired!
 552 *
 553 * No need to set need_resched since signal event passing
 554 * goes through ->blocked
 555 */
 556void signal_wake_up(struct task_struct *t, int resume)
 557{
 558        unsigned int mask;
 559
 560        set_tsk_thread_flag(t, TIF_SIGPENDING);
 561
 562        /*
 563         * For SIGKILL, we want to wake it up in the stopped/traced/killable
 564         * case. We don't check t->state here because there is a race with it
 565         * executing another processor and just now entering stopped state.
 566         * By using wake_up_state, we ensure the process will wake up and
 567         * handle its death signal.
 568         */
 569        mask = TASK_INTERRUPTIBLE;
 570        if (resume)
 571                mask |= TASK_WAKEKILL;
 572        if (!wake_up_state(t, mask))
 573                kick_process(t);
 574}
 575
 576/*
 577 * Remove signals in mask from the pending set and queue.
 578 * Returns 1 if any signals were found.
 579 *
 580 * All callers must be holding the siglock.
 581 *
 582 * This version takes a sigset mask and looks at all signals,
 583 * not just those in the first mask word.
 584 */
 585static int rm_from_queue_full(sigset_t *mask, struct sigpending *s)
 586{
 587        struct sigqueue *q, *n;
 588        sigset_t m;
 589
 590        sigandsets(&m, mask, &s->signal);
 591        if (sigisemptyset(&m))
 592                return 0;
 593
 594        signandsets(&s->signal, &s->signal, mask);
 595        list_for_each_entry_safe(q, n, &s->list, list) {
 596                if (sigismember(mask, q->info.si_signo)) {
 597                        list_del_init(&q->list);
 598                        __sigqueue_free(q);
 599                }
 600        }
 601        return 1;
 602}
 603/*
 604 * Remove signals in mask from the pending set and queue.
 605 * Returns 1 if any signals were found.
 606 *
 607 * All callers must be holding the siglock.
 608 */
 609static int rm_from_queue(unsigned long mask, struct sigpending *s)
 610{
 611        struct sigqueue *q, *n;
 612
 613        if (!sigtestsetmask(&s->signal, mask))
 614                return 0;
 615
 616        sigdelsetmask(&s->signal, mask);
 617        list_for_each_entry_safe(q, n, &s->list, list) {
 618                if (q->info.si_signo < SIGRTMIN &&
 619                    (mask & sigmask(q->info.si_signo))) {
 620                        list_del_init(&q->list);
 621                        __sigqueue_free(q);
 622                }
 623        }
 624        return 1;
 625}
 626
 627static inline int is_si_special(const struct siginfo *info)
 628{
 629        return info <= SEND_SIG_FORCED;
 630}
 631
 632static inline bool si_fromuser(const struct siginfo *info)
 633{
 634        return info == SEND_SIG_NOINFO ||
 635                (!is_si_special(info) && SI_FROMUSER(info));
 636}
 637
 638/*
 639 * Bad permissions for sending the signal
 640 * - the caller must hold the RCU read lock
 641 */
 642static int check_kill_permission(int sig, struct siginfo *info,
 643                                 struct task_struct *t)
 644{
 645        const struct cred *cred, *tcred;
 646        struct pid *sid;
 647        int error;
 648
 649        if (!valid_signal(sig))
 650                return -EINVAL;
 651
 652        if (!si_fromuser(info))
 653                return 0;
 654
 655        error = audit_signal_info(sig, t); /* Let audit system see the signal */
 656        if (error)
 657                return error;
 658
 659        cred = current_cred();
 660        tcred = __task_cred(t);
 661        if (!same_thread_group(current, t) &&
 662            (cred->euid ^ tcred->suid) &&
 663            (cred->euid ^ tcred->uid) &&
 664            (cred->uid  ^ tcred->suid) &&
 665            (cred->uid  ^ tcred->uid) &&
 666            !capable(CAP_KILL)) {
 667                switch (sig) {
 668                case SIGCONT:
 669                        sid = task_session(t);
 670                        /*
 671                         * We don't return the error if sid == NULL. The
 672                         * task was unhashed, the caller must notice this.
 673                         */
 674                        if (!sid || sid == task_session(current))
 675                                break;
 676                default:
 677                        return -EPERM;
 678                }
 679        }
 680
 681        return security_task_kill(t, info, sig, 0);
 682}
 683
 684/*
 685 * Handle magic process-wide effects of stop/continue signals. Unlike
 686 * the signal actions, these happen immediately at signal-generation
 687 * time regardless of blocking, ignoring, or handling.  This does the
 688 * actual continuing for SIGCONT, but not the actual stopping for stop
 689 * signals. The process stop is done as a signal action for SIG_DFL.
 690 *
 691 * Returns true if the signal should be actually delivered, otherwise
 692 * it should be dropped.
 693 */
 694static int prepare_signal(int sig, struct task_struct *p, int from_ancestor_ns)
 695{
 696        struct signal_struct *signal = p->signal;
 697        struct task_struct *t;
 698
 699        if (unlikely(signal->flags & SIGNAL_GROUP_EXIT)) {
 700                /*
 701                 * The process is in the middle of dying, nothing to do.
 702                 */
 703        } else if (sig_kernel_stop(sig)) {
 704                /*
 705                 * This is a stop signal.  Remove SIGCONT from all queues.
 706                 */
 707                rm_from_queue(sigmask(SIGCONT), &signal->shared_pending);
 708                t = p;
 709                do {
 710                        rm_from_queue(sigmask(SIGCONT), &t->pending);
 711                } while_each_thread(p, t);
 712        } else if (sig == SIGCONT) {
 713                unsigned int why;
 714                /*
 715                 * Remove all stop signals from all queues,
 716                 * and wake all threads.
 717                 */
 718                rm_from_queue(SIG_KERNEL_STOP_MASK, &signal->shared_pending);
 719                t = p;
 720                do {
 721                        unsigned int state;
 722                        rm_from_queue(SIG_KERNEL_STOP_MASK, &t->pending);
 723                        /*
 724                         * If there is a handler for SIGCONT, we must make
 725                         * sure that no thread returns to user mode before
 726                         * we post the signal, in case it was the only
 727                         * thread eligible to run the signal handler--then
 728                         * it must not do anything between resuming and
 729                         * running the handler.  With the TIF_SIGPENDING
 730                         * flag set, the thread will pause and acquire the
 731                         * siglock that we hold now and until we've queued
 732                         * the pending signal.
 733                         *
 734                         * Wake up the stopped thread _after_ setting
 735                         * TIF_SIGPENDING
 736                         */
 737                        state = __TASK_STOPPED;
 738                        if (sig_user_defined(t, SIGCONT) && !sigismember(&t->blocked, SIGCONT)) {
 739                                set_tsk_thread_flag(t, TIF_SIGPENDING);
 740                                state |= TASK_INTERRUPTIBLE;
 741                        }
 742                        wake_up_state(t, state);
 743                } while_each_thread(p, t);
 744
 745                /*
 746                 * Notify the parent with CLD_CONTINUED if we were stopped.
 747                 *
 748                 * If we were in the middle of a group stop, we pretend it
 749                 * was already finished, and then continued. Since SIGCHLD
 750                 * doesn't queue we report only CLD_STOPPED, as if the next
 751                 * CLD_CONTINUED was dropped.
 752                 */
 753                why = 0;
 754                if (signal->flags & SIGNAL_STOP_STOPPED)
 755                        why |= SIGNAL_CLD_CONTINUED;
 756                else if (signal->group_stop_count)
 757                        why |= SIGNAL_CLD_STOPPED;
 758
 759                if (why) {
 760                        /*
 761                         * The first thread which returns from do_signal_stop()
 762                         * will take ->siglock, notice SIGNAL_CLD_MASK, and
 763                         * notify its parent. See get_signal_to_deliver().
 764                         */
 765                        signal->flags = why | SIGNAL_STOP_CONTINUED;
 766                        signal->group_stop_count = 0;
 767                        signal->group_exit_code = 0;
 768                } else {
 769                        /*
 770                         * We are not stopped, but there could be a stop
 771                         * signal in the middle of being processed after
 772                         * being removed from the queue.  Clear that too.
 773                         */
 774                        signal->flags &= ~SIGNAL_STOP_DEQUEUED;
 775                }
 776        }
 777
 778        return !sig_ignored(p, sig, from_ancestor_ns);
 779}
 780
 781/*
 782 * Test if P wants to take SIG.  After we've checked all threads with this,
 783 * it's equivalent to finding no threads not blocking SIG.  Any threads not
 784 * blocking SIG were ruled out because they are not running and already
 785 * have pending signals.  Such threads will dequeue from the shared queue
 786 * as soon as they're available, so putting the signal on the shared queue
 787 * will be equivalent to sending it to one such thread.
 788 */
 789static inline int wants_signal(int sig, struct task_struct *p)
 790{
 791        if (sigismember(&p->blocked, sig))
 792                return 0;
 793        if (p->flags & PF_EXITING)
 794                return 0;
 795        if (sig == SIGKILL)
 796                return 1;
 797        if (task_is_stopped_or_traced(p))
 798                return 0;
 799        return task_curr(p) || !signal_pending(p);
 800}
 801
 802static void complete_signal(int sig, struct task_struct *p, int group)
 803{
 804        struct signal_struct *signal = p->signal;
 805        struct task_struct *t;
 806
 807        /*
 808         * Now find a thread we can wake up to take the signal off the queue.
 809         *
 810         * If the main thread wants the signal, it gets first crack.
 811         * Probably the least surprising to the average bear.
 812         */
 813        if (wants_signal(sig, p))
 814                t = p;
 815        else if (!group || thread_group_empty(p))
 816                /*
 817                 * There is just one thread and it does not need to be woken.
 818                 * It will dequeue unblocked signals before it runs again.
 819                 */
 820                return;
 821        else {
 822                /*
 823                 * Otherwise try to find a suitable thread.
 824                 */
 825                t = signal->curr_target;
 826                while (!wants_signal(sig, t)) {
 827                        t = next_thread(t);
 828                        if (t == signal->curr_target)
 829                                /*
 830                                 * No thread needs to be woken.
 831                                 * Any eligible threads will see
 832                                 * the signal in the queue soon.
 833                                 */
 834                                return;
 835                }
 836                signal->curr_target = t;
 837        }
 838
 839        /*
 840         * Found a killable thread.  If the signal will be fatal,
 841         * then start taking the whole group down immediately.
 842         */
 843        if (sig_fatal(p, sig) &&
 844            !(signal->flags & (SIGNAL_UNKILLABLE | SIGNAL_GROUP_EXIT)) &&
 845            !sigismember(&t->real_blocked, sig) &&
 846            (sig == SIGKILL ||
 847             !tracehook_consider_fatal_signal(t, sig))) {
 848                /*
 849                 * This signal will be fatal to the whole group.
 850                 */
 851                if (!sig_kernel_coredump(sig)) {
 852                        /*
 853                         * Start a group exit and wake everybody up.
 854                         * This way we don't have other threads
 855                         * running and doing things after a slower
 856                         * thread has the fatal signal pending.
 857                         */
 858                        signal->flags = SIGNAL_GROUP_EXIT;
 859                        signal->group_exit_code = sig;
 860                        signal->group_stop_count = 0;
 861                        t = p;
 862                        do {
 863                                sigaddset(&t->pending.signal, SIGKILL);
 864                                signal_wake_up(t, 1);
 865                        } while_each_thread(p, t);
 866                        return;
 867                }
 868        }
 869
 870        /*
 871         * The signal is already in the shared-pending queue.
 872         * Tell the chosen thread to wake up and dequeue it.
 873         */
 874        signal_wake_up(t, sig == SIGKILL);
 875        return;
 876}
 877
 878static inline int legacy_queue(struct sigpending *signals, int sig)
 879{
 880        return (sig < SIGRTMIN) && sigismember(&signals->signal, sig);
 881}
 882
 883static int __send_signal(int sig, struct siginfo *info, struct task_struct *t,
 884                        int group, int from_ancestor_ns)
 885{
 886        struct sigpending *pending;
 887        struct sigqueue *q;
 888        int override_rlimit;
 889
 890        trace_signal_generate(sig, info, t);
 891
 892        assert_spin_locked(&t->sighand->siglock);
 893
 894        if (!prepare_signal(sig, t, from_ancestor_ns))
 895                return 0;
 896
 897        pending = group ? &t->signal->shared_pending : &t->pending;
 898        /*
 899         * Short-circuit ignored signals and support queuing
 900         * exactly one non-rt signal, so that we can get more
 901         * detailed information about the cause of the signal.
 902         */
 903        if (legacy_queue(pending, sig))
 904                return 0;
 905        /*
 906         * fast-pathed signals for kernel-internal things like SIGSTOP
 907         * or SIGKILL.
 908         */
 909        if (info == SEND_SIG_FORCED)
 910                goto out_set;
 911
 912        /* Real-time signals must be queued if sent by sigqueue, or
 913           some other real-time mechanism.  It is implementation
 914           defined whether kill() does so.  We attempt to do so, on
 915           the principle of least surprise, but since kill is not
 916           allowed to fail with EAGAIN when low on memory we just
 917           make sure at least one signal gets delivered and don't
 918           pass on the info struct.  */
 919
 920        if (sig < SIGRTMIN)
 921                override_rlimit = (is_si_special(info) || info->si_code >= 0);
 922        else
 923                override_rlimit = 0;
 924
 925        q = __sigqueue_alloc(sig, t, GFP_ATOMIC | __GFP_NOTRACK_FALSE_POSITIVE,
 926                override_rlimit);
 927        if (q) {
 928                list_add_tail(&q->list, &pending->list);
 929                switch ((unsigned long) info) {
 930                case (unsigned long) SEND_SIG_NOINFO:
 931                        q->info.si_signo = sig;
 932                        q->info.si_errno = 0;
 933                        q->info.si_code = SI_USER;
 934                        q->info.si_pid = task_tgid_nr_ns(current,
 935                                                        task_active_pid_ns(t));
 936                        q->info.si_uid = current_uid();
 937                        break;
 938                case (unsigned long) SEND_SIG_PRIV:
 939                        q->info.si_signo = sig;
 940                        q->info.si_errno = 0;
 941                        q->info.si_code = SI_KERNEL;
 942                        q->info.si_pid = 0;
 943                        q->info.si_uid = 0;
 944                        break;
 945                default:
 946                        copy_siginfo(&q->info, info);
 947                        if (from_ancestor_ns)
 948                                q->info.si_pid = 0;
 949                        break;
 950                }
 951        } else if (!is_si_special(info)) {
 952                if (sig >= SIGRTMIN && info->si_code != SI_USER) {
 953                        /*
 954                         * Queue overflow, abort.  We may abort if the
 955                         * signal was rt and sent by user using something
 956                         * other than kill().
 957                         */
 958                        trace_signal_overflow_fail(sig, group, info);
 959                        return -EAGAIN;
 960                } else {
 961                        /*
 962                         * This is a silent loss of information.  We still
 963                         * send the signal, but the *info bits are lost.
 964                         */
 965                        trace_signal_lose_info(sig, group, info);
 966                }
 967        }
 968
 969out_set:
 970        signalfd_notify(t, sig);
 971        sigaddset(&pending->signal, sig);
 972        complete_signal(sig, t, group);
 973        return 0;
 974}
 975
 976static int send_signal(int sig, struct siginfo *info, struct task_struct *t,
 977                        int group)
 978{
 979        int from_ancestor_ns = 0;
 980
 981#ifdef CONFIG_PID_NS
 982        from_ancestor_ns = si_fromuser(info) &&
 983                           !task_pid_nr_ns(current, task_active_pid_ns(t));
 984#endif
 985
 986        return __send_signal(sig, info, t, group, from_ancestor_ns);
 987}
 988
 989static void print_fatal_signal(struct pt_regs *regs, int signr)
 990{
 991        printk("%s/%d: potentially unexpected fatal signal %d.\n",
 992                current->comm, task_pid_nr(current), signr);
 993
 994#if defined(__i386__) && !defined(__arch_um__)
 995        printk("code at %08lx: ", regs->ip);
 996        {
 997                int i;
 998                for (i = 0; i < 16; i++) {
 999                        unsigned char insn;
1000
1001                        if (get_user(insn, (unsigned char *)(regs->ip + i)))
1002                                break;
1003                        printk("%02x ", insn);
1004                }
1005        }
1006#endif
1007        printk("\n");
1008        preempt_disable();
1009        show_regs(regs);
1010        preempt_enable();
1011}
1012
1013static int __init setup_print_fatal_signals(char *str)
1014{
1015        get_option (&str, &print_fatal_signals);
1016
1017        return 1;
1018}
1019
1020__setup("print-fatal-signals=", setup_print_fatal_signals);
1021
1022int
1023__group_send_sig_info(int sig, struct siginfo *info, struct task_struct *p)
1024{
1025        return send_signal(sig, info, p, 1);
1026}
1027
1028static int
1029specific_send_sig_info(int sig, struct siginfo *info, struct task_struct *t)
1030{
1031        return send_signal(sig, info, t, 0);
1032}
1033
1034int do_send_sig_info(int sig, struct siginfo *info, struct task_struct *p,
1035                        bool group)
1036{
1037        unsigned long flags;
1038        int ret = -ESRCH;
1039
1040        if (lock_task_sighand(p, &flags)) {
1041                ret = send_signal(sig, info, p, group);
1042                unlock_task_sighand(p, &flags);
1043        }
1044
1045        return ret;
1046}
1047
1048/*
1049 * Force a signal that the process can't ignore: if necessary
1050 * we unblock the signal and change any SIG_IGN to SIG_DFL.
1051 *
1052 * Note: If we unblock the signal, we always reset it to SIG_DFL,
1053 * since we do not want to have a signal handler that was blocked
1054 * be invoked when user space had explicitly blocked it.
1055 *
1056 * We don't want to have recursive SIGSEGV's etc, for example,
1057 * that is why we also clear SIGNAL_UNKILLABLE.
1058 */
1059int
1060force_sig_info(int sig, struct siginfo *info, struct task_struct *t)
1061{
1062        unsigned long int flags;
1063        int ret, blocked, ignored;
1064        struct k_sigaction *action;
1065
1066        spin_lock_irqsave(&t->sighand->siglock, flags);
1067        action = &t->sighand->action[sig-1];
1068        ignored = action->sa.sa_handler == SIG_IGN;
1069        blocked = sigismember(&t->blocked, sig);
1070        if (blocked || ignored) {
1071                action->sa.sa_handler = SIG_DFL;
1072                if (blocked) {
1073                        sigdelset(&t->blocked, sig);
1074                        recalc_sigpending_and_wake(t);
1075                }
1076        }
1077        if (action->sa.sa_handler == SIG_DFL)
1078                t->signal->flags &= ~SIGNAL_UNKILLABLE;
1079        ret = specific_send_sig_info(sig, info, t);
1080        spin_unlock_irqrestore(&t->sighand->siglock, flags);
1081
1082        return ret;
1083}
1084
1085/*
1086 * Nuke all other threads in the group.
1087 */
1088int zap_other_threads(struct task_struct *p)
1089{
1090        struct task_struct *t = p;
1091        int count = 0;
1092
1093        p->signal->group_stop_count = 0;
1094
1095        while_each_thread(p, t) {
1096                count++;
1097
1098                /* Don't bother with already dead threads */
1099                if (t->exit_state)
1100                        continue;
1101                sigaddset(&t->pending.signal, SIGKILL);
1102                signal_wake_up(t, 1);
1103        }
1104
1105        return count;
1106}
1107
1108struct sighand_struct *__lock_task_sighand(struct task_struct *tsk,
1109                                           unsigned long *flags)
1110{
1111        struct sighand_struct *sighand;
1112
1113        rcu_read_lock();
1114        for (;;) {
1115                sighand = rcu_dereference(tsk->sighand);
1116                if (unlikely(sighand == NULL))
1117                        break;
1118
1119                spin_lock_irqsave(&sighand->siglock, *flags);
1120                if (likely(sighand == tsk->sighand))
1121                        break;
1122                spin_unlock_irqrestore(&sighand->siglock, *flags);
1123        }
1124        rcu_read_unlock();
1125
1126        return sighand;
1127}
1128
1129/*
1130 * send signal info to all the members of a group
1131 */
1132int group_send_sig_info(int sig, struct siginfo *info, struct task_struct *p)
1133{
1134        int ret;
1135
1136        rcu_read_lock();
1137        ret = check_kill_permission(sig, info, p);
1138        rcu_read_unlock();
1139
1140        if (!ret && sig)
1141                ret = do_send_sig_info(sig, info, p, true);
1142
1143        return ret;
1144}
1145
1146/*
1147 * __kill_pgrp_info() sends a signal to a process group: this is what the tty
1148 * control characters do (^C, ^Z etc)
1149 * - the caller must hold at least a readlock on tasklist_lock
1150 */
1151int __kill_pgrp_info(int sig, struct siginfo *info, struct pid *pgrp)
1152{
1153        struct task_struct *p = NULL;
1154        int retval, success;
1155
1156        success = 0;
1157        retval = -ESRCH;
1158        do_each_pid_task(pgrp, PIDTYPE_PGID, p) {
1159                int err = group_send_sig_info(sig, info, p);
1160                success |= !err;
1161                retval = err;
1162        } while_each_pid_task(pgrp, PIDTYPE_PGID, p);
1163        return success ? 0 : retval;
1164}
1165
1166int kill_pid_info(int sig, struct siginfo *info, struct pid *pid)
1167{
1168        int error = -ESRCH;
1169        struct task_struct *p;
1170
1171        rcu_read_lock();
1172retry:
1173        p = pid_task(pid, PIDTYPE_PID);
1174        if (p) {
1175                error = group_send_sig_info(sig, info, p);
1176                if (unlikely(error == -ESRCH))
1177                        /*
1178                         * The task was unhashed in between, try again.
1179                         * If it is dead, pid_task() will return NULL,
1180                         * if we race with de_thread() it will find the
1181                         * new leader.
1182                         */
1183                        goto retry;
1184        }
1185        rcu_read_unlock();
1186
1187        return error;
1188}
1189
1190int
1191kill_proc_info(int sig, struct siginfo *info, pid_t pid)
1192{
1193        int error;
1194        rcu_read_lock();
1195        error = kill_pid_info(sig, info, find_vpid(pid));
1196        rcu_read_unlock();
1197        return error;
1198}
1199
1200/* like kill_pid_info(), but doesn't use uid/euid of "current" */
1201int kill_pid_info_as_uid(int sig, struct siginfo *info, struct pid *pid,
1202                      uid_t uid, uid_t euid, u32 secid)
1203{
1204        int ret = -EINVAL;
1205        struct task_struct *p;
1206        const struct cred *pcred;
1207        unsigned long flags;
1208
1209        if (!valid_signal(sig))
1210                return ret;
1211
1212        rcu_read_lock();
1213        p = pid_task(pid, PIDTYPE_PID);
1214        if (!p) {
1215                ret = -ESRCH;
1216                goto out_unlock;
1217        }
1218        pcred = __task_cred(p);
1219        if (si_fromuser(info) &&
1220            euid != pcred->suid && euid != pcred->uid &&
1221            uid  != pcred->suid && uid  != pcred->uid) {
1222                ret = -EPERM;
1223                goto out_unlock;
1224        }
1225        ret = security_task_kill(p, info, sig, secid);
1226        if (ret)
1227                goto out_unlock;
1228
1229        if (sig) {
1230                if (lock_task_sighand(p, &flags)) {
1231                        ret = __send_signal(sig, info, p, 1, 0);
1232                        unlock_task_sighand(p, &flags);
1233                } else
1234                        ret = -ESRCH;
1235        }
1236out_unlock:
1237        rcu_read_unlock();
1238        return ret;
1239}
1240EXPORT_SYMBOL_GPL(kill_pid_info_as_uid);
1241
1242/*
1243 * kill_something_info() interprets pid in interesting ways just like kill(2).
1244 *
1245 * POSIX specifies that kill(-1,sig) is unspecified, but what we have
1246 * is probably wrong.  Should make it like BSD or SYSV.
1247 */
1248
1249static int kill_something_info(int sig, struct siginfo *info, pid_t pid)
1250{
1251        int ret;
1252
1253        if (pid > 0) {
1254                rcu_read_lock();
1255                ret = kill_pid_info(sig, info, find_vpid(pid));
1256                rcu_read_unlock();
1257                return ret;
1258        }
1259
1260        read_lock(&tasklist_lock);
1261        if (pid != -1) {
1262                ret = __kill_pgrp_info(sig, info,
1263                                pid ? find_vpid(-pid) : task_pgrp(current));
1264        } else {
1265                int retval = 0, count = 0;
1266                struct task_struct * p;
1267
1268                for_each_process(p) {
1269                        if (task_pid_vnr(p) > 1 &&
1270                                        !same_thread_group(p, current)) {
1271                                int err = group_send_sig_info(sig, info, p);
1272                                ++count;
1273                                if (err != -EPERM)
1274                                        retval = err;
1275                        }
1276                }
1277                ret = count ? retval : -ESRCH;
1278        }
1279        read_unlock(&tasklist_lock);
1280
1281        return ret;
1282}
1283
1284/*
1285 * These are for backward compatibility with the rest of the kernel source.
1286 */
1287
1288int
1289send_sig_info(int sig, struct siginfo *info, struct task_struct *p)
1290{
1291        /*
1292         * Make sure legacy kernel users don't send in bad values
1293         * (normal paths check this in check_kill_permission).
1294         */
1295        if (!valid_signal(sig))
1296                return -EINVAL;
1297
1298        return do_send_sig_info(sig, info, p, false);
1299}
1300
1301#define __si_special(priv) \
1302        ((priv) ? SEND_SIG_PRIV : SEND_SIG_NOINFO)
1303
1304int
1305send_sig(int sig, struct task_struct *p, int priv)
1306{
1307        return send_sig_info(sig, __si_special(priv), p);
1308}
1309
1310void
1311force_sig(int sig, struct task_struct *p)
1312{
1313        force_sig_info(sig, SEND_SIG_PRIV, p);
1314}
1315
1316/*
1317 * When things go south during signal handling, we
1318 * will force a SIGSEGV. And if the signal that caused
1319 * the problem was already a SIGSEGV, we'll want to
1320 * make sure we don't even try to deliver the signal..
1321 */
1322int
1323force_sigsegv(int sig, struct task_struct *p)
1324{
1325        if (sig == SIGSEGV) {
1326                unsigned long flags;
1327                spin_lock_irqsave(&p->sighand->siglock, flags);
1328                p->sighand->action[sig - 1].sa.sa_handler = SIG_DFL;
1329                spin_unlock_irqrestore(&p->sighand->siglock, flags);
1330        }
1331        force_sig(SIGSEGV, p);
1332        return 0;
1333}
1334
1335int kill_pgrp(struct pid *pid, int sig, int priv)
1336{
1337        int ret;
1338
1339        read_lock(&tasklist_lock);
1340        ret = __kill_pgrp_info(sig, __si_special(priv), pid);
1341        read_unlock(&tasklist_lock);
1342
1343        return ret;
1344}
1345EXPORT_SYMBOL(kill_pgrp);
1346
1347int kill_pid(struct pid *pid, int sig, int priv)
1348{
1349        return kill_pid_info(sig, __si_special(priv), pid);
1350}
1351EXPORT_SYMBOL(kill_pid);
1352
1353/*
1354 * These functions support sending signals using preallocated sigqueue
1355 * structures.  This is needed "because realtime applications cannot
1356 * afford to lose notifications of asynchronous events, like timer
1357 * expirations or I/O completions".  In the case of Posix Timers
1358 * we allocate the sigqueue structure from the timer_create.  If this
1359 * allocation fails we are able to report the failure to the application
1360 * with an EAGAIN error.
1361 */
1362struct sigqueue *sigqueue_alloc(void)
1363{
1364        struct sigqueue *q = __sigqueue_alloc(-1, current, GFP_KERNEL, 0);
1365
1366        if (q)
1367                q->flags |= SIGQUEUE_PREALLOC;
1368
1369        return q;
1370}
1371
1372void sigqueue_free(struct sigqueue *q)
1373{
1374        unsigned long flags;
1375        spinlock_t *lock = &current->sighand->siglock;
1376
1377        BUG_ON(!(q->flags & SIGQUEUE_PREALLOC));
1378        /*
1379         * We must hold ->siglock while testing q->list
1380         * to serialize with collect_signal() or with
1381         * __exit_signal()->flush_sigqueue().
1382         */
1383        spin_lock_irqsave(lock, flags);
1384        q->flags &= ~SIGQUEUE_PREALLOC;
1385        /*
1386         * If it is queued it will be freed when dequeued,
1387         * like the "regular" sigqueue.
1388         */
1389        if (!list_empty(&q->list))
1390                q = NULL;
1391        spin_unlock_irqrestore(lock, flags);
1392
1393        if (q)
1394                __sigqueue_free(q);
1395}
1396
1397int send_sigqueue(struct sigqueue *q, struct task_struct *t, int group)
1398{
1399        int sig = q->info.si_signo;
1400        struct sigpending *pending;
1401        unsigned long flags;
1402        int ret;
1403
1404        BUG_ON(!(q->flags & SIGQUEUE_PREALLOC));
1405
1406        ret = -1;
1407        if (!likely(lock_task_sighand(t, &flags)))
1408                goto ret;
1409
1410        ret = 1; /* the signal is ignored */
1411        if (!prepare_signal(sig, t, 0))
1412                goto out;
1413
1414        ret = 0;
1415        if (unlikely(!list_empty(&q->list))) {
1416                /*
1417                 * If an SI_TIMER entry is already queue just increment
1418                 * the overrun count.
1419                 */
1420                BUG_ON(q->info.si_code != SI_TIMER);
1421                q->info.si_overrun++;
1422                goto out;
1423        }
1424        q->info.si_overrun = 0;
1425
1426        signalfd_notify(t, sig);
1427        pending = group ? &t->signal->shared_pending : &t->pending;
1428        list_add_tail(&q->list, &pending->list);
1429        sigaddset(&pending->signal, sig);
1430        complete_signal(sig, t, group);
1431out:
1432        unlock_task_sighand(t, &flags);
1433ret:
1434        return ret;
1435}
1436
1437/*
1438 * Let a parent know about the death of a child.
1439 * For a stopped/continued status change, use do_notify_parent_cldstop instead.
1440 *
1441 * Returns -1 if our parent ignored us and so we've switched to
1442 * self-reaping, or else @sig.
1443 */
1444int do_notify_parent(struct task_struct *tsk, int sig)
1445{
1446        struct siginfo info;
1447        unsigned long flags;
1448        struct sighand_struct *psig;
1449        int ret = sig;
1450
1451        BUG_ON(sig == -1);
1452
1453        /* do_notify_parent_cldstop should have been called instead.  */
1454        BUG_ON(task_is_stopped_or_traced(tsk));
1455
1456        BUG_ON(!task_ptrace(tsk) &&
1457               (tsk->group_leader != tsk || !thread_group_empty(tsk)));
1458
1459        info.si_signo = sig;
1460        info.si_errno = 0;
1461        /*
1462         * we are under tasklist_lock here so our parent is tied to
1463         * us and cannot exit and release its namespace.
1464         *
1465         * the only it can is to switch its nsproxy with sys_unshare,
1466         * bu uncharing pid namespaces is not allowed, so we'll always
1467         * see relevant namespace
1468         *
1469         * write_lock() currently calls preempt_disable() which is the
1470         * same as rcu_read_lock(), but according to Oleg, this is not
1471         * correct to rely on this
1472         */
1473        rcu_read_lock();
1474        info.si_pid = task_pid_nr_ns(tsk, tsk->parent->nsproxy->pid_ns);
1475        info.si_uid = __task_cred(tsk)->uid;
1476        rcu_read_unlock();
1477
1478        info.si_utime = cputime_to_clock_t(cputime_add(tsk->utime,
1479                                tsk->signal->utime));
1480        info.si_stime = cputime_to_clock_t(cputime_add(tsk->stime,
1481                                tsk->signal->stime));
1482
1483        info.si_status = tsk->exit_code & 0x7f;
1484        if (tsk->exit_code & 0x80)
1485                info.si_code = CLD_DUMPED;
1486        else if (tsk->exit_code & 0x7f)
1487                info.si_code = CLD_KILLED;
1488        else {
1489                info.si_code = CLD_EXITED;
1490                info.si_status = tsk->exit_code >> 8;
1491        }
1492
1493        psig = tsk->parent->sighand;
1494        spin_lock_irqsave(&psig->siglock, flags);
1495        if (!task_ptrace(tsk) && sig == SIGCHLD &&
1496            (psig->action[SIGCHLD-1].sa.sa_handler == SIG_IGN ||
1497             (psig->action[SIGCHLD-1].sa.sa_flags & SA_NOCLDWAIT))) {
1498                /*
1499                 * We are exiting and our parent doesn't care.  POSIX.1
1500                 * defines special semantics for setting SIGCHLD to SIG_IGN
1501                 * or setting the SA_NOCLDWAIT flag: we should be reaped
1502                 * automatically and not left for our parent's wait4 call.
1503                 * Rather than having the parent do it as a magic kind of
1504                 * signal handler, we just set this to tell do_exit that we
1505                 * can be cleaned up without becoming a zombie.  Note that
1506                 * we still call __wake_up_parent in this case, because a
1507                 * blocked sys_wait4 might now return -ECHILD.
1508                 *
1509                 * Whether we send SIGCHLD or not for SA_NOCLDWAIT
1510                 * is implementation-defined: we do (if you don't want
1511                 * it, just use SIG_IGN instead).
1512                 */
1513                ret = tsk->exit_signal = -1;
1514                if (psig->action[SIGCHLD-1].sa.sa_handler == SIG_IGN)
1515                        sig = -1;
1516        }
1517        if (valid_signal(sig) && sig > 0)
1518                __group_send_sig_info(sig, &info, tsk->parent);
1519        __wake_up_parent(tsk, tsk->parent);
1520        spin_unlock_irqrestore(&psig->siglock, flags);
1521
1522        return ret;
1523}
1524
1525static void do_notify_parent_cldstop(struct task_struct *tsk, int why)
1526{
1527        struct siginfo info;
1528        unsigned long flags;
1529        struct task_struct *parent;
1530        struct sighand_struct *sighand;
1531
1532        if (task_ptrace(tsk))
1533                parent = tsk->parent;
1534        else {
1535                tsk = tsk->group_leader;
1536                parent = tsk->real_parent;
1537        }
1538
1539        info.si_signo = SIGCHLD;
1540        info.si_errno = 0;
1541        /*
1542         * see comment in do_notify_parent() abot the following 3 lines
1543         */
1544        rcu_read_lock();
1545        info.si_pid = task_pid_nr_ns(tsk, parent->nsproxy->pid_ns);
1546        info.si_uid = __task_cred(tsk)->uid;
1547        rcu_read_unlock();
1548
1549        info.si_utime = cputime_to_clock_t(tsk->utime);
1550        info.si_stime = cputime_to_clock_t(tsk->stime);
1551
1552        info.si_code = why;
1553        switch (why) {
1554        case CLD_CONTINUED:
1555                info.si_status = SIGCONT;
1556                break;
1557        case CLD_STOPPED:
1558                info.si_status = tsk->signal->group_exit_code & 0x7f;
1559                break;
1560        case CLD_TRAPPED:
1561                info.si_status = tsk->exit_code & 0x7f;
1562                break;
1563        default:
1564                BUG();
1565        }
1566
1567        sighand = parent->sighand;
1568        spin_lock_irqsave(&sighand->siglock, flags);
1569        if (sighand->action[SIGCHLD-1].sa.sa_handler != SIG_IGN &&
1570            !(sighand->action[SIGCHLD-1].sa.sa_flags & SA_NOCLDSTOP))
1571                __group_send_sig_info(SIGCHLD, &info, parent);
1572        /*
1573         * Even if SIGCHLD is not generated, we must wake up wait4 calls.
1574         */
1575        __wake_up_parent(tsk, parent);
1576        spin_unlock_irqrestore(&sighand->siglock, flags);
1577}
1578
1579static inline int may_ptrace_stop(void)
1580{
1581        if (!likely(task_ptrace(current)))
1582                return 0;
1583        /*
1584         * Are we in the middle of do_coredump?
1585         * If so and our tracer is also part of the coredump stopping
1586         * is a deadlock situation, and pointless because our tracer
1587         * is dead so don't allow us to stop.
1588         * If SIGKILL was already sent before the caller unlocked
1589         * ->siglock we must see ->core_state != NULL. Otherwise it
1590         * is safe to enter schedule().
1591         */
1592        if (unlikely(current->mm->core_state) &&
1593            unlikely(current->mm == current->parent->mm))
1594                return 0;
1595
1596        return 1;
1597}
1598
1599/*
1600 * Return nonzero if there is a SIGKILL that should be waking us up.
1601 * Called with the siglock held.
1602 */
1603static int sigkill_pending(struct task_struct *tsk)
1604{
1605        return  sigismember(&tsk->pending.signal, SIGKILL) ||
1606                sigismember(&tsk->signal->shared_pending.signal, SIGKILL);
1607}
1608
1609/*
1610 * This must be called with current->sighand->siglock held.
1611 *
1612 * This should be the path for all ptrace stops.
1613 * We always set current->last_siginfo while stopped here.
1614 * That makes it a way to test a stopped process for
1615 * being ptrace-stopped vs being job-control-stopped.
1616 *
1617 * If we actually decide not to stop at all because the tracer
1618 * is gone, we keep current->exit_code unless clear_code.
1619 */
1620static void ptrace_stop(int exit_code, int clear_code, siginfo_t *info)
1621        __releases(&current->sighand->siglock)
1622        __acquires(&current->sighand->siglock)
1623{
1624        if (arch_ptrace_stop_needed(exit_code, info)) {
1625                /*
1626                 * The arch code has something special to do before a
1627                 * ptrace stop.  This is allowed to block, e.g. for faults
1628                 * on user stack pages.  We can't keep the siglock while
1629                 * calling arch_ptrace_stop, so we must release it now.
1630                 * To preserve proper semantics, we must do this before
1631                 * any signal bookkeeping like checking group_stop_count.
1632                 * Meanwhile, a SIGKILL could come in before we retake the
1633                 * siglock.  That must prevent us from sleeping in TASK_TRACED.
1634                 * So after regaining the lock, we must check for SIGKILL.
1635                 */
1636                spin_unlock_irq(&current->sighand->siglock);
1637                arch_ptrace_stop(exit_code, info);
1638                spin_lock_irq(&current->sighand->siglock);
1639                if (sigkill_pending(current))
1640                        return;
1641        }
1642
1643        /*
1644         * If there is a group stop in progress,
1645         * we must participate in the bookkeeping.
1646         */
1647        if (current->signal->group_stop_count > 0)
1648                --current->signal->group_stop_count;
1649
1650        current->last_siginfo = info;
1651        current->exit_code = exit_code;
1652
1653        /* Let the debugger run.  */
1654        __set_current_state(TASK_TRACED);
1655        spin_unlock_irq(&current->sighand->siglock);
1656        read_lock(&tasklist_lock);
1657        if (may_ptrace_stop()) {
1658                do_notify_parent_cldstop(current, CLD_TRAPPED);
1659                /*
1660                 * Don't want to allow preemption here, because
1661                 * sys_ptrace() needs this task to be inactive.
1662                 *
1663                 * XXX: implement read_unlock_no_resched().
1664                 */
1665                preempt_disable();
1666                read_unlock(&tasklist_lock);
1667                preempt_enable_no_resched();
1668                schedule();
1669        } else {
1670                /*
1671                 * By the time we got the lock, our tracer went away.
1672                 * Don't drop the lock yet, another tracer may come.
1673                 */
1674                __set_current_state(TASK_RUNNING);
1675                if (clear_code)
1676                        current->exit_code = 0;
1677                read_unlock(&tasklist_lock);
1678        }
1679
1680        /*
1681         * While in TASK_TRACED, we were considered "frozen enough".
1682         * Now that we woke up, it's crucial if we're supposed to be
1683         * frozen that we freeze now before running anything substantial.
1684         */
1685        try_to_freeze();
1686
1687        /*
1688         * We are back.  Now reacquire the siglock before touching
1689         * last_siginfo, so that we are sure to have synchronized with
1690         * any signal-sending on another CPU that wants to examine it.
1691         */
1692        spin_lock_irq(&current->sighand->siglock);
1693        current->last_siginfo = NULL;
1694
1695        /*
1696         * Queued signals ignored us while we were stopped for tracing.
1697         * So check for any that we should take before resuming user mode.
1698         * This sets TIF_SIGPENDING, but never clears it.
1699         */
1700        recalc_sigpending_tsk(current);
1701}
1702
1703void ptrace_notify(int exit_code)
1704{
1705        siginfo_t info;
1706
1707        BUG_ON((exit_code & (0x7f | ~0xffff)) != SIGTRAP);
1708
1709        memset(&info, 0, sizeof info);
1710        info.si_signo = SIGTRAP;
1711        info.si_code = exit_code;
1712        info.si_pid = task_pid_vnr(current);
1713        info.si_uid = current_uid();
1714
1715        /* Let the debugger run.  */
1716        spin_lock_irq(&current->sighand->siglock);
1717        ptrace_stop(exit_code, 1, &info);
1718        spin_unlock_irq(&current->sighand->siglock);
1719}
1720
1721/*
1722 * This performs the stopping for SIGSTOP and other stop signals.
1723 * We have to stop all threads in the thread group.
1724 * Returns nonzero if we've actually stopped and released the siglock.
1725 * Returns zero if we didn't stop and still hold the siglock.
1726 */
1727static int do_signal_stop(int signr)
1728{
1729        struct signal_struct *sig = current->signal;
1730        int notify;
1731
1732        if (!sig->group_stop_count) {
1733                struct task_struct *t;
1734
1735                if (!likely(sig->flags & SIGNAL_STOP_DEQUEUED) ||
1736                    unlikely(signal_group_exit(sig)))
1737                        return 0;
1738                /*
1739                 * There is no group stop already in progress.
1740                 * We must initiate one now.
1741                 */
1742                sig->group_exit_code = signr;
1743
1744                sig->group_stop_count = 1;
1745                for (t = next_thread(current); t != current; t = next_thread(t))
1746                        /*
1747                         * Setting state to TASK_STOPPED for a group
1748                         * stop is always done with the siglock held,
1749                         * so this check has no races.
1750                         */
1751                        if (!(t->flags & PF_EXITING) &&
1752                            !task_is_stopped_or_traced(t)) {
1753                                sig->group_stop_count++;
1754                                signal_wake_up(t, 0);
1755                        }
1756        }
1757        /*
1758         * If there are no other threads in the group, or if there is
1759         * a group stop in progress and we are the last to stop, report
1760         * to the parent.  When ptraced, every thread reports itself.
1761         */
1762        notify = sig->group_stop_count == 1 ? CLD_STOPPED : 0;
1763        notify = tracehook_notify_jctl(notify, CLD_STOPPED);
1764        /*
1765         * tracehook_notify_jctl() can drop and reacquire siglock, so
1766         * we keep ->group_stop_count != 0 before the call. If SIGCONT
1767         * or SIGKILL comes in between ->group_stop_count == 0.
1768         */
1769        if (sig->group_stop_count) {
1770                if (!--sig->group_stop_count)
1771                        sig->flags = SIGNAL_STOP_STOPPED;
1772                current->exit_code = sig->group_exit_code;
1773                __set_current_state(TASK_STOPPED);
1774        }
1775        spin_unlock_irq(&current->sighand->siglock);
1776
1777        if (notify) {
1778                read_lock(&tasklist_lock);
1779                do_notify_parent_cldstop(current, notify);
1780                read_unlock(&tasklist_lock);
1781        }
1782
1783        /* Now we don't run again until woken by SIGCONT or SIGKILL */
1784        do {
1785                schedule();
1786        } while (try_to_freeze());
1787
1788        tracehook_finish_jctl();
1789        current->exit_code = 0;
1790
1791        return 1;
1792}
1793
1794static int ptrace_signal(int signr, siginfo_t *info,
1795                         struct pt_regs *regs, void *cookie)
1796{
1797        if (!task_ptrace(current))
1798                return signr;
1799
1800        ptrace_signal_deliver(regs, cookie);
1801
1802        /* Let the debugger run.  */
1803        ptrace_stop(signr, 0, info);
1804
1805        /* We're back.  Did the debugger cancel the sig?  */
1806        signr = current->exit_code;
1807        if (signr == 0)
1808                return signr;
1809
1810        current->exit_code = 0;
1811
1812        /* Update the siginfo structure if the signal has
1813           changed.  If the debugger wanted something
1814           specific in the siginfo structure then it should
1815           have updated *info via PTRACE_SETSIGINFO.  */
1816        if (signr != info->si_signo) {
1817                info->si_signo = signr;
1818                info->si_errno = 0;
1819                info->si_code = SI_USER;
1820                info->si_pid = task_pid_vnr(current->parent);
1821                info->si_uid = task_uid(current->parent);
1822        }
1823
1824        /* If the (new) signal is now blocked, requeue it.  */
1825        if (sigismember(&current->blocked, signr)) {
1826                specific_send_sig_info(signr, info, current);
1827                signr = 0;
1828        }
1829
1830        return signr;
1831}
1832
1833int get_signal_to_deliver(siginfo_t *info, struct k_sigaction *return_ka,
1834                          struct pt_regs *regs, void *cookie)
1835{
1836        struct sighand_struct *sighand = current->sighand;
1837        struct signal_struct *signal = current->signal;
1838        int signr;
1839
1840relock:
1841        /*
1842         * We'll jump back here after any time we were stopped in TASK_STOPPED.
1843         * While in TASK_STOPPED, we were considered "frozen enough".
1844         * Now that we woke up, it's crucial if we're supposed to be
1845         * frozen that we freeze now before running anything substantial.
1846         */
1847        try_to_freeze();
1848
1849        spin_lock_irq(&sighand->siglock);
1850        /*
1851         * Every stopped thread goes here after wakeup. Check to see if
1852         * we should notify the parent, prepare_signal(SIGCONT) encodes
1853         * the CLD_ si_code into SIGNAL_CLD_MASK bits.
1854         */
1855        if (unlikely(signal->flags & SIGNAL_CLD_MASK)) {
1856                int why = (signal->flags & SIGNAL_STOP_CONTINUED)
1857                                ? CLD_CONTINUED : CLD_STOPPED;
1858                signal->flags &= ~SIGNAL_CLD_MASK;
1859
1860                why = tracehook_notify_jctl(why, CLD_CONTINUED);
1861                spin_unlock_irq(&sighand->siglock);
1862
1863                if (why) {
1864                        read_lock(&tasklist_lock);
1865                        do_notify_parent_cldstop(current->group_leader, why);
1866                        read_unlock(&tasklist_lock);
1867                }
1868                goto relock;
1869        }
1870
1871        for (;;) {
1872                struct k_sigaction *ka;
1873                /*
1874                 * Tracing can induce an artifical signal and choose sigaction.
1875                 * The return value in @signr determines the default action,
1876                 * but @info->si_signo is the signal number we will report.
1877                 */
1878                signr = tracehook_get_signal(current, regs, info, return_ka);
1879                if (unlikely(signr < 0))
1880                        goto relock;
1881                if (unlikely(signr != 0))
1882                        ka = return_ka;
1883                else {
1884                        if (unlikely(signal->group_stop_count > 0) &&
1885                            do_signal_stop(0))
1886                                goto relock;
1887
1888                        signr = dequeue_signal(current, &current->blocked,
1889                                               info);
1890
1891                        if (!signr)
1892                                break; /* will return 0 */
1893
1894                        if (signr != SIGKILL) {
1895                                signr = ptrace_signal(signr, info,
1896                                                      regs, cookie);
1897                                if (!signr)
1898                                        continue;
1899                        }
1900
1901                        ka = &sighand->action[signr-1];
1902                }
1903
1904                /* Trace actually delivered signals. */
1905                trace_signal_deliver(signr, info, ka);
1906
1907                if (ka->sa.sa_handler == SIG_IGN) /* Do nothing.  */
1908                        continue;
1909                if (ka->sa.sa_handler != SIG_DFL) {
1910                        /* Run the handler.  */
1911                        *return_ka = *ka;
1912
1913                        if (ka->sa.sa_flags & SA_ONESHOT)
1914                                ka->sa.sa_handler = SIG_DFL;
1915
1916                        break; /* will return non-zero "signr" value */
1917                }
1918
1919                /*
1920                 * Now we are doing the default action for this signal.
1921                 */
1922                if (sig_kernel_ignore(signr)) /* Default is nothing. */
1923                        continue;
1924
1925                /*
1926                 * Global init gets no signals it doesn't want.
1927                 * Container-init gets no signals it doesn't want from same
1928                 * container.
1929                 *
1930                 * Note that if global/container-init sees a sig_kernel_only()
1931                 * signal here, the signal must have been generated internally
1932                 * or must have come from an ancestor namespace. In either
1933                 * case, the signal cannot be dropped.
1934                 */
1935                if (unlikely(signal->flags & SIGNAL_UNKILLABLE) &&
1936                                !sig_kernel_only(signr))
1937                        continue;
1938
1939                if (sig_kernel_stop(signr)) {
1940                        /*
1941                         * The default action is to stop all threads in
1942                         * the thread group.  The job control signals
1943                         * do nothing in an orphaned pgrp, but SIGSTOP
1944                         * always works.  Note that siglock needs to be
1945                         * dropped during the call to is_orphaned_pgrp()
1946                         * because of lock ordering with tasklist_lock.
1947                         * This allows an intervening SIGCONT to be posted.
1948                         * We need to check for that and bail out if necessary.
1949                         */
1950                        if (signr != SIGSTOP) {
1951                                spin_unlock_irq(&sighand->siglock);
1952
1953                                /* signals can be posted during this window */
1954
1955                                if (is_current_pgrp_orphaned())
1956                                        goto relock;
1957
1958                                spin_lock_irq(&sighand->siglock);
1959                        }
1960
1961                        if (likely(do_signal_stop(info->si_signo))) {
1962                                /* It released the siglock.  */
1963                                goto relock;
1964                        }
1965
1966                        /*
1967                         * We didn't actually stop, due to a race
1968                         * with SIGCONT or something like that.
1969                         */
1970                        continue;
1971                }
1972
1973                spin_unlock_irq(&sighand->siglock);
1974
1975                /*
1976                 * Anything else is fatal, maybe with a core dump.
1977                 */
1978                current->flags |= PF_SIGNALED;
1979
1980                if (sig_kernel_coredump(signr)) {
1981                        if (print_fatal_signals)
1982                                print_fatal_signal(regs, info->si_signo);
1983                        /*
1984                         * If it was able to dump core, this kills all
1985                         * other threads in the group and synchronizes with
1986                         * their demise.  If we lost the race with another
1987                         * thread getting here, it set group_exit_code
1988                         * first and our do_group_exit call below will use
1989                         * that value and ignore the one we pass it.
1990                         */
1991                        do_coredump(info->si_signo, info->si_signo, regs);
1992                }
1993
1994                /*
1995                 * Death signals, no core dump.
1996                 */
1997                do_group_exit(info->si_signo);
1998                /* NOTREACHED */
1999        }
2000        spin_unlock_irq(&sighand->siglock);
2001        return signr;
2002}
2003
2004void exit_signals(struct task_struct *tsk)
2005{
2006        int group_stop = 0;
2007        struct task_struct *t;
2008
2009        if (thread_group_empty(tsk) || signal_group_exit(tsk->signal)) {
2010                tsk->flags |= PF_EXITING;
2011                return;
2012        }
2013
2014        spin_lock_irq(&tsk->sighand->siglock);
2015        /*
2016         * From now this task is not visible for group-wide signals,
2017         * see wants_signal(), do_signal_stop().
2018         */
2019        tsk->flags |= PF_EXITING;
2020        if (!signal_pending(tsk))
2021                goto out;
2022
2023        /* It could be that __group_complete_signal() choose us to
2024         * notify about group-wide signal. Another thread should be
2025         * woken now to take the signal since we will not.
2026         */
2027        for (t = tsk; (t = next_thread(t)) != tsk; )
2028                if (!signal_pending(t) && !(t->flags & PF_EXITING))
2029                        recalc_sigpending_and_wake(t);
2030
2031        if (unlikely(tsk->signal->group_stop_count) &&
2032                        !--tsk->signal->group_stop_count) {
2033                tsk->signal->flags = SIGNAL_STOP_STOPPED;
2034                group_stop = tracehook_notify_jctl(CLD_STOPPED, CLD_STOPPED);
2035        }
2036out:
2037        spin_unlock_irq(&tsk->sighand->siglock);
2038
2039        if (unlikely(group_stop)) {
2040                read_lock(&tasklist_lock);
2041                do_notify_parent_cldstop(tsk, group_stop);
2042                read_unlock(&tasklist_lock);
2043        }
2044}
2045
2046EXPORT_SYMBOL(recalc_sigpending);
2047EXPORT_SYMBOL_GPL(dequeue_signal);
2048EXPORT_SYMBOL(flush_signals);
2049EXPORT_SYMBOL(force_sig);
2050EXPORT_SYMBOL(send_sig);
2051EXPORT_SYMBOL(send_sig_info);
2052EXPORT_SYMBOL(sigprocmask);
2053EXPORT_SYMBOL(block_all_signals);
2054EXPORT_SYMBOL(unblock_all_signals);
2055
2056
2057/*
2058 * System call entry points.
2059 */
2060
2061SYSCALL_DEFINE0(restart_syscall)
2062{
2063        struct restart_block *restart = &current_thread_info()->restart_block;
2064        return restart->fn(restart);
2065}
2066
2067long do_no_restart_syscall(struct restart_block *param)
2068{
2069        return -EINTR;
2070}
2071
2072/*
2073 * We don't need to get the kernel lock - this is all local to this
2074 * particular thread.. (and that's good, because this is _heavily_
2075 * used by various programs)
2076 */
2077
2078/*
2079 * This is also useful for kernel threads that want to temporarily
2080 * (or permanently) block certain signals.
2081 *
2082 * NOTE! Unlike the user-mode sys_sigprocmask(), the kernel
2083 * interface happily blocks "unblockable" signals like SIGKILL
2084 * and friends.
2085 */
2086int sigprocmask(int how, sigset_t *set, sigset_t *oldset)
2087{
2088        int error;
2089
2090        spin_lock_irq(&current->sighand->siglock);
2091        if (oldset)
2092                *oldset = current->blocked;
2093
2094        error = 0;
2095        switch (how) {
2096        case SIG_BLOCK:
2097                sigorsets(&current->blocked, &current->blocked, set);
2098                break;
2099        case SIG_UNBLOCK:
2100                signandsets(&current->blocked, &current->blocked, set);
2101                break;
2102        case SIG_SETMASK:
2103                current->blocked = *set;
2104                break;
2105        default:
2106                error = -EINVAL;
2107        }
2108        recalc_sigpending();
2109        spin_unlock_irq(&current->sighand->siglock);
2110
2111        return error;
2112}
2113
2114SYSCALL_DEFINE4(rt_sigprocmask, int, how, sigset_t __user *, set,
2115                sigset_t __user *, oset, size_t, sigsetsize)
2116{
2117        int error = -EINVAL;
2118        sigset_t old_set, new_set;
2119
2120        /* XXX: Don't preclude handling different sized sigset_t's.  */
2121        if (sigsetsize != sizeof(sigset_t))
2122                goto out;
2123
2124        if (set) {
2125                error = -EFAULT;
2126                if (copy_from_user(&new_set, set, sizeof(*set)))
2127                        goto out;
2128                sigdelsetmask(&new_set, sigmask(SIGKILL)|sigmask(SIGSTOP));
2129
2130                error = sigprocmask(how, &new_set, &old_set);
2131                if (error)
2132                        goto out;
2133                if (oset)
2134                        goto set_old;
2135        } else if (oset) {
2136                spin_lock_irq(&current->sighand->siglock);
2137                old_set = current->blocked;
2138                spin_unlock_irq(&current->sighand->siglock);
2139
2140        set_old:
2141                error = -EFAULT;
2142                if (copy_to_user(oset, &old_set, sizeof(*oset)))
2143                        goto out;
2144        }
2145        error = 0;
2146out:
2147        return error;
2148}
2149
2150long do_sigpending(void __user *set, unsigned long sigsetsize)
2151{
2152        long error = -EINVAL;
2153        sigset_t pending;
2154
2155        if (sigsetsize > sizeof(sigset_t))
2156                goto out;
2157
2158        spin_lock_irq(&current->sighand->siglock);
2159        sigorsets(&pending, &current->pending.signal,
2160                  &current->signal->shared_pending.signal);
2161        spin_unlock_irq(&current->sighand->siglock);
2162
2163        /* Outside the lock because only this thread touches it.  */
2164        sigandsets(&pending, &current->blocked, &pending);
2165
2166        error = -EFAULT;
2167        if (!copy_to_user(set, &pending, sigsetsize))
2168                error = 0;
2169
2170out:
2171        return error;
2172}       
2173
2174SYSCALL_DEFINE2(rt_sigpending, sigset_t __user *, set, size_t, sigsetsize)
2175{
2176        return do_sigpending(set, sigsetsize);
2177}
2178
2179#ifndef HAVE_ARCH_COPY_SIGINFO_TO_USER
2180
2181int copy_siginfo_to_user(siginfo_t __user *to, siginfo_t *from)
2182{
2183        int err;
2184
2185        if (!access_ok (VERIFY_WRITE, to, sizeof(siginfo_t)))
2186                return -EFAULT;
2187        if (from->si_code < 0)
2188                return __copy_to_user(to, from, sizeof(siginfo_t))
2189                        ? -EFAULT : 0;
2190        /*
2191         * If you change siginfo_t structure, please be sure
2192         * this code is fixed accordingly.
2193         * Please remember to update the signalfd_copyinfo() function
2194         * inside fs/signalfd.c too, in case siginfo_t changes.
2195         * It should never copy any pad contained in the structure
2196         * to avoid security leaks, but must copy the generic
2197         * 3 ints plus the relevant union member.
2198         */
2199        err = __put_user(from->si_signo, &to->si_signo);
2200        err |= __put_user(from->si_errno, &to->si_errno);
2201        err |= __put_user((short)from->si_code, &to->si_code);
2202        switch (from->si_code & __SI_MASK) {
2203        case __SI_KILL:
2204                err |= __put_user(from->si_pid, &to->si_pid);
2205                err |= __put_user(from->si_uid, &to->si_uid);
2206                break;
2207        case __SI_TIMER:
2208                 err |= __put_user(from->si_tid, &to->si_tid);
2209                 err |= __put_user(from->si_overrun, &to->si_overrun);
2210                 err |= __put_user(from->si_ptr, &to->si_ptr);
2211                break;
2212        case __SI_POLL:
2213                err |= __put_user(from->si_band, &to->si_band);
2214                err |= __put_user(from->si_fd, &to->si_fd);
2215                break;
2216        case __SI_FAULT:
2217                err |= __put_user(from->si_addr, &to->si_addr);
2218#ifdef __ARCH_SI_TRAPNO
2219                err |= __put_user(from->si_trapno, &to->si_trapno);
2220#endif
2221#ifdef BUS_MCEERR_AO
2222                /* 
2223                 * Other callers might not initialize the si_lsb field,
2224                 * so check explicitely for the right codes here.
2225                 */
2226                if (from->si_code == BUS_MCEERR_AR || from->si_code == BUS_MCEERR_AO)
2227                        err |= __put_user(from->si_addr_lsb, &to->si_addr_lsb);
2228#endif
2229                break;
2230        case __SI_CHLD:
2231                err |= __put_user(from->si_pid, &to->si_pid);
2232                err |= __put_user(from->si_uid, &to->si_uid);
2233                err |= __put_user(from->si_status, &to->si_status);
2234                err |= __put_user(from->si_utime, &to->si_utime);
2235                err |= __put_user(from->si_stime, &to->si_stime);
2236                break;
2237        case __SI_RT: /* This is not generated by the kernel as of now. */
2238        case __SI_MESGQ: /* But this is */
2239                err |= __put_user(from->si_pid, &to->si_pid);
2240                err |= __put_user(from->si_uid, &to->si_uid);
2241                err |= __put_user(from->si_ptr, &to->si_ptr);
2242                break;
2243        default: /* this is just in case for now ... */
2244                err |= __put_user(from->si_pid, &to->si_pid);
2245                err |= __put_user(from->si_uid, &to->si_uid);
2246                break;
2247        }
2248        return err;
2249}
2250
2251#endif
2252
2253SYSCALL_DEFINE4(rt_sigtimedwait, const sigset_t __user *, uthese,
2254                siginfo_t __user *, uinfo, const struct timespec __user *, uts,
2255                size_t, sigsetsize)
2256{
2257        int ret, sig;
2258        sigset_t these;
2259        struct timespec ts;
2260        siginfo_t info;
2261        long timeout = 0;
2262
2263        /* XXX: Don't preclude handling different sized sigset_t's.  */
2264        if (sigsetsize != sizeof(sigset_t))
2265                return -EINVAL;
2266
2267        if (copy_from_user(&these, uthese, sizeof(these)))
2268                return -EFAULT;
2269                
2270        /*
2271         * Invert the set of allowed signals to get those we
2272         * want to block.
2273         */
2274        sigdelsetmask(&these, sigmask(SIGKILL)|sigmask(SIGSTOP));
2275        signotset(&these);
2276
2277        if (uts) {
2278                if (copy_from_user(&ts, uts, sizeof(ts)))
2279                        return -EFAULT;
2280                if (ts.tv_nsec >= 1000000000L || ts.tv_nsec < 0
2281                    || ts.tv_sec < 0)
2282                        return -EINVAL;
2283        }
2284
2285        spin_lock_irq(&current->sighand->siglock);
2286        sig = dequeue_signal(current, &these, &info);
2287        if (!sig) {
2288                timeout = MAX_SCHEDULE_TIMEOUT;
2289                if (uts)
2290                        timeout = (timespec_to_jiffies(&ts)
2291                                   + (ts.tv_sec || ts.tv_nsec));
2292
2293                if (timeout) {
2294                        /* None ready -- temporarily unblock those we're
2295                         * interested while we are sleeping in so that we'll
2296                         * be awakened when they arrive.  */
2297                        current->real_blocked = current->blocked;
2298                        sigandsets(&current->blocked, &current->blocked, &these);
2299                        recalc_sigpending();
2300                        spin_unlock_irq(&current->sighand->siglock);
2301
2302                        timeout = schedule_timeout_interruptible(timeout);
2303
2304                        spin_lock_irq(&current->sighand->siglock);
2305                        sig = dequeue_signal(current, &these, &info);
2306                        current->blocked = current->real_blocked;
2307                        siginitset(&current->real_blocked, 0);
2308                        recalc_sigpending();
2309                }
2310        }
2311        spin_unlock_irq(&current->sighand->siglock);
2312
2313        if (sig) {
2314                ret = sig;
2315                if (uinfo) {
2316                        if (copy_siginfo_to_user(uinfo, &info))
2317                                ret = -EFAULT;
2318                }
2319        } else {
2320                ret = -EAGAIN;
2321                if (timeout)
2322                        ret = -EINTR;
2323        }
2324
2325        return ret;
2326}
2327
2328SYSCALL_DEFINE2(kill, pid_t, pid, int, sig)
2329{
2330        struct siginfo info;
2331
2332        info.si_signo = sig;
2333        info.si_errno = 0;
2334        info.si_code = SI_USER;
2335        info.si_pid = task_tgid_vnr(current);
2336        info.si_uid = current_uid();
2337
2338        return kill_something_info(sig, &info, pid);
2339}
2340
2341static int
2342do_send_specific(pid_t tgid, pid_t pid, int sig, struct siginfo *info)
2343{
2344        struct task_struct *p;
2345        int error = -ESRCH;
2346
2347        rcu_read_lock();
2348        p = find_task_by_vpid(pid);
2349        if (p && (tgid <= 0 || task_tgid_vnr(p) == tgid)) {
2350                error = check_kill_permission(sig, info, p);
2351                /*
2352                 * The null signal is a permissions and process existence
2353                 * probe.  No signal is actually delivered.
2354                 */
2355                if (!error && sig) {
2356                        error = do_send_sig_info(sig, info, p, false);
2357                        /*
2358                         * If lock_task_sighand() failed we pretend the task
2359                         * dies after receiving the signal. The window is tiny,
2360                         * and the signal is private anyway.
2361                         */
2362                        if (unlikely(error == -ESRCH))
2363                                error = 0;
2364                }
2365        }
2366        rcu_read_unlock();
2367
2368        return error;
2369}
2370
2371static int do_tkill(pid_t tgid, pid_t pid, int sig)
2372{
2373        struct siginfo info;
2374
2375        info.si_signo = sig;
2376        info.si_errno = 0;
2377        info.si_code = SI_TKILL;
2378        info.si_pid = task_tgid_vnr(current);
2379        info.si_uid = current_uid();
2380
2381        return do_send_specific(tgid, pid, sig, &info);
2382}
2383
2384/**
2385 *  sys_tgkill - send signal to one specific thread
2386 *  @tgid: the thread group ID of the thread
2387 *  @pid: the PID of the thread
2388 *  @sig: signal to be sent
2389 *
2390 *  This syscall also checks the @tgid and returns -ESRCH even if the PID
2391 *  exists but it's not belonging to the target process anymore. This
2392 *  method solves the problem of threads exiting and PIDs getting reused.
2393 */
2394SYSCALL_DEFINE3(tgkill, pid_t, tgid, pid_t, pid, int, sig)
2395{
2396        /* This is only valid for single tasks */
2397        if (pid <= 0 || tgid <= 0)
2398                return -EINVAL;
2399
2400        return do_tkill(tgid, pid, sig);
2401}
2402
2403/*
2404 *  Send a signal to only one task, even if it's a CLONE_THREAD task.
2405 */
2406SYSCALL_DEFINE2(tkill, pid_t, pid, int, sig)
2407{
2408        /* This is only valid for single tasks */
2409        if (pid <= 0)
2410                return -EINVAL;
2411
2412        return do_tkill(0, pid, sig);
2413}
2414
2415SYSCALL_DEFINE3(rt_sigqueueinfo, pid_t, pid, int, sig,
2416                siginfo_t __user *, uinfo)
2417{
2418        siginfo_t info;
2419
2420        if (copy_from_user(&info, uinfo, sizeof(siginfo_t)))
2421                return -EFAULT;
2422
2423        /* Not even root can pretend to send signals from the kernel.
2424           Nor can they impersonate a kill(), which adds source info.  */
2425        if (info.si_code >= 0)
2426                return -EPERM;
2427        info.si_signo = sig;
2428
2429        /* POSIX.1b doesn't mention process groups.  */
2430        return kill_proc_info(sig, &info, pid);
2431}
2432
2433long do_rt_tgsigqueueinfo(pid_t tgid, pid_t pid, int sig, siginfo_t *info)
2434{
2435        /* This is only valid for single tasks */
2436        if (pid <= 0 || tgid <= 0)
2437                return -EINVAL;
2438
2439        /* Not even root can pretend to send signals from the kernel.
2440           Nor can they impersonate a kill(), which adds source info.  */
2441        if (info->si_code >= 0)
2442                return -EPERM;
2443        info->si_signo = sig;
2444
2445        return do_send_specific(tgid, pid, sig, info);
2446}
2447
2448SYSCALL_DEFINE4(rt_tgsigqueueinfo, pid_t, tgid, pid_t, pid, int, sig,
2449                siginfo_t __user *, uinfo)
2450{
2451        siginfo_t info;
2452
2453        if (copy_from_user(&info, uinfo, sizeof(siginfo_t)))
2454                return -EFAULT;
2455
2456        return do_rt_tgsigqueueinfo(tgid, pid, sig, &info);
2457}
2458
2459int do_sigaction(int sig, struct k_sigaction *act, struct k_sigaction *oact)
2460{
2461        struct task_struct *t = current;
2462        struct k_sigaction *k;
2463        sigset_t mask;
2464
2465        if (!valid_signal(sig) || sig < 1 || (act && sig_kernel_only(sig)))
2466                return -EINVAL;
2467
2468        k = &t->sighand->action[sig-1];
2469
2470        spin_lock_irq(&current->sighand->siglock);
2471        if (oact)
2472                *oact = *k;
2473
2474        if (act) {
2475                sigdelsetmask(&act->sa.sa_mask,
2476                              sigmask(SIGKILL) | sigmask(SIGSTOP));
2477                *k = *act;
2478                /*
2479                 * POSIX 3.3.1.3:
2480                 *  "Setting a signal action to SIG_IGN for a signal that is
2481                 *   pending shall cause the pending signal to be discarded,
2482                 *   whether or not it is blocked."
2483                 *
2484                 *  "Setting a signal action to SIG_DFL for a signal that is
2485                 *   pending and whose default action is to ignore the signal
2486                 *   (for example, SIGCHLD), shall cause the pending signal to
2487                 *   be discarded, whether or not it is blocked"
2488                 */
2489                if (sig_handler_ignored(sig_handler(t, sig), sig)) {
2490                        sigemptyset(&mask);
2491                        sigaddset(&mask, sig);
2492                        rm_from_queue_full(&mask, &t->signal->shared_pending);
2493                        do {
2494                                rm_from_queue_full(&mask, &t->pending);
2495                                t = next_thread(t);
2496                        } while (t != current);
2497                }
2498        }
2499
2500        spin_unlock_irq(&current->sighand->siglock);
2501        return 0;
2502}
2503
2504int 
2505do_sigaltstack (const stack_t __user *uss, stack_t __user *uoss, unsigned long sp)
2506{
2507        stack_t oss;
2508        int error;
2509
2510        oss.ss_sp = (void __user *) current->sas_ss_sp;
2511        oss.ss_size = current->sas_ss_size;
2512        oss.ss_flags = sas_ss_flags(sp);
2513
2514        if (uss) {
2515                void __user *ss_sp;
2516                size_t ss_size;
2517                int ss_flags;
2518
2519                error = -EFAULT;
2520                if (!access_ok(VERIFY_READ, uss, sizeof(*uss)))
2521                        goto out;
2522                error = __get_user(ss_sp, &uss->ss_sp) |
2523                        __get_user(ss_flags, &uss->ss_flags) |
2524                        __get_user(ss_size, &uss->ss_size);
2525                if (error)
2526                        goto out;
2527
2528                error = -EPERM;
2529                if (on_sig_stack(sp))
2530                        goto out;
2531
2532                error = -EINVAL;
2533                /*
2534                 *
2535                 * Note - this code used to test ss_flags incorrectly
2536                 *        old code may have been written using ss_flags==0
2537                 *        to mean ss_flags==SS_ONSTACK (as this was the only
2538                 *        way that worked) - this fix preserves that older
2539                 *        mechanism
2540                 */
2541                if (ss_flags != SS_DISABLE && ss_flags != SS_ONSTACK && ss_flags != 0)
2542                        goto out;
2543
2544                if (ss_flags == SS_DISABLE) {
2545                        ss_size = 0;
2546                        ss_sp = NULL;
2547                } else {
2548                        error = -ENOMEM;
2549                        if (ss_size < MINSIGSTKSZ)
2550                                goto out;
2551                }
2552
2553                current->sas_ss_sp = (unsigned long) ss_sp;
2554                current->sas_ss_size = ss_size;
2555        }
2556
2557        error = 0;
2558        if (uoss) {
2559                error = -EFAULT;
2560                if (!access_ok(VERIFY_WRITE, uoss, sizeof(*uoss)))
2561                        goto out;
2562                error = __put_user(oss.ss_sp, &uoss->ss_sp) |
2563                        __put_user(oss.ss_size, &uoss->ss_size) |
2564                        __put_user(oss.ss_flags, &uoss->ss_flags);
2565        }
2566
2567out:
2568        return error;
2569}
2570
2571#ifdef __ARCH_WANT_SYS_SIGPENDING
2572
2573SYSCALL_DEFINE1(sigpending, old_sigset_t __user *, set)
2574{
2575        return do_sigpending(set, sizeof(*set));
2576}
2577
2578#endif
2579
2580#ifdef __ARCH_WANT_SYS_SIGPROCMASK
2581/* Some platforms have their own version with special arguments others
2582   support only sys_rt_sigprocmask.  */
2583
2584SYSCALL_DEFINE3(sigprocmask, int, how, old_sigset_t __user *, set,
2585                old_sigset_t __user *, oset)
2586{
2587        int error;
2588        old_sigset_t old_set, new_set;
2589
2590        if (set) {
2591                error = -EFAULT;
2592                if (copy_from_user(&new_set, set, sizeof(*set)))
2593                        goto out;
2594                new_set &= ~(sigmask(SIGKILL) | sigmask(SIGSTOP));
2595
2596                spin_lock_irq(&current->sighand->siglock);
2597                old_set = current->blocked.sig[0];
2598
2599                error = 0;
2600                switch (how) {
2601                default:
2602                        error = -EINVAL;
2603                        break;
2604                case SIG_BLOCK:
2605                        sigaddsetmask(&current->blocked, new_set);
2606                        break;
2607                case SIG_UNBLOCK:
2608                        sigdelsetmask(&current->blocked, new_set);
2609                        break;
2610                case SIG_SETMASK:
2611                        current->blocked.sig[0] = new_set;
2612                        break;
2613                }
2614
2615                recalc_sigpending();
2616                spin_unlock_irq(&current->sighand->siglock);
2617                if (error)
2618                        goto out;
2619                if (oset)
2620                        goto set_old;
2621        } else if (oset) {
2622                old_set = current->blocked.sig[0];
2623        set_old:
2624                error = -EFAULT;
2625                if (copy_to_user(oset, &old_set, sizeof(*oset)))
2626                        goto out;
2627        }
2628        error = 0;
2629out:
2630        return error;
2631}
2632#endif /* __ARCH_WANT_SYS_SIGPROCMASK */
2633
2634#ifdef __ARCH_WANT_SYS_RT_SIGACTION
2635SYSCALL_DEFINE4(rt_sigaction, int, sig,
2636                const struct sigaction __user *, act,
2637                struct sigaction __user *, oact,
2638                size_t, sigsetsize)
2639{
2640        struct k_sigaction new_sa, old_sa;
2641        int ret = -EINVAL;
2642
2643        /* XXX: Don't preclude handling different sized sigset_t's.  */
2644        if (sigsetsize != sizeof(sigset_t))
2645                goto out;
2646
2647        if (act) {
2648                if (copy_from_user(&new_sa.sa, act, sizeof(new_sa.sa)))
2649                        return -EFAULT;
2650        }
2651
2652        ret = do_sigaction(sig, act ? &new_sa : NULL, oact ? &old_sa : NULL);
2653
2654        if (!ret && oact) {
2655                if (copy_to_user(oact, &old_sa.sa, sizeof(old_sa.sa)))
2656                        return -EFAULT;
2657        }
2658out:
2659        return ret;
2660}
2661#endif /* __ARCH_WANT_SYS_RT_SIGACTION */
2662
2663#ifdef __ARCH_WANT_SYS_SGETMASK
2664
2665/*
2666 * For backwards compatibility.  Functionality superseded by sigprocmask.
2667 */
2668SYSCALL_DEFINE0(sgetmask)
2669{
2670        /* SMP safe */
2671        return current->blocked.sig[0];
2672}
2673
2674SYSCALL_DEFINE1(ssetmask, int, newmask)
2675{
2676        int old;
2677
2678        spin_lock_irq(&current->sighand->siglock);
2679        old = current->blocked.sig[0];
2680
2681        siginitset(&current->blocked, newmask & ~(sigmask(SIGKILL)|
2682                                                  sigmask(SIGSTOP)));
2683        recalc_sigpending();
2684        spin_unlock_irq(&current->sighand->siglock);
2685
2686        return old;
2687}
2688#endif /* __ARCH_WANT_SGETMASK */
2689
2690#ifdef __ARCH_WANT_SYS_SIGNAL
2691/*
2692 * For backwards compatibility.  Functionality superseded by sigaction.
2693 */
2694SYSCALL_DEFINE2(signal, int, sig, __sighandler_t, handler)
2695{
2696        struct k_sigaction new_sa, old_sa;
2697        int ret;
2698
2699        new_sa.sa.sa_handler = handler;
2700        new_sa.sa.sa_flags = SA_ONESHOT | SA_NOMASK;
2701        sigemptyset(&new_sa.sa.sa_mask);
2702
2703        ret = do_sigaction(sig, &new_sa, &old_sa);
2704
2705        return ret ? ret : (unsigned long)old_sa.sa.sa_handler;
2706}
2707#endif /* __ARCH_WANT_SYS_SIGNAL */
2708
2709#ifdef __ARCH_WANT_SYS_PAUSE
2710
2711SYSCALL_DEFINE0(pause)
2712{
2713        current->state = TASK_INTERRUPTIBLE;
2714        schedule();
2715        return -ERESTARTNOHAND;
2716}
2717
2718#endif
2719
2720#ifdef __ARCH_WANT_SYS_RT_SIGSUSPEND
2721SYSCALL_DEFINE2(rt_sigsuspend, sigset_t __user *, unewset, size_t, sigsetsize)
2722{
2723        sigset_t newset;
2724
2725        /* XXX: Don't preclude handling different sized sigset_t's.  */
2726        if (sigsetsize != sizeof(sigset_t))
2727                return -EINVAL;
2728
2729        if (copy_from_user(&newset, unewset, sizeof(newset)))
2730                return -EFAULT;
2731        sigdelsetmask(&newset, sigmask(SIGKILL)|sigmask(SIGSTOP));
2732
2733        spin_lock_irq(&current->sighand->siglock);
2734        current->saved_sigmask = current->blocked;
2735        current->blocked = newset;
2736        recalc_sigpending();
2737        spin_unlock_irq(&current->sighand->siglock);
2738
2739        current->state = TASK_INTERRUPTIBLE;
2740        schedule();
2741        set_restore_sigmask();
2742        return -ERESTARTNOHAND;
2743}
2744#endif /* __ARCH_WANT_SYS_RT_SIGSUSPEND */
2745
2746__attribute__((weak)) const char *arch_vma_name(struct vm_area_struct *vma)
2747{
2748        return NULL;
2749}
2750
2751void __init signals_init(void)
2752{
2753        sigqueue_cachep = KMEM_CACHE(sigqueue, SLAB_PANIC);
2754}
2755
2756#ifdef CONFIG_KGDB_KDB
2757#include <linux/kdb.h>
2758/*
2759 * kdb_send_sig_info - Allows kdb to send signals without exposing
2760 * signal internals.  This function checks if the required locks are
2761 * available before calling the main signal code, to avoid kdb
2762 * deadlocks.
2763 */
2764void
2765kdb_send_sig_info(struct task_struct *t, struct siginfo *info)
2766{
2767        static struct task_struct *kdb_prev_t;
2768        int sig, new_t;
2769        if (!spin_trylock(&t->sighand->siglock)) {
2770                kdb_printf("Can't do kill command now.\n"
2771                           "The sigmask lock is held somewhere else in "
2772                           "kernel, try again later\n");
2773                return;
2774        }
2775        spin_unlock(&t->sighand->siglock);
2776        new_t = kdb_prev_t != t;
2777        kdb_prev_t = t;
2778        if (t->state != TASK_RUNNING && new_t) {
2779                kdb_printf("Process is not RUNNING, sending a signal from "
2780                           "kdb risks deadlock\n"
2781                           "on the run queue locks. "
2782                           "The signal has _not_ been sent.\n"
2783                           "Reissue the kill command if you want to risk "
2784                           "the deadlock.\n");
2785                return;
2786        }
2787        sig = info->si_signo;
2788        if (send_sig_info(sig, info, t))
2789                kdb_printf("Fail to deliver Signal %d to process %d.\n",
2790                           sig, t->pid);
2791        else
2792                kdb_printf("Signal %d is sent to process %d.\n", sig, t->pid);
2793}
2794#endif  /* CONFIG_KGDB_KDB */
2795