]> asedeno.scripts.mit.edu Git - linux.git/blob - kernel/signal.c
HID: wacom: wacom_wac_collection() is local to wacom_wac.c
[linux.git] / kernel / signal.c
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/export.h>
15 #include <linux/init.h>
16 #include <linux/sched/mm.h>
17 #include <linux/sched/user.h>
18 #include <linux/sched/debug.h>
19 #include <linux/sched/task.h>
20 #include <linux/sched/task_stack.h>
21 #include <linux/sched/cputime.h>
22 #include <linux/fs.h>
23 #include <linux/tty.h>
24 #include <linux/binfmts.h>
25 #include <linux/coredump.h>
26 #include <linux/security.h>
27 #include <linux/syscalls.h>
28 #include <linux/ptrace.h>
29 #include <linux/signal.h>
30 #include <linux/signalfd.h>
31 #include <linux/ratelimit.h>
32 #include <linux/tracehook.h>
33 #include <linux/capability.h>
34 #include <linux/freezer.h>
35 #include <linux/pid_namespace.h>
36 #include <linux/nsproxy.h>
37 #include <linux/user_namespace.h>
38 #include <linux/uprobes.h>
39 #include <linux/compat.h>
40 #include <linux/cn_proc.h>
41 #include <linux/compiler.h>
42 #include <linux/posix-timers.h>
43
44 #define CREATE_TRACE_POINTS
45 #include <trace/events/signal.h>
46
47 #include <asm/param.h>
48 #include <linux/uaccess.h>
49 #include <asm/unistd.h>
50 #include <asm/siginfo.h>
51 #include <asm/cacheflush.h>
52 #include "audit.h"      /* audit_signal_info() */
53
54 /*
55  * SLAB caches for signal bits.
56  */
57
58 static struct kmem_cache *sigqueue_cachep;
59
60 int print_fatal_signals __read_mostly;
61
62 static void __user *sig_handler(struct task_struct *t, int sig)
63 {
64         return t->sighand->action[sig - 1].sa.sa_handler;
65 }
66
67 static int sig_handler_ignored(void __user *handler, int sig)
68 {
69         /* Is it explicitly or implicitly ignored? */
70         return handler == SIG_IGN ||
71                 (handler == SIG_DFL && sig_kernel_ignore(sig));
72 }
73
74 static int sig_task_ignored(struct task_struct *t, int sig, bool force)
75 {
76         void __user *handler;
77
78         handler = sig_handler(t, sig);
79
80         if (unlikely(t->signal->flags & SIGNAL_UNKILLABLE) &&
81             handler == SIG_DFL && !(force && sig_kernel_only(sig)))
82                 return 1;
83
84         return sig_handler_ignored(handler, sig);
85 }
86
87 static int sig_ignored(struct task_struct *t, int sig, bool force)
88 {
89         /*
90          * Blocked signals are never ignored, since the
91          * signal handler may change by the time it is
92          * unblocked.
93          */
94         if (sigismember(&t->blocked, sig) || sigismember(&t->real_blocked, sig))
95                 return 0;
96
97         /*
98          * Tracers may want to know about even ignored signal unless it
99          * is SIGKILL which can't be reported anyway but can be ignored
100          * by SIGNAL_UNKILLABLE task.
101          */
102         if (t->ptrace && sig != SIGKILL)
103                 return 0;
104
105         return sig_task_ignored(t, sig, force);
106 }
107
108 /*
109  * Re-calculate pending state from the set of locally pending
110  * signals, globally pending signals, and blocked signals.
111  */
112 static inline int has_pending_signals(sigset_t *signal, sigset_t *blocked)
113 {
114         unsigned long ready;
115         long i;
116
117         switch (_NSIG_WORDS) {
118         default:
119                 for (i = _NSIG_WORDS, ready = 0; --i >= 0 ;)
120                         ready |= signal->sig[i] &~ blocked->sig[i];
121                 break;
122
123         case 4: ready  = signal->sig[3] &~ blocked->sig[3];
124                 ready |= signal->sig[2] &~ blocked->sig[2];
125                 ready |= signal->sig[1] &~ blocked->sig[1];
126                 ready |= signal->sig[0] &~ blocked->sig[0];
127                 break;
128
129         case 2: ready  = signal->sig[1] &~ blocked->sig[1];
130                 ready |= signal->sig[0] &~ blocked->sig[0];
131                 break;
132
133         case 1: ready  = signal->sig[0] &~ blocked->sig[0];
134         }
135         return ready != 0;
136 }
137
138 #define PENDING(p,b) has_pending_signals(&(p)->signal, (b))
139
140 static int recalc_sigpending_tsk(struct task_struct *t)
141 {
142         if ((t->jobctl & JOBCTL_PENDING_MASK) ||
143             PENDING(&t->pending, &t->blocked) ||
144             PENDING(&t->signal->shared_pending, &t->blocked)) {
145                 set_tsk_thread_flag(t, TIF_SIGPENDING);
146                 return 1;
147         }
148         /*
149          * We must never clear the flag in another thread, or in current
150          * when it's possible the current syscall is returning -ERESTART*.
151          * So we don't clear it here, and only callers who know they should do.
152          */
153         return 0;
154 }
155
156 /*
157  * After recalculating TIF_SIGPENDING, we need to make sure the task wakes up.
158  * This is superfluous when called on current, the wakeup is a harmless no-op.
159  */
160 void recalc_sigpending_and_wake(struct task_struct *t)
161 {
162         if (recalc_sigpending_tsk(t))
163                 signal_wake_up(t, 0);
164 }
165
166 void recalc_sigpending(void)
167 {
168         if (!recalc_sigpending_tsk(current) && !freezing(current))
169                 clear_thread_flag(TIF_SIGPENDING);
170
171 }
172
173 /* Given the mask, find the first available signal that should be serviced. */
174
175 #define SYNCHRONOUS_MASK \
176         (sigmask(SIGSEGV) | sigmask(SIGBUS) | sigmask(SIGILL) | \
177          sigmask(SIGTRAP) | sigmask(SIGFPE) | sigmask(SIGSYS))
178
179 int next_signal(struct sigpending *pending, sigset_t *mask)
180 {
181         unsigned long i, *s, *m, x;
182         int sig = 0;
183
184         s = pending->signal.sig;
185         m = mask->sig;
186
187         /*
188          * Handle the first word specially: it contains the
189          * synchronous signals that need to be dequeued first.
190          */
191         x = *s &~ *m;
192         if (x) {
193                 if (x & SYNCHRONOUS_MASK)
194                         x &= SYNCHRONOUS_MASK;
195                 sig = ffz(~x) + 1;
196                 return sig;
197         }
198
199         switch (_NSIG_WORDS) {
200         default:
201                 for (i = 1; i < _NSIG_WORDS; ++i) {
202                         x = *++s &~ *++m;
203                         if (!x)
204                                 continue;
205                         sig = ffz(~x) + i*_NSIG_BPW + 1;
206                         break;
207                 }
208                 break;
209
210         case 2:
211                 x = s[1] &~ m[1];
212                 if (!x)
213                         break;
214                 sig = ffz(~x) + _NSIG_BPW + 1;
215                 break;
216
217         case 1:
218                 /* Nothing to do */
219                 break;
220         }
221
222         return sig;
223 }
224
225 static inline void print_dropped_signal(int sig)
226 {
227         static DEFINE_RATELIMIT_STATE(ratelimit_state, 5 * HZ, 10);
228
229         if (!print_fatal_signals)
230                 return;
231
232         if (!__ratelimit(&ratelimit_state))
233                 return;
234
235         pr_info("%s/%d: reached RLIMIT_SIGPENDING, dropped signal %d\n",
236                                 current->comm, current->pid, sig);
237 }
238
239 /**
240  * task_set_jobctl_pending - set jobctl pending bits
241  * @task: target task
242  * @mask: pending bits to set
243  *
244  * Clear @mask from @task->jobctl.  @mask must be subset of
245  * %JOBCTL_PENDING_MASK | %JOBCTL_STOP_CONSUME | %JOBCTL_STOP_SIGMASK |
246  * %JOBCTL_TRAPPING.  If stop signo is being set, the existing signo is
247  * cleared.  If @task is already being killed or exiting, this function
248  * becomes noop.
249  *
250  * CONTEXT:
251  * Must be called with @task->sighand->siglock held.
252  *
253  * RETURNS:
254  * %true if @mask is set, %false if made noop because @task was dying.
255  */
256 bool task_set_jobctl_pending(struct task_struct *task, unsigned long mask)
257 {
258         BUG_ON(mask & ~(JOBCTL_PENDING_MASK | JOBCTL_STOP_CONSUME |
259                         JOBCTL_STOP_SIGMASK | JOBCTL_TRAPPING));
260         BUG_ON((mask & JOBCTL_TRAPPING) && !(mask & JOBCTL_PENDING_MASK));
261
262         if (unlikely(fatal_signal_pending(task) || (task->flags & PF_EXITING)))
263                 return false;
264
265         if (mask & JOBCTL_STOP_SIGMASK)
266                 task->jobctl &= ~JOBCTL_STOP_SIGMASK;
267
268         task->jobctl |= mask;
269         return true;
270 }
271
272 /**
273  * task_clear_jobctl_trapping - clear jobctl trapping bit
274  * @task: target task
275  *
276  * If JOBCTL_TRAPPING is set, a ptracer is waiting for us to enter TRACED.
277  * Clear it and wake up the ptracer.  Note that we don't need any further
278  * locking.  @task->siglock guarantees that @task->parent points to the
279  * ptracer.
280  *
281  * CONTEXT:
282  * Must be called with @task->sighand->siglock held.
283  */
284 void task_clear_jobctl_trapping(struct task_struct *task)
285 {
286         if (unlikely(task->jobctl & JOBCTL_TRAPPING)) {
287                 task->jobctl &= ~JOBCTL_TRAPPING;
288                 smp_mb();       /* advised by wake_up_bit() */
289                 wake_up_bit(&task->jobctl, JOBCTL_TRAPPING_BIT);
290         }
291 }
292
293 /**
294  * task_clear_jobctl_pending - clear jobctl pending bits
295  * @task: target task
296  * @mask: pending bits to clear
297  *
298  * Clear @mask from @task->jobctl.  @mask must be subset of
299  * %JOBCTL_PENDING_MASK.  If %JOBCTL_STOP_PENDING is being cleared, other
300  * STOP bits are cleared together.
301  *
302  * If clearing of @mask leaves no stop or trap pending, this function calls
303  * task_clear_jobctl_trapping().
304  *
305  * CONTEXT:
306  * Must be called with @task->sighand->siglock held.
307  */
308 void task_clear_jobctl_pending(struct task_struct *task, unsigned long mask)
309 {
310         BUG_ON(mask & ~JOBCTL_PENDING_MASK);
311
312         if (mask & JOBCTL_STOP_PENDING)
313                 mask |= JOBCTL_STOP_CONSUME | JOBCTL_STOP_DEQUEUED;
314
315         task->jobctl &= ~mask;
316
317         if (!(task->jobctl & JOBCTL_PENDING_MASK))
318                 task_clear_jobctl_trapping(task);
319 }
320
321 /**
322  * task_participate_group_stop - participate in a group stop
323  * @task: task participating in a group stop
324  *
325  * @task has %JOBCTL_STOP_PENDING set and is participating in a group stop.
326  * Group stop states are cleared and the group stop count is consumed if
327  * %JOBCTL_STOP_CONSUME was set.  If the consumption completes the group
328  * stop, the appropriate %SIGNAL_* flags are set.
329  *
330  * CONTEXT:
331  * Must be called with @task->sighand->siglock held.
332  *
333  * RETURNS:
334  * %true if group stop completion should be notified to the parent, %false
335  * otherwise.
336  */
337 static bool task_participate_group_stop(struct task_struct *task)
338 {
339         struct signal_struct *sig = task->signal;
340         bool consume = task->jobctl & JOBCTL_STOP_CONSUME;
341
342         WARN_ON_ONCE(!(task->jobctl & JOBCTL_STOP_PENDING));
343
344         task_clear_jobctl_pending(task, JOBCTL_STOP_PENDING);
345
346         if (!consume)
347                 return false;
348
349         if (!WARN_ON_ONCE(sig->group_stop_count == 0))
350                 sig->group_stop_count--;
351
352         /*
353          * Tell the caller to notify completion iff we are entering into a
354          * fresh group stop.  Read comment in do_signal_stop() for details.
355          */
356         if (!sig->group_stop_count && !(sig->flags & SIGNAL_STOP_STOPPED)) {
357                 signal_set_stop_flags(sig, SIGNAL_STOP_STOPPED);
358                 return true;
359         }
360         return false;
361 }
362
363 /*
364  * allocate a new signal queue record
365  * - this may be called without locks if and only if t == current, otherwise an
366  *   appropriate lock must be held to stop the target task from exiting
367  */
368 static struct sigqueue *
369 __sigqueue_alloc(int sig, struct task_struct *t, gfp_t flags, int override_rlimit)
370 {
371         struct sigqueue *q = NULL;
372         struct user_struct *user;
373
374         /*
375          * Protect access to @t credentials. This can go away when all
376          * callers hold rcu read lock.
377          */
378         rcu_read_lock();
379         user = get_uid(__task_cred(t)->user);
380         atomic_inc(&user->sigpending);
381         rcu_read_unlock();
382
383         if (override_rlimit ||
384             atomic_read(&user->sigpending) <=
385                         task_rlimit(t, RLIMIT_SIGPENDING)) {
386                 q = kmem_cache_alloc(sigqueue_cachep, flags);
387         } else {
388                 print_dropped_signal(sig);
389         }
390
391         if (unlikely(q == NULL)) {
392                 atomic_dec(&user->sigpending);
393                 free_uid(user);
394         } else {
395                 INIT_LIST_HEAD(&q->list);
396                 q->flags = 0;
397                 q->user = user;
398         }
399
400         return q;
401 }
402
403 static void __sigqueue_free(struct sigqueue *q)
404 {
405         if (q->flags & SIGQUEUE_PREALLOC)
406                 return;
407         atomic_dec(&q->user->sigpending);
408         free_uid(q->user);
409         kmem_cache_free(sigqueue_cachep, q);
410 }
411
412 void flush_sigqueue(struct sigpending *queue)
413 {
414         struct sigqueue *q;
415
416         sigemptyset(&queue->signal);
417         while (!list_empty(&queue->list)) {
418                 q = list_entry(queue->list.next, struct sigqueue , list);
419                 list_del_init(&q->list);
420                 __sigqueue_free(q);
421         }
422 }
423
424 /*
425  * Flush all pending signals for this kthread.
426  */
427 void flush_signals(struct task_struct *t)
428 {
429         unsigned long flags;
430
431         spin_lock_irqsave(&t->sighand->siglock, flags);
432         clear_tsk_thread_flag(t, TIF_SIGPENDING);
433         flush_sigqueue(&t->pending);
434         flush_sigqueue(&t->signal->shared_pending);
435         spin_unlock_irqrestore(&t->sighand->siglock, flags);
436 }
437
438 #ifdef CONFIG_POSIX_TIMERS
439 static void __flush_itimer_signals(struct sigpending *pending)
440 {
441         sigset_t signal, retain;
442         struct sigqueue *q, *n;
443
444         signal = pending->signal;
445         sigemptyset(&retain);
446
447         list_for_each_entry_safe(q, n, &pending->list, list) {
448                 int sig = q->info.si_signo;
449
450                 if (likely(q->info.si_code != SI_TIMER)) {
451                         sigaddset(&retain, sig);
452                 } else {
453                         sigdelset(&signal, sig);
454                         list_del_init(&q->list);
455                         __sigqueue_free(q);
456                 }
457         }
458
459         sigorsets(&pending->signal, &signal, &retain);
460 }
461
462 void flush_itimer_signals(void)
463 {
464         struct task_struct *tsk = current;
465         unsigned long flags;
466
467         spin_lock_irqsave(&tsk->sighand->siglock, flags);
468         __flush_itimer_signals(&tsk->pending);
469         __flush_itimer_signals(&tsk->signal->shared_pending);
470         spin_unlock_irqrestore(&tsk->sighand->siglock, flags);
471 }
472 #endif
473
474 void ignore_signals(struct task_struct *t)
475 {
476         int i;
477
478         for (i = 0; i < _NSIG; ++i)
479                 t->sighand->action[i].sa.sa_handler = SIG_IGN;
480
481         flush_signals(t);
482 }
483
484 /*
485  * Flush all handlers for a task.
486  */
487
488 void
489 flush_signal_handlers(struct task_struct *t, int force_default)
490 {
491         int i;
492         struct k_sigaction *ka = &t->sighand->action[0];
493         for (i = _NSIG ; i != 0 ; i--) {
494                 if (force_default || ka->sa.sa_handler != SIG_IGN)
495                         ka->sa.sa_handler = SIG_DFL;
496                 ka->sa.sa_flags = 0;
497 #ifdef __ARCH_HAS_SA_RESTORER
498                 ka->sa.sa_restorer = NULL;
499 #endif
500                 sigemptyset(&ka->sa.sa_mask);
501                 ka++;
502         }
503 }
504
505 int unhandled_signal(struct task_struct *tsk, int sig)
506 {
507         void __user *handler = tsk->sighand->action[sig-1].sa.sa_handler;
508         if (is_global_init(tsk))
509                 return 1;
510         if (handler != SIG_IGN && handler != SIG_DFL)
511                 return 0;
512         /* if ptraced, let the tracer determine */
513         return !tsk->ptrace;
514 }
515
516 static void collect_signal(int sig, struct sigpending *list, siginfo_t *info,
517                            bool *resched_timer)
518 {
519         struct sigqueue *q, *first = NULL;
520
521         /*
522          * Collect the siginfo appropriate to this signal.  Check if
523          * there is another siginfo for the same signal.
524         */
525         list_for_each_entry(q, &list->list, list) {
526                 if (q->info.si_signo == sig) {
527                         if (first)
528                                 goto still_pending;
529                         first = q;
530                 }
531         }
532
533         sigdelset(&list->signal, sig);
534
535         if (first) {
536 still_pending:
537                 list_del_init(&first->list);
538                 copy_siginfo(info, &first->info);
539
540                 *resched_timer =
541                         (first->flags & SIGQUEUE_PREALLOC) &&
542                         (info->si_code == SI_TIMER) &&
543                         (info->si_sys_private);
544
545                 __sigqueue_free(first);
546         } else {
547                 /*
548                  * Ok, it wasn't in the queue.  This must be
549                  * a fast-pathed signal or we must have been
550                  * out of queue space.  So zero out the info.
551                  */
552                 clear_siginfo(info);
553                 info->si_signo = sig;
554                 info->si_errno = 0;
555                 info->si_code = SI_USER;
556                 info->si_pid = 0;
557                 info->si_uid = 0;
558         }
559 }
560
561 static int __dequeue_signal(struct sigpending *pending, sigset_t *mask,
562                         siginfo_t *info, bool *resched_timer)
563 {
564         int sig = next_signal(pending, mask);
565
566         if (sig)
567                 collect_signal(sig, pending, info, resched_timer);
568         return sig;
569 }
570
571 /*
572  * Dequeue a signal and return the element to the caller, which is
573  * expected to free it.
574  *
575  * All callers have to hold the siglock.
576  */
577 int dequeue_signal(struct task_struct *tsk, sigset_t *mask, siginfo_t *info)
578 {
579         bool resched_timer = false;
580         int signr;
581
582         /* We only dequeue private signals from ourselves, we don't let
583          * signalfd steal them
584          */
585         signr = __dequeue_signal(&tsk->pending, mask, info, &resched_timer);
586         if (!signr) {
587                 signr = __dequeue_signal(&tsk->signal->shared_pending,
588                                          mask, info, &resched_timer);
589 #ifdef CONFIG_POSIX_TIMERS
590                 /*
591                  * itimer signal ?
592                  *
593                  * itimers are process shared and we restart periodic
594                  * itimers in the signal delivery path to prevent DoS
595                  * attacks in the high resolution timer case. This is
596                  * compliant with the old way of self-restarting
597                  * itimers, as the SIGALRM is a legacy signal and only
598                  * queued once. Changing the restart behaviour to
599                  * restart the timer in the signal dequeue path is
600                  * reducing the timer noise on heavy loaded !highres
601                  * systems too.
602                  */
603                 if (unlikely(signr == SIGALRM)) {
604                         struct hrtimer *tmr = &tsk->signal->real_timer;
605
606                         if (!hrtimer_is_queued(tmr) &&
607                             tsk->signal->it_real_incr != 0) {
608                                 hrtimer_forward(tmr, tmr->base->get_time(),
609                                                 tsk->signal->it_real_incr);
610                                 hrtimer_restart(tmr);
611                         }
612                 }
613 #endif
614         }
615
616         recalc_sigpending();
617         if (!signr)
618                 return 0;
619
620         if (unlikely(sig_kernel_stop(signr))) {
621                 /*
622                  * Set a marker that we have dequeued a stop signal.  Our
623                  * caller might release the siglock and then the pending
624                  * stop signal it is about to process is no longer in the
625                  * pending bitmasks, but must still be cleared by a SIGCONT
626                  * (and overruled by a SIGKILL).  So those cases clear this
627                  * shared flag after we've set it.  Note that this flag may
628                  * remain set after the signal we return is ignored or
629                  * handled.  That doesn't matter because its only purpose
630                  * is to alert stop-signal processing code when another
631                  * processor has come along and cleared the flag.
632                  */
633                 current->jobctl |= JOBCTL_STOP_DEQUEUED;
634         }
635 #ifdef CONFIG_POSIX_TIMERS
636         if (resched_timer) {
637                 /*
638                  * Release the siglock to ensure proper locking order
639                  * of timer locks outside of siglocks.  Note, we leave
640                  * irqs disabled here, since the posix-timers code is
641                  * about to disable them again anyway.
642                  */
643                 spin_unlock(&tsk->sighand->siglock);
644                 posixtimer_rearm(info);
645                 spin_lock(&tsk->sighand->siglock);
646
647                 /* Don't expose the si_sys_private value to userspace */
648                 info->si_sys_private = 0;
649         }
650 #endif
651         return signr;
652 }
653
654 /*
655  * Tell a process that it has a new active signal..
656  *
657  * NOTE! we rely on the previous spin_lock to
658  * lock interrupts for us! We can only be called with
659  * "siglock" held, and the local interrupt must
660  * have been disabled when that got acquired!
661  *
662  * No need to set need_resched since signal event passing
663  * goes through ->blocked
664  */
665 void signal_wake_up_state(struct task_struct *t, unsigned int state)
666 {
667         set_tsk_thread_flag(t, TIF_SIGPENDING);
668         /*
669          * TASK_WAKEKILL also means wake it up in the stopped/traced/killable
670          * case. We don't check t->state here because there is a race with it
671          * executing another processor and just now entering stopped state.
672          * By using wake_up_state, we ensure the process will wake up and
673          * handle its death signal.
674          */
675         if (!wake_up_state(t, state | TASK_INTERRUPTIBLE))
676                 kick_process(t);
677 }
678
679 /*
680  * Remove signals in mask from the pending set and queue.
681  * Returns 1 if any signals were found.
682  *
683  * All callers must be holding the siglock.
684  */
685 static int flush_sigqueue_mask(sigset_t *mask, struct sigpending *s)
686 {
687         struct sigqueue *q, *n;
688         sigset_t m;
689
690         sigandsets(&m, mask, &s->signal);
691         if (sigisemptyset(&m))
692                 return 0;
693
694         sigandnsets(&s->signal, &s->signal, mask);
695         list_for_each_entry_safe(q, n, &s->list, list) {
696                 if (sigismember(mask, q->info.si_signo)) {
697                         list_del_init(&q->list);
698                         __sigqueue_free(q);
699                 }
700         }
701         return 1;
702 }
703
704 static inline int is_si_special(const struct siginfo *info)
705 {
706         return info <= SEND_SIG_FORCED;
707 }
708
709 static inline bool si_fromuser(const struct siginfo *info)
710 {
711         return info == SEND_SIG_NOINFO ||
712                 (!is_si_special(info) && SI_FROMUSER(info));
713 }
714
715 /*
716  * called with RCU read lock from check_kill_permission()
717  */
718 static int kill_ok_by_cred(struct task_struct *t)
719 {
720         const struct cred *cred = current_cred();
721         const struct cred *tcred = __task_cred(t);
722
723         if (uid_eq(cred->euid, tcred->suid) ||
724             uid_eq(cred->euid, tcred->uid)  ||
725             uid_eq(cred->uid,  tcred->suid) ||
726             uid_eq(cred->uid,  tcred->uid))
727                 return 1;
728
729         if (ns_capable(tcred->user_ns, CAP_KILL))
730                 return 1;
731
732         return 0;
733 }
734
735 /*
736  * Bad permissions for sending the signal
737  * - the caller must hold the RCU read lock
738  */
739 static int check_kill_permission(int sig, struct siginfo *info,
740                                  struct task_struct *t)
741 {
742         struct pid *sid;
743         int error;
744
745         if (!valid_signal(sig))
746                 return -EINVAL;
747
748         if (!si_fromuser(info))
749                 return 0;
750
751         error = audit_signal_info(sig, t); /* Let audit system see the signal */
752         if (error)
753                 return error;
754
755         if (!same_thread_group(current, t) &&
756             !kill_ok_by_cred(t)) {
757                 switch (sig) {
758                 case SIGCONT:
759                         sid = task_session(t);
760                         /*
761                          * We don't return the error if sid == NULL. The
762                          * task was unhashed, the caller must notice this.
763                          */
764                         if (!sid || sid == task_session(current))
765                                 break;
766                 default:
767                         return -EPERM;
768                 }
769         }
770
771         return security_task_kill(t, info, sig, 0);
772 }
773
774 /**
775  * ptrace_trap_notify - schedule trap to notify ptracer
776  * @t: tracee wanting to notify tracer
777  *
778  * This function schedules sticky ptrace trap which is cleared on the next
779  * TRAP_STOP to notify ptracer of an event.  @t must have been seized by
780  * ptracer.
781  *
782  * If @t is running, STOP trap will be taken.  If trapped for STOP and
783  * ptracer is listening for events, tracee is woken up so that it can
784  * re-trap for the new event.  If trapped otherwise, STOP trap will be
785  * eventually taken without returning to userland after the existing traps
786  * are finished by PTRACE_CONT.
787  *
788  * CONTEXT:
789  * Must be called with @task->sighand->siglock held.
790  */
791 static void ptrace_trap_notify(struct task_struct *t)
792 {
793         WARN_ON_ONCE(!(t->ptrace & PT_SEIZED));
794         assert_spin_locked(&t->sighand->siglock);
795
796         task_set_jobctl_pending(t, JOBCTL_TRAP_NOTIFY);
797         ptrace_signal_wake_up(t, t->jobctl & JOBCTL_LISTENING);
798 }
799
800 /*
801  * Handle magic process-wide effects of stop/continue signals. Unlike
802  * the signal actions, these happen immediately at signal-generation
803  * time regardless of blocking, ignoring, or handling.  This does the
804  * actual continuing for SIGCONT, but not the actual stopping for stop
805  * signals. The process stop is done as a signal action for SIG_DFL.
806  *
807  * Returns true if the signal should be actually delivered, otherwise
808  * it should be dropped.
809  */
810 static bool prepare_signal(int sig, struct task_struct *p, bool force)
811 {
812         struct signal_struct *signal = p->signal;
813         struct task_struct *t;
814         sigset_t flush;
815
816         if (signal->flags & (SIGNAL_GROUP_EXIT | SIGNAL_GROUP_COREDUMP)) {
817                 if (!(signal->flags & SIGNAL_GROUP_EXIT))
818                         return sig == SIGKILL;
819                 /*
820                  * The process is in the middle of dying, nothing to do.
821                  */
822         } else if (sig_kernel_stop(sig)) {
823                 /*
824                  * This is a stop signal.  Remove SIGCONT from all queues.
825                  */
826                 siginitset(&flush, sigmask(SIGCONT));
827                 flush_sigqueue_mask(&flush, &signal->shared_pending);
828                 for_each_thread(p, t)
829                         flush_sigqueue_mask(&flush, &t->pending);
830         } else if (sig == SIGCONT) {
831                 unsigned int why;
832                 /*
833                  * Remove all stop signals from all queues, wake all threads.
834                  */
835                 siginitset(&flush, SIG_KERNEL_STOP_MASK);
836                 flush_sigqueue_mask(&flush, &signal->shared_pending);
837                 for_each_thread(p, t) {
838                         flush_sigqueue_mask(&flush, &t->pending);
839                         task_clear_jobctl_pending(t, JOBCTL_STOP_PENDING);
840                         if (likely(!(t->ptrace & PT_SEIZED)))
841                                 wake_up_state(t, __TASK_STOPPED);
842                         else
843                                 ptrace_trap_notify(t);
844                 }
845
846                 /*
847                  * Notify the parent with CLD_CONTINUED if we were stopped.
848                  *
849                  * If we were in the middle of a group stop, we pretend it
850                  * was already finished, and then continued. Since SIGCHLD
851                  * doesn't queue we report only CLD_STOPPED, as if the next
852                  * CLD_CONTINUED was dropped.
853                  */
854                 why = 0;
855                 if (signal->flags & SIGNAL_STOP_STOPPED)
856                         why |= SIGNAL_CLD_CONTINUED;
857                 else if (signal->group_stop_count)
858                         why |= SIGNAL_CLD_STOPPED;
859
860                 if (why) {
861                         /*
862                          * The first thread which returns from do_signal_stop()
863                          * will take ->siglock, notice SIGNAL_CLD_MASK, and
864                          * notify its parent. See get_signal_to_deliver().
865                          */
866                         signal_set_stop_flags(signal, why | SIGNAL_STOP_CONTINUED);
867                         signal->group_stop_count = 0;
868                         signal->group_exit_code = 0;
869                 }
870         }
871
872         return !sig_ignored(p, sig, force);
873 }
874
875 /*
876  * Test if P wants to take SIG.  After we've checked all threads with this,
877  * it's equivalent to finding no threads not blocking SIG.  Any threads not
878  * blocking SIG were ruled out because they are not running and already
879  * have pending signals.  Such threads will dequeue from the shared queue
880  * as soon as they're available, so putting the signal on the shared queue
881  * will be equivalent to sending it to one such thread.
882  */
883 static inline int wants_signal(int sig, struct task_struct *p)
884 {
885         if (sigismember(&p->blocked, sig))
886                 return 0;
887         if (p->flags & PF_EXITING)
888                 return 0;
889         if (sig == SIGKILL)
890                 return 1;
891         if (task_is_stopped_or_traced(p))
892                 return 0;
893         return task_curr(p) || !signal_pending(p);
894 }
895
896 static void complete_signal(int sig, struct task_struct *p, int group)
897 {
898         struct signal_struct *signal = p->signal;
899         struct task_struct *t;
900
901         /*
902          * Now find a thread we can wake up to take the signal off the queue.
903          *
904          * If the main thread wants the signal, it gets first crack.
905          * Probably the least surprising to the average bear.
906          */
907         if (wants_signal(sig, p))
908                 t = p;
909         else if (!group || thread_group_empty(p))
910                 /*
911                  * There is just one thread and it does not need to be woken.
912                  * It will dequeue unblocked signals before it runs again.
913                  */
914                 return;
915         else {
916                 /*
917                  * Otherwise try to find a suitable thread.
918                  */
919                 t = signal->curr_target;
920                 while (!wants_signal(sig, t)) {
921                         t = next_thread(t);
922                         if (t == signal->curr_target)
923                                 /*
924                                  * No thread needs to be woken.
925                                  * Any eligible threads will see
926                                  * the signal in the queue soon.
927                                  */
928                                 return;
929                 }
930                 signal->curr_target = t;
931         }
932
933         /*
934          * Found a killable thread.  If the signal will be fatal,
935          * then start taking the whole group down immediately.
936          */
937         if (sig_fatal(p, sig) &&
938             !(signal->flags & SIGNAL_GROUP_EXIT) &&
939             !sigismember(&t->real_blocked, sig) &&
940             (sig == SIGKILL || !p->ptrace)) {
941                 /*
942                  * This signal will be fatal to the whole group.
943                  */
944                 if (!sig_kernel_coredump(sig)) {
945                         /*
946                          * Start a group exit and wake everybody up.
947                          * This way we don't have other threads
948                          * running and doing things after a slower
949                          * thread has the fatal signal pending.
950                          */
951                         signal->flags = SIGNAL_GROUP_EXIT;
952                         signal->group_exit_code = sig;
953                         signal->group_stop_count = 0;
954                         t = p;
955                         do {
956                                 task_clear_jobctl_pending(t, JOBCTL_PENDING_MASK);
957                                 sigaddset(&t->pending.signal, SIGKILL);
958                                 signal_wake_up(t, 1);
959                         } while_each_thread(p, t);
960                         return;
961                 }
962         }
963
964         /*
965          * The signal is already in the shared-pending queue.
966          * Tell the chosen thread to wake up and dequeue it.
967          */
968         signal_wake_up(t, sig == SIGKILL);
969         return;
970 }
971
972 static inline int legacy_queue(struct sigpending *signals, int sig)
973 {
974         return (sig < SIGRTMIN) && sigismember(&signals->signal, sig);
975 }
976
977 #ifdef CONFIG_USER_NS
978 static inline void userns_fixup_signal_uid(struct siginfo *info, struct task_struct *t)
979 {
980         if (current_user_ns() == task_cred_xxx(t, user_ns))
981                 return;
982
983         if (SI_FROMKERNEL(info))
984                 return;
985
986         rcu_read_lock();
987         info->si_uid = from_kuid_munged(task_cred_xxx(t, user_ns),
988                                         make_kuid(current_user_ns(), info->si_uid));
989         rcu_read_unlock();
990 }
991 #else
992 static inline void userns_fixup_signal_uid(struct siginfo *info, struct task_struct *t)
993 {
994         return;
995 }
996 #endif
997
998 static int __send_signal(int sig, struct siginfo *info, struct task_struct *t,
999                         int group, int from_ancestor_ns)
1000 {
1001         struct sigpending *pending;
1002         struct sigqueue *q;
1003         int override_rlimit;
1004         int ret = 0, result;
1005
1006         assert_spin_locked(&t->sighand->siglock);
1007
1008         result = TRACE_SIGNAL_IGNORED;
1009         if (!prepare_signal(sig, t,
1010                         from_ancestor_ns || (info == SEND_SIG_FORCED)))
1011                 goto ret;
1012
1013         pending = group ? &t->signal->shared_pending : &t->pending;
1014         /*
1015          * Short-circuit ignored signals and support queuing
1016          * exactly one non-rt signal, so that we can get more
1017          * detailed information about the cause of the signal.
1018          */
1019         result = TRACE_SIGNAL_ALREADY_PENDING;
1020         if (legacy_queue(pending, sig))
1021                 goto ret;
1022
1023         result = TRACE_SIGNAL_DELIVERED;
1024         /*
1025          * fast-pathed signals for kernel-internal things like SIGSTOP
1026          * or SIGKILL.
1027          */
1028         if (info == SEND_SIG_FORCED)
1029                 goto out_set;
1030
1031         /*
1032          * Real-time signals must be queued if sent by sigqueue, or
1033          * some other real-time mechanism.  It is implementation
1034          * defined whether kill() does so.  We attempt to do so, on
1035          * the principle of least surprise, but since kill is not
1036          * allowed to fail with EAGAIN when low on memory we just
1037          * make sure at least one signal gets delivered and don't
1038          * pass on the info struct.
1039          */
1040         if (sig < SIGRTMIN)
1041                 override_rlimit = (is_si_special(info) || info->si_code >= 0);
1042         else
1043                 override_rlimit = 0;
1044
1045         q = __sigqueue_alloc(sig, t, GFP_ATOMIC, override_rlimit);
1046         if (q) {
1047                 list_add_tail(&q->list, &pending->list);
1048                 switch ((unsigned long) info) {
1049                 case (unsigned long) SEND_SIG_NOINFO:
1050                         clear_siginfo(&q->info);
1051                         q->info.si_signo = sig;
1052                         q->info.si_errno = 0;
1053                         q->info.si_code = SI_USER;
1054                         q->info.si_pid = task_tgid_nr_ns(current,
1055                                                         task_active_pid_ns(t));
1056                         q->info.si_uid = from_kuid_munged(current_user_ns(), current_uid());
1057                         break;
1058                 case (unsigned long) SEND_SIG_PRIV:
1059                         clear_siginfo(&q->info);
1060                         q->info.si_signo = sig;
1061                         q->info.si_errno = 0;
1062                         q->info.si_code = SI_KERNEL;
1063                         q->info.si_pid = 0;
1064                         q->info.si_uid = 0;
1065                         break;
1066                 default:
1067                         copy_siginfo(&q->info, info);
1068                         if (from_ancestor_ns)
1069                                 q->info.si_pid = 0;
1070                         break;
1071                 }
1072
1073                 userns_fixup_signal_uid(&q->info, t);
1074
1075         } else if (!is_si_special(info)) {
1076                 if (sig >= SIGRTMIN && info->si_code != SI_USER) {
1077                         /*
1078                          * Queue overflow, abort.  We may abort if the
1079                          * signal was rt and sent by user using something
1080                          * other than kill().
1081                          */
1082                         result = TRACE_SIGNAL_OVERFLOW_FAIL;
1083                         ret = -EAGAIN;
1084                         goto ret;
1085                 } else {
1086                         /*
1087                          * This is a silent loss of information.  We still
1088                          * send the signal, but the *info bits are lost.
1089                          */
1090                         result = TRACE_SIGNAL_LOSE_INFO;
1091                 }
1092         }
1093
1094 out_set:
1095         signalfd_notify(t, sig);
1096         sigaddset(&pending->signal, sig);
1097         complete_signal(sig, t, group);
1098 ret:
1099         trace_signal_generate(sig, info, t, group, result);
1100         return ret;
1101 }
1102
1103 static int send_signal(int sig, struct siginfo *info, struct task_struct *t,
1104                         int group)
1105 {
1106         int from_ancestor_ns = 0;
1107
1108 #ifdef CONFIG_PID_NS
1109         from_ancestor_ns = si_fromuser(info) &&
1110                            !task_pid_nr_ns(current, task_active_pid_ns(t));
1111 #endif
1112
1113         return __send_signal(sig, info, t, group, from_ancestor_ns);
1114 }
1115
1116 static void print_fatal_signal(int signr)
1117 {
1118         struct pt_regs *regs = signal_pt_regs();
1119         pr_info("potentially unexpected fatal signal %d.\n", signr);
1120
1121 #if defined(__i386__) && !defined(__arch_um__)
1122         pr_info("code at %08lx: ", regs->ip);
1123         {
1124                 int i;
1125                 for (i = 0; i < 16; i++) {
1126                         unsigned char insn;
1127
1128                         if (get_user(insn, (unsigned char *)(regs->ip + i)))
1129                                 break;
1130                         pr_cont("%02x ", insn);
1131                 }
1132         }
1133         pr_cont("\n");
1134 #endif
1135         preempt_disable();
1136         show_regs(regs);
1137         preempt_enable();
1138 }
1139
1140 static int __init setup_print_fatal_signals(char *str)
1141 {
1142         get_option (&str, &print_fatal_signals);
1143
1144         return 1;
1145 }
1146
1147 __setup("print-fatal-signals=", setup_print_fatal_signals);
1148
1149 int
1150 __group_send_sig_info(int sig, struct siginfo *info, struct task_struct *p)
1151 {
1152         return send_signal(sig, info, p, 1);
1153 }
1154
1155 static int
1156 specific_send_sig_info(int sig, struct siginfo *info, struct task_struct *t)
1157 {
1158         return send_signal(sig, info, t, 0);
1159 }
1160
1161 int do_send_sig_info(int sig, struct siginfo *info, struct task_struct *p,
1162                         bool group)
1163 {
1164         unsigned long flags;
1165         int ret = -ESRCH;
1166
1167         if (lock_task_sighand(p, &flags)) {
1168                 ret = send_signal(sig, info, p, group);
1169                 unlock_task_sighand(p, &flags);
1170         }
1171
1172         return ret;
1173 }
1174
1175 /*
1176  * Force a signal that the process can't ignore: if necessary
1177  * we unblock the signal and change any SIG_IGN to SIG_DFL.
1178  *
1179  * Note: If we unblock the signal, we always reset it to SIG_DFL,
1180  * since we do not want to have a signal handler that was blocked
1181  * be invoked when user space had explicitly blocked it.
1182  *
1183  * We don't want to have recursive SIGSEGV's etc, for example,
1184  * that is why we also clear SIGNAL_UNKILLABLE.
1185  */
1186 int
1187 force_sig_info(int sig, struct siginfo *info, struct task_struct *t)
1188 {
1189         unsigned long int flags;
1190         int ret, blocked, ignored;
1191         struct k_sigaction *action;
1192
1193         spin_lock_irqsave(&t->sighand->siglock, flags);
1194         action = &t->sighand->action[sig-1];
1195         ignored = action->sa.sa_handler == SIG_IGN;
1196         blocked = sigismember(&t->blocked, sig);
1197         if (blocked || ignored) {
1198                 action->sa.sa_handler = SIG_DFL;
1199                 if (blocked) {
1200                         sigdelset(&t->blocked, sig);
1201                         recalc_sigpending_and_wake(t);
1202                 }
1203         }
1204         /*
1205          * Don't clear SIGNAL_UNKILLABLE for traced tasks, users won't expect
1206          * debugging to leave init killable.
1207          */
1208         if (action->sa.sa_handler == SIG_DFL && !t->ptrace)
1209                 t->signal->flags &= ~SIGNAL_UNKILLABLE;
1210         ret = specific_send_sig_info(sig, info, t);
1211         spin_unlock_irqrestore(&t->sighand->siglock, flags);
1212
1213         return ret;
1214 }
1215
1216 /*
1217  * Nuke all other threads in the group.
1218  */
1219 int zap_other_threads(struct task_struct *p)
1220 {
1221         struct task_struct *t = p;
1222         int count = 0;
1223
1224         p->signal->group_stop_count = 0;
1225
1226         while_each_thread(p, t) {
1227                 task_clear_jobctl_pending(t, JOBCTL_PENDING_MASK);
1228                 count++;
1229
1230                 /* Don't bother with already dead threads */
1231                 if (t->exit_state)
1232                         continue;
1233                 sigaddset(&t->pending.signal, SIGKILL);
1234                 signal_wake_up(t, 1);
1235         }
1236
1237         return count;
1238 }
1239
1240 struct sighand_struct *__lock_task_sighand(struct task_struct *tsk,
1241                                            unsigned long *flags)
1242 {
1243         struct sighand_struct *sighand;
1244
1245         for (;;) {
1246                 /*
1247                  * Disable interrupts early to avoid deadlocks.
1248                  * See rcu_read_unlock() comment header for details.
1249                  */
1250                 local_irq_save(*flags);
1251                 rcu_read_lock();
1252                 sighand = rcu_dereference(tsk->sighand);
1253                 if (unlikely(sighand == NULL)) {
1254                         rcu_read_unlock();
1255                         local_irq_restore(*flags);
1256                         break;
1257                 }
1258                 /*
1259                  * This sighand can be already freed and even reused, but
1260                  * we rely on SLAB_TYPESAFE_BY_RCU and sighand_ctor() which
1261                  * initializes ->siglock: this slab can't go away, it has
1262                  * the same object type, ->siglock can't be reinitialized.
1263                  *
1264                  * We need to ensure that tsk->sighand is still the same
1265                  * after we take the lock, we can race with de_thread() or
1266                  * __exit_signal(). In the latter case the next iteration
1267                  * must see ->sighand == NULL.
1268                  */
1269                 spin_lock(&sighand->siglock);
1270                 if (likely(sighand == tsk->sighand)) {
1271                         rcu_read_unlock();
1272                         break;
1273                 }
1274                 spin_unlock(&sighand->siglock);
1275                 rcu_read_unlock();
1276                 local_irq_restore(*flags);
1277         }
1278
1279         return sighand;
1280 }
1281
1282 /*
1283  * send signal info to all the members of a group
1284  */
1285 int group_send_sig_info(int sig, struct siginfo *info, struct task_struct *p)
1286 {
1287         int ret;
1288
1289         rcu_read_lock();
1290         ret = check_kill_permission(sig, info, p);
1291         rcu_read_unlock();
1292
1293         if (!ret && sig)
1294                 ret = do_send_sig_info(sig, info, p, true);
1295
1296         return ret;
1297 }
1298
1299 /*
1300  * __kill_pgrp_info() sends a signal to a process group: this is what the tty
1301  * control characters do (^C, ^Z etc)
1302  * - the caller must hold at least a readlock on tasklist_lock
1303  */
1304 int __kill_pgrp_info(int sig, struct siginfo *info, struct pid *pgrp)
1305 {
1306         struct task_struct *p = NULL;
1307         int retval, success;
1308
1309         success = 0;
1310         retval = -ESRCH;
1311         do_each_pid_task(pgrp, PIDTYPE_PGID, p) {
1312                 int err = group_send_sig_info(sig, info, p);
1313                 success |= !err;
1314                 retval = err;
1315         } while_each_pid_task(pgrp, PIDTYPE_PGID, p);
1316         return success ? 0 : retval;
1317 }
1318
1319 int kill_pid_info(int sig, struct siginfo *info, struct pid *pid)
1320 {
1321         int error = -ESRCH;
1322         struct task_struct *p;
1323
1324         for (;;) {
1325                 rcu_read_lock();
1326                 p = pid_task(pid, PIDTYPE_PID);
1327                 if (p)
1328                         error = group_send_sig_info(sig, info, p);
1329                 rcu_read_unlock();
1330                 if (likely(!p || error != -ESRCH))
1331                         return error;
1332
1333                 /*
1334                  * The task was unhashed in between, try again.  If it
1335                  * is dead, pid_task() will return NULL, if we race with
1336                  * de_thread() it will find the new leader.
1337                  */
1338         }
1339 }
1340
1341 static int kill_proc_info(int sig, struct siginfo *info, pid_t pid)
1342 {
1343         int error;
1344         rcu_read_lock();
1345         error = kill_pid_info(sig, info, find_vpid(pid));
1346         rcu_read_unlock();
1347         return error;
1348 }
1349
1350 static int kill_as_cred_perm(const struct cred *cred,
1351                              struct task_struct *target)
1352 {
1353         const struct cred *pcred = __task_cred(target);
1354         if (!uid_eq(cred->euid, pcred->suid) && !uid_eq(cred->euid, pcred->uid) &&
1355             !uid_eq(cred->uid,  pcred->suid) && !uid_eq(cred->uid,  pcred->uid))
1356                 return 0;
1357         return 1;
1358 }
1359
1360 /* like kill_pid_info(), but doesn't use uid/euid of "current" */
1361 int kill_pid_info_as_cred(int sig, struct siginfo *info, struct pid *pid,
1362                          const struct cred *cred, u32 secid)
1363 {
1364         int ret = -EINVAL;
1365         struct task_struct *p;
1366         unsigned long flags;
1367
1368         if (!valid_signal(sig))
1369                 return ret;
1370
1371         rcu_read_lock();
1372         p = pid_task(pid, PIDTYPE_PID);
1373         if (!p) {
1374                 ret = -ESRCH;
1375                 goto out_unlock;
1376         }
1377         if (si_fromuser(info) && !kill_as_cred_perm(cred, p)) {
1378                 ret = -EPERM;
1379                 goto out_unlock;
1380         }
1381         ret = security_task_kill(p, info, sig, secid);
1382         if (ret)
1383                 goto out_unlock;
1384
1385         if (sig) {
1386                 if (lock_task_sighand(p, &flags)) {
1387                         ret = __send_signal(sig, info, p, 1, 0);
1388                         unlock_task_sighand(p, &flags);
1389                 } else
1390                         ret = -ESRCH;
1391         }
1392 out_unlock:
1393         rcu_read_unlock();
1394         return ret;
1395 }
1396 EXPORT_SYMBOL_GPL(kill_pid_info_as_cred);
1397
1398 /*
1399  * kill_something_info() interprets pid in interesting ways just like kill(2).
1400  *
1401  * POSIX specifies that kill(-1,sig) is unspecified, but what we have
1402  * is probably wrong.  Should make it like BSD or SYSV.
1403  */
1404
1405 static int kill_something_info(int sig, struct siginfo *info, pid_t pid)
1406 {
1407         int ret;
1408
1409         if (pid > 0) {
1410                 rcu_read_lock();
1411                 ret = kill_pid_info(sig, info, find_vpid(pid));
1412                 rcu_read_unlock();
1413                 return ret;
1414         }
1415
1416         /* -INT_MIN is undefined.  Exclude this case to avoid a UBSAN warning */
1417         if (pid == INT_MIN)
1418                 return -ESRCH;
1419
1420         read_lock(&tasklist_lock);
1421         if (pid != -1) {
1422                 ret = __kill_pgrp_info(sig, info,
1423                                 pid ? find_vpid(-pid) : task_pgrp(current));
1424         } else {
1425                 int retval = 0, count = 0;
1426                 struct task_struct * p;
1427
1428                 for_each_process(p) {
1429                         if (task_pid_vnr(p) > 1 &&
1430                                         !same_thread_group(p, current)) {
1431                                 int err = group_send_sig_info(sig, info, p);
1432                                 ++count;
1433                                 if (err != -EPERM)
1434                                         retval = err;
1435                         }
1436                 }
1437                 ret = count ? retval : -ESRCH;
1438         }
1439         read_unlock(&tasklist_lock);
1440
1441         return ret;
1442 }
1443
1444 /*
1445  * These are for backward compatibility with the rest of the kernel source.
1446  */
1447
1448 int send_sig_info(int sig, struct siginfo *info, struct task_struct *p)
1449 {
1450         /*
1451          * Make sure legacy kernel users don't send in bad values
1452          * (normal paths check this in check_kill_permission).
1453          */
1454         if (!valid_signal(sig))
1455                 return -EINVAL;
1456
1457         return do_send_sig_info(sig, info, p, false);
1458 }
1459
1460 #define __si_special(priv) \
1461         ((priv) ? SEND_SIG_PRIV : SEND_SIG_NOINFO)
1462
1463 int
1464 send_sig(int sig, struct task_struct *p, int priv)
1465 {
1466         return send_sig_info(sig, __si_special(priv), p);
1467 }
1468
1469 void
1470 force_sig(int sig, struct task_struct *p)
1471 {
1472         force_sig_info(sig, SEND_SIG_PRIV, p);
1473 }
1474
1475 /*
1476  * When things go south during signal handling, we
1477  * will force a SIGSEGV. And if the signal that caused
1478  * the problem was already a SIGSEGV, we'll want to
1479  * make sure we don't even try to deliver the signal..
1480  */
1481 int
1482 force_sigsegv(int sig, struct task_struct *p)
1483 {
1484         if (sig == SIGSEGV) {
1485                 unsigned long flags;
1486                 spin_lock_irqsave(&p->sighand->siglock, flags);
1487                 p->sighand->action[sig - 1].sa.sa_handler = SIG_DFL;
1488                 spin_unlock_irqrestore(&p->sighand->siglock, flags);
1489         }
1490         force_sig(SIGSEGV, p);
1491         return 0;
1492 }
1493
1494 int force_sig_fault(int sig, int code, void __user *addr
1495         ___ARCH_SI_TRAPNO(int trapno)
1496         ___ARCH_SI_IA64(int imm, unsigned int flags, unsigned long isr)
1497         , struct task_struct *t)
1498 {
1499         struct siginfo info;
1500
1501         clear_siginfo(&info);
1502         info.si_signo = sig;
1503         info.si_errno = 0;
1504         info.si_code  = code;
1505         info.si_addr  = addr;
1506 #ifdef __ARCH_SI_TRAPNO
1507         info.si_trapno = trapno;
1508 #endif
1509 #ifdef __ia64__
1510         info.si_imm = imm;
1511         info.si_flags = flags;
1512         info.si_isr = isr;
1513 #endif
1514         return force_sig_info(info.si_signo, &info, t);
1515 }
1516
1517 int send_sig_fault(int sig, int code, void __user *addr
1518         ___ARCH_SI_TRAPNO(int trapno)
1519         ___ARCH_SI_IA64(int imm, unsigned int flags, unsigned long isr)
1520         , struct task_struct *t)
1521 {
1522         struct siginfo info;
1523
1524         clear_siginfo(&info);
1525         info.si_signo = sig;
1526         info.si_errno = 0;
1527         info.si_code  = code;
1528         info.si_addr  = addr;
1529 #ifdef __ARCH_SI_TRAPNO
1530         info.si_trapno = trapno;
1531 #endif
1532 #ifdef __ia64__
1533         info.si_imm = imm;
1534         info.si_flags = flags;
1535         info.si_isr = isr;
1536 #endif
1537         return send_sig_info(info.si_signo, &info, t);
1538 }
1539
1540 #if defined(BUS_MCEERR_AO) && defined(BUS_MCEERR_AR)
1541 int force_sig_mceerr(int code, void __user *addr, short lsb, struct task_struct *t)
1542 {
1543         struct siginfo info;
1544
1545         WARN_ON((code != BUS_MCEERR_AO) && (code != BUS_MCEERR_AR));
1546         clear_siginfo(&info);
1547         info.si_signo = SIGBUS;
1548         info.si_errno = 0;
1549         info.si_code = code;
1550         info.si_addr = addr;
1551         info.si_addr_lsb = lsb;
1552         return force_sig_info(info.si_signo, &info, t);
1553 }
1554
1555 int send_sig_mceerr(int code, void __user *addr, short lsb, struct task_struct *t)
1556 {
1557         struct siginfo info;
1558
1559         WARN_ON((code != BUS_MCEERR_AO) && (code != BUS_MCEERR_AR));
1560         clear_siginfo(&info);
1561         info.si_signo = SIGBUS;
1562         info.si_errno = 0;
1563         info.si_code = code;
1564         info.si_addr = addr;
1565         info.si_addr_lsb = lsb;
1566         return send_sig_info(info.si_signo, &info, t);
1567 }
1568 EXPORT_SYMBOL(send_sig_mceerr);
1569 #endif
1570
1571 #ifdef SEGV_BNDERR
1572 int force_sig_bnderr(void __user *addr, void __user *lower, void __user *upper)
1573 {
1574         struct siginfo info;
1575
1576         clear_siginfo(&info);
1577         info.si_signo = SIGSEGV;
1578         info.si_errno = 0;
1579         info.si_code  = SEGV_BNDERR;
1580         info.si_addr  = addr;
1581         info.si_lower = lower;
1582         info.si_upper = upper;
1583         return force_sig_info(info.si_signo, &info, current);
1584 }
1585 #endif
1586
1587 #ifdef SEGV_PKUERR
1588 int force_sig_pkuerr(void __user *addr, u32 pkey)
1589 {
1590         struct siginfo info;
1591
1592         clear_siginfo(&info);
1593         info.si_signo = SIGSEGV;
1594         info.si_errno = 0;
1595         info.si_code  = SEGV_PKUERR;
1596         info.si_addr  = addr;
1597         info.si_pkey  = pkey;
1598         return force_sig_info(info.si_signo, &info, current);
1599 }
1600 #endif
1601
1602 /* For the crazy architectures that include trap information in
1603  * the errno field, instead of an actual errno value.
1604  */
1605 int force_sig_ptrace_errno_trap(int errno, void __user *addr)
1606 {
1607         struct siginfo info;
1608
1609         clear_siginfo(&info);
1610         info.si_signo = SIGTRAP;
1611         info.si_errno = errno;
1612         info.si_code  = TRAP_HWBKPT;
1613         info.si_addr  = addr;
1614         return force_sig_info(info.si_signo, &info, current);
1615 }
1616
1617 int kill_pgrp(struct pid *pid, int sig, int priv)
1618 {
1619         int ret;
1620
1621         read_lock(&tasklist_lock);
1622         ret = __kill_pgrp_info(sig, __si_special(priv), pid);
1623         read_unlock(&tasklist_lock);
1624
1625         return ret;
1626 }
1627 EXPORT_SYMBOL(kill_pgrp);
1628
1629 int kill_pid(struct pid *pid, int sig, int priv)
1630 {
1631         return kill_pid_info(sig, __si_special(priv), pid);
1632 }
1633 EXPORT_SYMBOL(kill_pid);
1634
1635 /*
1636  * These functions support sending signals using preallocated sigqueue
1637  * structures.  This is needed "because realtime applications cannot
1638  * afford to lose notifications of asynchronous events, like timer
1639  * expirations or I/O completions".  In the case of POSIX Timers
1640  * we allocate the sigqueue structure from the timer_create.  If this
1641  * allocation fails we are able to report the failure to the application
1642  * with an EAGAIN error.
1643  */
1644 struct sigqueue *sigqueue_alloc(void)
1645 {
1646         struct sigqueue *q = __sigqueue_alloc(-1, current, GFP_KERNEL, 0);
1647
1648         if (q)
1649                 q->flags |= SIGQUEUE_PREALLOC;
1650
1651         return q;
1652 }
1653
1654 void sigqueue_free(struct sigqueue *q)
1655 {
1656         unsigned long flags;
1657         spinlock_t *lock = &current->sighand->siglock;
1658
1659         BUG_ON(!(q->flags & SIGQUEUE_PREALLOC));
1660         /*
1661          * We must hold ->siglock while testing q->list
1662          * to serialize with collect_signal() or with
1663          * __exit_signal()->flush_sigqueue().
1664          */
1665         spin_lock_irqsave(lock, flags);
1666         q->flags &= ~SIGQUEUE_PREALLOC;
1667         /*
1668          * If it is queued it will be freed when dequeued,
1669          * like the "regular" sigqueue.
1670          */
1671         if (!list_empty(&q->list))
1672                 q = NULL;
1673         spin_unlock_irqrestore(lock, flags);
1674
1675         if (q)
1676                 __sigqueue_free(q);
1677 }
1678
1679 int send_sigqueue(struct sigqueue *q, struct task_struct *t, int group)
1680 {
1681         int sig = q->info.si_signo;
1682         struct sigpending *pending;
1683         unsigned long flags;
1684         int ret, result;
1685
1686         BUG_ON(!(q->flags & SIGQUEUE_PREALLOC));
1687
1688         ret = -1;
1689         if (!likely(lock_task_sighand(t, &flags)))
1690                 goto ret;
1691
1692         ret = 1; /* the signal is ignored */
1693         result = TRACE_SIGNAL_IGNORED;
1694         if (!prepare_signal(sig, t, false))
1695                 goto out;
1696
1697         ret = 0;
1698         if (unlikely(!list_empty(&q->list))) {
1699                 /*
1700                  * If an SI_TIMER entry is already queue just increment
1701                  * the overrun count.
1702                  */
1703                 BUG_ON(q->info.si_code != SI_TIMER);
1704                 q->info.si_overrun++;
1705                 result = TRACE_SIGNAL_ALREADY_PENDING;
1706                 goto out;
1707         }
1708         q->info.si_overrun = 0;
1709
1710         signalfd_notify(t, sig);
1711         pending = group ? &t->signal->shared_pending : &t->pending;
1712         list_add_tail(&q->list, &pending->list);
1713         sigaddset(&pending->signal, sig);
1714         complete_signal(sig, t, group);
1715         result = TRACE_SIGNAL_DELIVERED;
1716 out:
1717         trace_signal_generate(sig, &q->info, t, group, result);
1718         unlock_task_sighand(t, &flags);
1719 ret:
1720         return ret;
1721 }
1722
1723 /*
1724  * Let a parent know about the death of a child.
1725  * For a stopped/continued status change, use do_notify_parent_cldstop instead.
1726  *
1727  * Returns true if our parent ignored us and so we've switched to
1728  * self-reaping.
1729  */
1730 bool do_notify_parent(struct task_struct *tsk, int sig)
1731 {
1732         struct siginfo info;
1733         unsigned long flags;
1734         struct sighand_struct *psig;
1735         bool autoreap = false;
1736         u64 utime, stime;
1737
1738         BUG_ON(sig == -1);
1739
1740         /* do_notify_parent_cldstop should have been called instead.  */
1741         BUG_ON(task_is_stopped_or_traced(tsk));
1742
1743         BUG_ON(!tsk->ptrace &&
1744                (tsk->group_leader != tsk || !thread_group_empty(tsk)));
1745
1746         if (sig != SIGCHLD) {
1747                 /*
1748                  * This is only possible if parent == real_parent.
1749                  * Check if it has changed security domain.
1750                  */
1751                 if (tsk->parent_exec_id != tsk->parent->self_exec_id)
1752                         sig = SIGCHLD;
1753         }
1754
1755         clear_siginfo(&info);
1756         info.si_signo = sig;
1757         info.si_errno = 0;
1758         /*
1759          * We are under tasklist_lock here so our parent is tied to
1760          * us and cannot change.
1761          *
1762          * task_active_pid_ns will always return the same pid namespace
1763          * until a task passes through release_task.
1764          *
1765          * write_lock() currently calls preempt_disable() which is the
1766          * same as rcu_read_lock(), but according to Oleg, this is not
1767          * correct to rely on this
1768          */
1769         rcu_read_lock();
1770         info.si_pid = task_pid_nr_ns(tsk, task_active_pid_ns(tsk->parent));
1771         info.si_uid = from_kuid_munged(task_cred_xxx(tsk->parent, user_ns),
1772                                        task_uid(tsk));
1773         rcu_read_unlock();
1774
1775         task_cputime(tsk, &utime, &stime);
1776         info.si_utime = nsec_to_clock_t(utime + tsk->signal->utime);
1777         info.si_stime = nsec_to_clock_t(stime + tsk->signal->stime);
1778
1779         info.si_status = tsk->exit_code & 0x7f;
1780         if (tsk->exit_code & 0x80)
1781                 info.si_code = CLD_DUMPED;
1782         else if (tsk->exit_code & 0x7f)
1783                 info.si_code = CLD_KILLED;
1784         else {
1785                 info.si_code = CLD_EXITED;
1786                 info.si_status = tsk->exit_code >> 8;
1787         }
1788
1789         psig = tsk->parent->sighand;
1790         spin_lock_irqsave(&psig->siglock, flags);
1791         if (!tsk->ptrace && sig == SIGCHLD &&
1792             (psig->action[SIGCHLD-1].sa.sa_handler == SIG_IGN ||
1793              (psig->action[SIGCHLD-1].sa.sa_flags & SA_NOCLDWAIT))) {
1794                 /*
1795                  * We are exiting and our parent doesn't care.  POSIX.1
1796                  * defines special semantics for setting SIGCHLD to SIG_IGN
1797                  * or setting the SA_NOCLDWAIT flag: we should be reaped
1798                  * automatically and not left for our parent's wait4 call.
1799                  * Rather than having the parent do it as a magic kind of
1800                  * signal handler, we just set this to tell do_exit that we
1801                  * can be cleaned up without becoming a zombie.  Note that
1802                  * we still call __wake_up_parent in this case, because a
1803                  * blocked sys_wait4 might now return -ECHILD.
1804                  *
1805                  * Whether we send SIGCHLD or not for SA_NOCLDWAIT
1806                  * is implementation-defined: we do (if you don't want
1807                  * it, just use SIG_IGN instead).
1808                  */
1809                 autoreap = true;
1810                 if (psig->action[SIGCHLD-1].sa.sa_handler == SIG_IGN)
1811                         sig = 0;
1812         }
1813         if (valid_signal(sig) && sig)
1814                 __group_send_sig_info(sig, &info, tsk->parent);
1815         __wake_up_parent(tsk, tsk->parent);
1816         spin_unlock_irqrestore(&psig->siglock, flags);
1817
1818         return autoreap;
1819 }
1820
1821 /**
1822  * do_notify_parent_cldstop - notify parent of stopped/continued state change
1823  * @tsk: task reporting the state change
1824  * @for_ptracer: the notification is for ptracer
1825  * @why: CLD_{CONTINUED|STOPPED|TRAPPED} to report
1826  *
1827  * Notify @tsk's parent that the stopped/continued state has changed.  If
1828  * @for_ptracer is %false, @tsk's group leader notifies to its real parent.
1829  * If %true, @tsk reports to @tsk->parent which should be the ptracer.
1830  *
1831  * CONTEXT:
1832  * Must be called with tasklist_lock at least read locked.
1833  */
1834 static void do_notify_parent_cldstop(struct task_struct *tsk,
1835                                      bool for_ptracer, int why)
1836 {
1837         struct siginfo info;
1838         unsigned long flags;
1839         struct task_struct *parent;
1840         struct sighand_struct *sighand;
1841         u64 utime, stime;
1842
1843         if (for_ptracer) {
1844                 parent = tsk->parent;
1845         } else {
1846                 tsk = tsk->group_leader;
1847                 parent = tsk->real_parent;
1848         }
1849
1850         clear_siginfo(&info);
1851         info.si_signo = SIGCHLD;
1852         info.si_errno = 0;
1853         /*
1854          * see comment in do_notify_parent() about the following 4 lines
1855          */
1856         rcu_read_lock();
1857         info.si_pid = task_pid_nr_ns(tsk, task_active_pid_ns(parent));
1858         info.si_uid = from_kuid_munged(task_cred_xxx(parent, user_ns), task_uid(tsk));
1859         rcu_read_unlock();
1860
1861         task_cputime(tsk, &utime, &stime);
1862         info.si_utime = nsec_to_clock_t(utime);
1863         info.si_stime = nsec_to_clock_t(stime);
1864
1865         info.si_code = why;
1866         switch (why) {
1867         case CLD_CONTINUED:
1868                 info.si_status = SIGCONT;
1869                 break;
1870         case CLD_STOPPED:
1871                 info.si_status = tsk->signal->group_exit_code & 0x7f;
1872                 break;
1873         case CLD_TRAPPED:
1874                 info.si_status = tsk->exit_code & 0x7f;
1875                 break;
1876         default:
1877                 BUG();
1878         }
1879
1880         sighand = parent->sighand;
1881         spin_lock_irqsave(&sighand->siglock, flags);
1882         if (sighand->action[SIGCHLD-1].sa.sa_handler != SIG_IGN &&
1883             !(sighand->action[SIGCHLD-1].sa.sa_flags & SA_NOCLDSTOP))
1884                 __group_send_sig_info(SIGCHLD, &info, parent);
1885         /*
1886          * Even if SIGCHLD is not generated, we must wake up wait4 calls.
1887          */
1888         __wake_up_parent(tsk, parent);
1889         spin_unlock_irqrestore(&sighand->siglock, flags);
1890 }
1891
1892 static inline int may_ptrace_stop(void)
1893 {
1894         if (!likely(current->ptrace))
1895                 return 0;
1896         /*
1897          * Are we in the middle of do_coredump?
1898          * If so and our tracer is also part of the coredump stopping
1899          * is a deadlock situation, and pointless because our tracer
1900          * is dead so don't allow us to stop.
1901          * If SIGKILL was already sent before the caller unlocked
1902          * ->siglock we must see ->core_state != NULL. Otherwise it
1903          * is safe to enter schedule().
1904          *
1905          * This is almost outdated, a task with the pending SIGKILL can't
1906          * block in TASK_TRACED. But PTRACE_EVENT_EXIT can be reported
1907          * after SIGKILL was already dequeued.
1908          */
1909         if (unlikely(current->mm->core_state) &&
1910             unlikely(current->mm == current->parent->mm))
1911                 return 0;
1912
1913         return 1;
1914 }
1915
1916 /*
1917  * Return non-zero if there is a SIGKILL that should be waking us up.
1918  * Called with the siglock held.
1919  */
1920 static int sigkill_pending(struct task_struct *tsk)
1921 {
1922         return  sigismember(&tsk->pending.signal, SIGKILL) ||
1923                 sigismember(&tsk->signal->shared_pending.signal, SIGKILL);
1924 }
1925
1926 /*
1927  * This must be called with current->sighand->siglock held.
1928  *
1929  * This should be the path for all ptrace stops.
1930  * We always set current->last_siginfo while stopped here.
1931  * That makes it a way to test a stopped process for
1932  * being ptrace-stopped vs being job-control-stopped.
1933  *
1934  * If we actually decide not to stop at all because the tracer
1935  * is gone, we keep current->exit_code unless clear_code.
1936  */
1937 static void ptrace_stop(int exit_code, int why, int clear_code, siginfo_t *info)
1938         __releases(&current->sighand->siglock)
1939         __acquires(&current->sighand->siglock)
1940 {
1941         bool gstop_done = false;
1942
1943         if (arch_ptrace_stop_needed(exit_code, info)) {
1944                 /*
1945                  * The arch code has something special to do before a
1946                  * ptrace stop.  This is allowed to block, e.g. for faults
1947                  * on user stack pages.  We can't keep the siglock while
1948                  * calling arch_ptrace_stop, so we must release it now.
1949                  * To preserve proper semantics, we must do this before
1950                  * any signal bookkeeping like checking group_stop_count.
1951                  * Meanwhile, a SIGKILL could come in before we retake the
1952                  * siglock.  That must prevent us from sleeping in TASK_TRACED.
1953                  * So after regaining the lock, we must check for SIGKILL.
1954                  */
1955                 spin_unlock_irq(&current->sighand->siglock);
1956                 arch_ptrace_stop(exit_code, info);
1957                 spin_lock_irq(&current->sighand->siglock);
1958                 if (sigkill_pending(current))
1959                         return;
1960         }
1961
1962         /*
1963          * We're committing to trapping.  TRACED should be visible before
1964          * TRAPPING is cleared; otherwise, the tracer might fail do_wait().
1965          * Also, transition to TRACED and updates to ->jobctl should be
1966          * atomic with respect to siglock and should be done after the arch
1967          * hook as siglock is released and regrabbed across it.
1968          */
1969         set_current_state(TASK_TRACED);
1970
1971         current->last_siginfo = info;
1972         current->exit_code = exit_code;
1973
1974         /*
1975          * If @why is CLD_STOPPED, we're trapping to participate in a group
1976          * stop.  Do the bookkeeping.  Note that if SIGCONT was delievered
1977          * across siglock relocks since INTERRUPT was scheduled, PENDING
1978          * could be clear now.  We act as if SIGCONT is received after
1979          * TASK_TRACED is entered - ignore it.
1980          */
1981         if (why == CLD_STOPPED && (current->jobctl & JOBCTL_STOP_PENDING))
1982                 gstop_done = task_participate_group_stop(current);
1983
1984         /* any trap clears pending STOP trap, STOP trap clears NOTIFY */
1985         task_clear_jobctl_pending(current, JOBCTL_TRAP_STOP);
1986         if (info && info->si_code >> 8 == PTRACE_EVENT_STOP)
1987                 task_clear_jobctl_pending(current, JOBCTL_TRAP_NOTIFY);
1988
1989         /* entering a trap, clear TRAPPING */
1990         task_clear_jobctl_trapping(current);
1991
1992         spin_unlock_irq(&current->sighand->siglock);
1993         read_lock(&tasklist_lock);
1994         if (may_ptrace_stop()) {
1995                 /*
1996                  * Notify parents of the stop.
1997                  *
1998                  * While ptraced, there are two parents - the ptracer and
1999                  * the real_parent of the group_leader.  The ptracer should
2000                  * know about every stop while the real parent is only
2001                  * interested in the completion of group stop.  The states
2002                  * for the two don't interact with each other.  Notify
2003                  * separately unless they're gonna be duplicates.
2004                  */
2005                 do_notify_parent_cldstop(current, true, why);
2006                 if (gstop_done && ptrace_reparented(current))
2007                         do_notify_parent_cldstop(current, false, why);
2008
2009                 /*
2010                  * Don't want to allow preemption here, because
2011                  * sys_ptrace() needs this task to be inactive.
2012                  *
2013                  * XXX: implement read_unlock_no_resched().
2014                  */
2015                 preempt_disable();
2016                 read_unlock(&tasklist_lock);
2017                 preempt_enable_no_resched();
2018                 freezable_schedule();
2019         } else {
2020                 /*
2021                  * By the time we got the lock, our tracer went away.
2022                  * Don't drop the lock yet, another tracer may come.
2023                  *
2024                  * If @gstop_done, the ptracer went away between group stop
2025                  * completion and here.  During detach, it would have set
2026                  * JOBCTL_STOP_PENDING on us and we'll re-enter
2027                  * TASK_STOPPED in do_signal_stop() on return, so notifying
2028                  * the real parent of the group stop completion is enough.
2029                  */
2030                 if (gstop_done)
2031                         do_notify_parent_cldstop(current, false, why);
2032
2033                 /* tasklist protects us from ptrace_freeze_traced() */
2034                 __set_current_state(TASK_RUNNING);
2035                 if (clear_code)
2036                         current->exit_code = 0;
2037                 read_unlock(&tasklist_lock);
2038         }
2039
2040         /*
2041          * We are back.  Now reacquire the siglock before touching
2042          * last_siginfo, so that we are sure to have synchronized with
2043          * any signal-sending on another CPU that wants to examine it.
2044          */
2045         spin_lock_irq(&current->sighand->siglock);
2046         current->last_siginfo = NULL;
2047
2048         /* LISTENING can be set only during STOP traps, clear it */
2049         current->jobctl &= ~JOBCTL_LISTENING;
2050
2051         /*
2052          * Queued signals ignored us while we were stopped for tracing.
2053          * So check for any that we should take before resuming user mode.
2054          * This sets TIF_SIGPENDING, but never clears it.
2055          */
2056         recalc_sigpending_tsk(current);
2057 }
2058
2059 static void ptrace_do_notify(int signr, int exit_code, int why)
2060 {
2061         siginfo_t info;
2062
2063         clear_siginfo(&info);
2064         info.si_signo = signr;
2065         info.si_code = exit_code;
2066         info.si_pid = task_pid_vnr(current);
2067         info.si_uid = from_kuid_munged(current_user_ns(), current_uid());
2068
2069         /* Let the debugger run.  */
2070         ptrace_stop(exit_code, why, 1, &info);
2071 }
2072
2073 void ptrace_notify(int exit_code)
2074 {
2075         BUG_ON((exit_code & (0x7f | ~0xffff)) != SIGTRAP);
2076         if (unlikely(current->task_works))
2077                 task_work_run();
2078
2079         spin_lock_irq(&current->sighand->siglock);
2080         ptrace_do_notify(SIGTRAP, exit_code, CLD_TRAPPED);
2081         spin_unlock_irq(&current->sighand->siglock);
2082 }
2083
2084 /**
2085  * do_signal_stop - handle group stop for SIGSTOP and other stop signals
2086  * @signr: signr causing group stop if initiating
2087  *
2088  * If %JOBCTL_STOP_PENDING is not set yet, initiate group stop with @signr
2089  * and participate in it.  If already set, participate in the existing
2090  * group stop.  If participated in a group stop (and thus slept), %true is
2091  * returned with siglock released.
2092  *
2093  * If ptraced, this function doesn't handle stop itself.  Instead,
2094  * %JOBCTL_TRAP_STOP is scheduled and %false is returned with siglock
2095  * untouched.  The caller must ensure that INTERRUPT trap handling takes
2096  * places afterwards.
2097  *
2098  * CONTEXT:
2099  * Must be called with @current->sighand->siglock held, which is released
2100  * on %true return.
2101  *
2102  * RETURNS:
2103  * %false if group stop is already cancelled or ptrace trap is scheduled.
2104  * %true if participated in group stop.
2105  */
2106 static bool do_signal_stop(int signr)
2107         __releases(&current->sighand->siglock)
2108 {
2109         struct signal_struct *sig = current->signal;
2110
2111         if (!(current->jobctl & JOBCTL_STOP_PENDING)) {
2112                 unsigned long gstop = JOBCTL_STOP_PENDING | JOBCTL_STOP_CONSUME;
2113                 struct task_struct *t;
2114
2115                 /* signr will be recorded in task->jobctl for retries */
2116                 WARN_ON_ONCE(signr & ~JOBCTL_STOP_SIGMASK);
2117
2118                 if (!likely(current->jobctl & JOBCTL_STOP_DEQUEUED) ||
2119                     unlikely(signal_group_exit(sig)))
2120                         return false;
2121                 /*
2122                  * There is no group stop already in progress.  We must
2123                  * initiate one now.
2124                  *
2125                  * While ptraced, a task may be resumed while group stop is
2126                  * still in effect and then receive a stop signal and
2127                  * initiate another group stop.  This deviates from the
2128                  * usual behavior as two consecutive stop signals can't
2129                  * cause two group stops when !ptraced.  That is why we
2130                  * also check !task_is_stopped(t) below.
2131                  *
2132                  * The condition can be distinguished by testing whether
2133                  * SIGNAL_STOP_STOPPED is already set.  Don't generate
2134                  * group_exit_code in such case.
2135                  *
2136                  * This is not necessary for SIGNAL_STOP_CONTINUED because
2137                  * an intervening stop signal is required to cause two
2138                  * continued events regardless of ptrace.
2139                  */
2140                 if (!(sig->flags & SIGNAL_STOP_STOPPED))
2141                         sig->group_exit_code = signr;
2142
2143                 sig->group_stop_count = 0;
2144
2145                 if (task_set_jobctl_pending(current, signr | gstop))
2146                         sig->group_stop_count++;
2147
2148                 t = current;
2149                 while_each_thread(current, t) {
2150                         /*
2151                          * Setting state to TASK_STOPPED for a group
2152                          * stop is always done with the siglock held,
2153                          * so this check has no races.
2154                          */
2155                         if (!task_is_stopped(t) &&
2156                             task_set_jobctl_pending(t, signr | gstop)) {
2157                                 sig->group_stop_count++;
2158                                 if (likely(!(t->ptrace & PT_SEIZED)))
2159                                         signal_wake_up(t, 0);
2160                                 else
2161                                         ptrace_trap_notify(t);
2162                         }
2163                 }
2164         }
2165
2166         if (likely(!current->ptrace)) {
2167                 int notify = 0;
2168
2169                 /*
2170                  * If there are no other threads in the group, or if there
2171                  * is a group stop in progress and we are the last to stop,
2172                  * report to the parent.
2173                  */
2174                 if (task_participate_group_stop(current))
2175                         notify = CLD_STOPPED;
2176
2177                 __set_current_state(TASK_STOPPED);
2178                 spin_unlock_irq(&current->sighand->siglock);
2179
2180                 /*
2181                  * Notify the parent of the group stop completion.  Because
2182                  * we're not holding either the siglock or tasklist_lock
2183                  * here, ptracer may attach inbetween; however, this is for
2184                  * group stop and should always be delivered to the real
2185                  * parent of the group leader.  The new ptracer will get
2186                  * its notification when this task transitions into
2187                  * TASK_TRACED.
2188                  */
2189                 if (notify) {
2190                         read_lock(&tasklist_lock);
2191                         do_notify_parent_cldstop(current, false, notify);
2192                         read_unlock(&tasklist_lock);
2193                 }
2194
2195                 /* Now we don't run again until woken by SIGCONT or SIGKILL */
2196                 freezable_schedule();
2197                 return true;
2198         } else {
2199                 /*
2200                  * While ptraced, group stop is handled by STOP trap.
2201                  * Schedule it and let the caller deal with it.
2202                  */
2203                 task_set_jobctl_pending(current, JOBCTL_TRAP_STOP);
2204                 return false;
2205         }
2206 }
2207
2208 /**
2209  * do_jobctl_trap - take care of ptrace jobctl traps
2210  *
2211  * When PT_SEIZED, it's used for both group stop and explicit
2212  * SEIZE/INTERRUPT traps.  Both generate PTRACE_EVENT_STOP trap with
2213  * accompanying siginfo.  If stopped, lower eight bits of exit_code contain
2214  * the stop signal; otherwise, %SIGTRAP.
2215  *
2216  * When !PT_SEIZED, it's used only for group stop trap with stop signal
2217  * number as exit_code and no siginfo.
2218  *
2219  * CONTEXT:
2220  * Must be called with @current->sighand->siglock held, which may be
2221  * released and re-acquired before returning with intervening sleep.
2222  */
2223 static void do_jobctl_trap(void)
2224 {
2225         struct signal_struct *signal = current->signal;
2226         int signr = current->jobctl & JOBCTL_STOP_SIGMASK;
2227
2228         if (current->ptrace & PT_SEIZED) {
2229                 if (!signal->group_stop_count &&
2230                     !(signal->flags & SIGNAL_STOP_STOPPED))
2231                         signr = SIGTRAP;
2232                 WARN_ON_ONCE(!signr);
2233                 ptrace_do_notify(signr, signr | (PTRACE_EVENT_STOP << 8),
2234                                  CLD_STOPPED);
2235         } else {
2236                 WARN_ON_ONCE(!signr);
2237                 ptrace_stop(signr, CLD_STOPPED, 0, NULL);
2238                 current->exit_code = 0;
2239         }
2240 }
2241
2242 static int ptrace_signal(int signr, siginfo_t *info)
2243 {
2244         /*
2245          * We do not check sig_kernel_stop(signr) but set this marker
2246          * unconditionally because we do not know whether debugger will
2247          * change signr. This flag has no meaning unless we are going
2248          * to stop after return from ptrace_stop(). In this case it will
2249          * be checked in do_signal_stop(), we should only stop if it was
2250          * not cleared by SIGCONT while we were sleeping. See also the
2251          * comment in dequeue_signal().
2252          */
2253         current->jobctl |= JOBCTL_STOP_DEQUEUED;
2254         ptrace_stop(signr, CLD_TRAPPED, 0, info);
2255
2256         /* We're back.  Did the debugger cancel the sig?  */
2257         signr = current->exit_code;
2258         if (signr == 0)
2259                 return signr;
2260
2261         current->exit_code = 0;
2262
2263         /*
2264          * Update the siginfo structure if the signal has
2265          * changed.  If the debugger wanted something
2266          * specific in the siginfo structure then it should
2267          * have updated *info via PTRACE_SETSIGINFO.
2268          */
2269         if (signr != info->si_signo) {
2270                 clear_siginfo(info);
2271                 info->si_signo = signr;
2272                 info->si_errno = 0;
2273                 info->si_code = SI_USER;
2274                 rcu_read_lock();
2275                 info->si_pid = task_pid_vnr(current->parent);
2276                 info->si_uid = from_kuid_munged(current_user_ns(),
2277                                                 task_uid(current->parent));
2278                 rcu_read_unlock();
2279         }
2280
2281         /* If the (new) signal is now blocked, requeue it.  */
2282         if (sigismember(&current->blocked, signr)) {
2283                 specific_send_sig_info(signr, info, current);
2284                 signr = 0;
2285         }
2286
2287         return signr;
2288 }
2289
2290 int get_signal(struct ksignal *ksig)
2291 {
2292         struct sighand_struct *sighand = current->sighand;
2293         struct signal_struct *signal = current->signal;
2294         int signr;
2295
2296         if (unlikely(current->task_works))
2297                 task_work_run();
2298
2299         if (unlikely(uprobe_deny_signal()))
2300                 return 0;
2301
2302         /*
2303          * Do this once, we can't return to user-mode if freezing() == T.
2304          * do_signal_stop() and ptrace_stop() do freezable_schedule() and
2305          * thus do not need another check after return.
2306          */
2307         try_to_freeze();
2308
2309 relock:
2310         spin_lock_irq(&sighand->siglock);
2311         /*
2312          * Every stopped thread goes here after wakeup. Check to see if
2313          * we should notify the parent, prepare_signal(SIGCONT) encodes
2314          * the CLD_ si_code into SIGNAL_CLD_MASK bits.
2315          */
2316         if (unlikely(signal->flags & SIGNAL_CLD_MASK)) {
2317                 int why;
2318
2319                 if (signal->flags & SIGNAL_CLD_CONTINUED)
2320                         why = CLD_CONTINUED;
2321                 else
2322                         why = CLD_STOPPED;
2323
2324                 signal->flags &= ~SIGNAL_CLD_MASK;
2325
2326                 spin_unlock_irq(&sighand->siglock);
2327
2328                 /*
2329                  * Notify the parent that we're continuing.  This event is
2330                  * always per-process and doesn't make whole lot of sense
2331                  * for ptracers, who shouldn't consume the state via
2332                  * wait(2) either, but, for backward compatibility, notify
2333                  * the ptracer of the group leader too unless it's gonna be
2334                  * a duplicate.
2335                  */
2336                 read_lock(&tasklist_lock);
2337                 do_notify_parent_cldstop(current, false, why);
2338
2339                 if (ptrace_reparented(current->group_leader))
2340                         do_notify_parent_cldstop(current->group_leader,
2341                                                 true, why);
2342                 read_unlock(&tasklist_lock);
2343
2344                 goto relock;
2345         }
2346
2347         for (;;) {
2348                 struct k_sigaction *ka;
2349
2350                 if (unlikely(current->jobctl & JOBCTL_STOP_PENDING) &&
2351                     do_signal_stop(0))
2352                         goto relock;
2353
2354                 if (unlikely(current->jobctl & JOBCTL_TRAP_MASK)) {
2355                         do_jobctl_trap();
2356                         spin_unlock_irq(&sighand->siglock);
2357                         goto relock;
2358                 }
2359
2360                 signr = dequeue_signal(current, &current->blocked, &ksig->info);
2361
2362                 if (!signr)
2363                         break; /* will return 0 */
2364
2365                 if (unlikely(current->ptrace) && signr != SIGKILL) {
2366                         signr = ptrace_signal(signr, &ksig->info);
2367                         if (!signr)
2368                                 continue;
2369                 }
2370
2371                 ka = &sighand->action[signr-1];
2372
2373                 /* Trace actually delivered signals. */
2374                 trace_signal_deliver(signr, &ksig->info, ka);
2375
2376                 if (ka->sa.sa_handler == SIG_IGN) /* Do nothing.  */
2377                         continue;
2378                 if (ka->sa.sa_handler != SIG_DFL) {
2379                         /* Run the handler.  */
2380                         ksig->ka = *ka;
2381
2382                         if (ka->sa.sa_flags & SA_ONESHOT)
2383                                 ka->sa.sa_handler = SIG_DFL;
2384
2385                         break; /* will return non-zero "signr" value */
2386                 }
2387
2388                 /*
2389                  * Now we are doing the default action for this signal.
2390                  */
2391                 if (sig_kernel_ignore(signr)) /* Default is nothing. */
2392                         continue;
2393
2394                 /*
2395                  * Global init gets no signals it doesn't want.
2396                  * Container-init gets no signals it doesn't want from same
2397                  * container.
2398                  *
2399                  * Note that if global/container-init sees a sig_kernel_only()
2400                  * signal here, the signal must have been generated internally
2401                  * or must have come from an ancestor namespace. In either
2402                  * case, the signal cannot be dropped.
2403                  */
2404                 if (unlikely(signal->flags & SIGNAL_UNKILLABLE) &&
2405                                 !sig_kernel_only(signr))
2406                         continue;
2407
2408                 if (sig_kernel_stop(signr)) {
2409                         /*
2410                          * The default action is to stop all threads in
2411                          * the thread group.  The job control signals
2412                          * do nothing in an orphaned pgrp, but SIGSTOP
2413                          * always works.  Note that siglock needs to be
2414                          * dropped during the call to is_orphaned_pgrp()
2415                          * because of lock ordering with tasklist_lock.
2416                          * This allows an intervening SIGCONT to be posted.
2417                          * We need to check for that and bail out if necessary.
2418                          */
2419                         if (signr != SIGSTOP) {
2420                                 spin_unlock_irq(&sighand->siglock);
2421
2422                                 /* signals can be posted during this window */
2423
2424                                 if (is_current_pgrp_orphaned())
2425                                         goto relock;
2426
2427                                 spin_lock_irq(&sighand->siglock);
2428                         }
2429
2430                         if (likely(do_signal_stop(ksig->info.si_signo))) {
2431                                 /* It released the siglock.  */
2432                                 goto relock;
2433                         }
2434
2435                         /*
2436                          * We didn't actually stop, due to a race
2437                          * with SIGCONT or something like that.
2438                          */
2439                         continue;
2440                 }
2441
2442                 spin_unlock_irq(&sighand->siglock);
2443
2444                 /*
2445                  * Anything else is fatal, maybe with a core dump.
2446                  */
2447                 current->flags |= PF_SIGNALED;
2448
2449                 if (sig_kernel_coredump(signr)) {
2450                         if (print_fatal_signals)
2451                                 print_fatal_signal(ksig->info.si_signo);
2452                         proc_coredump_connector(current);
2453                         /*
2454                          * If it was able to dump core, this kills all
2455                          * other threads in the group and synchronizes with
2456                          * their demise.  If we lost the race with another
2457                          * thread getting here, it set group_exit_code
2458                          * first and our do_group_exit call below will use
2459                          * that value and ignore the one we pass it.
2460                          */
2461                         do_coredump(&ksig->info);
2462                 }
2463
2464                 /*
2465                  * Death signals, no core dump.
2466                  */
2467                 do_group_exit(ksig->info.si_signo);
2468                 /* NOTREACHED */
2469         }
2470         spin_unlock_irq(&sighand->siglock);
2471
2472         ksig->sig = signr;
2473         return ksig->sig > 0;
2474 }
2475
2476 /**
2477  * signal_delivered - 
2478  * @ksig:               kernel signal struct
2479  * @stepping:           nonzero if debugger single-step or block-step in use
2480  *
2481  * This function should be called when a signal has successfully been
2482  * delivered. It updates the blocked signals accordingly (@ksig->ka.sa.sa_mask
2483  * is always blocked, and the signal itself is blocked unless %SA_NODEFER
2484  * is set in @ksig->ka.sa.sa_flags.  Tracing is notified.
2485  */
2486 static void signal_delivered(struct ksignal *ksig, int stepping)
2487 {
2488         sigset_t blocked;
2489
2490         /* A signal was successfully delivered, and the
2491            saved sigmask was stored on the signal frame,
2492            and will be restored by sigreturn.  So we can
2493            simply clear the restore sigmask flag.  */
2494         clear_restore_sigmask();
2495
2496         sigorsets(&blocked, &current->blocked, &ksig->ka.sa.sa_mask);
2497         if (!(ksig->ka.sa.sa_flags & SA_NODEFER))
2498                 sigaddset(&blocked, ksig->sig);
2499         set_current_blocked(&blocked);
2500         tracehook_signal_handler(stepping);
2501 }
2502
2503 void signal_setup_done(int failed, struct ksignal *ksig, int stepping)
2504 {
2505         if (failed)
2506                 force_sigsegv(ksig->sig, current);
2507         else
2508                 signal_delivered(ksig, stepping);
2509 }
2510
2511 /*
2512  * It could be that complete_signal() picked us to notify about the
2513  * group-wide signal. Other threads should be notified now to take
2514  * the shared signals in @which since we will not.
2515  */
2516 static void retarget_shared_pending(struct task_struct *tsk, sigset_t *which)
2517 {
2518         sigset_t retarget;
2519         struct task_struct *t;
2520
2521         sigandsets(&retarget, &tsk->signal->shared_pending.signal, which);
2522         if (sigisemptyset(&retarget))
2523                 return;
2524
2525         t = tsk;
2526         while_each_thread(tsk, t) {
2527                 if (t->flags & PF_EXITING)
2528                         continue;
2529
2530                 if (!has_pending_signals(&retarget, &t->blocked))
2531                         continue;
2532                 /* Remove the signals this thread can handle. */
2533                 sigandsets(&retarget, &retarget, &t->blocked);
2534
2535                 if (!signal_pending(t))
2536                         signal_wake_up(t, 0);
2537
2538                 if (sigisemptyset(&retarget))
2539                         break;
2540         }
2541 }
2542
2543 void exit_signals(struct task_struct *tsk)
2544 {
2545         int group_stop = 0;
2546         sigset_t unblocked;
2547
2548         /*
2549          * @tsk is about to have PF_EXITING set - lock out users which
2550          * expect stable threadgroup.
2551          */
2552         cgroup_threadgroup_change_begin(tsk);
2553
2554         if (thread_group_empty(tsk) || signal_group_exit(tsk->signal)) {
2555                 tsk->flags |= PF_EXITING;
2556                 cgroup_threadgroup_change_end(tsk);
2557                 return;
2558         }
2559
2560         spin_lock_irq(&tsk->sighand->siglock);
2561         /*
2562          * From now this task is not visible for group-wide signals,
2563          * see wants_signal(), do_signal_stop().
2564          */
2565         tsk->flags |= PF_EXITING;
2566
2567         cgroup_threadgroup_change_end(tsk);
2568
2569         if (!signal_pending(tsk))
2570                 goto out;
2571
2572         unblocked = tsk->blocked;
2573         signotset(&unblocked);
2574         retarget_shared_pending(tsk, &unblocked);
2575
2576         if (unlikely(tsk->jobctl & JOBCTL_STOP_PENDING) &&
2577             task_participate_group_stop(tsk))
2578                 group_stop = CLD_STOPPED;
2579 out:
2580         spin_unlock_irq(&tsk->sighand->siglock);
2581
2582         /*
2583          * If group stop has completed, deliver the notification.  This
2584          * should always go to the real parent of the group leader.
2585          */
2586         if (unlikely(group_stop)) {
2587                 read_lock(&tasklist_lock);
2588                 do_notify_parent_cldstop(tsk, false, group_stop);
2589                 read_unlock(&tasklist_lock);
2590         }
2591 }
2592
2593 EXPORT_SYMBOL(recalc_sigpending);
2594 EXPORT_SYMBOL_GPL(dequeue_signal);
2595 EXPORT_SYMBOL(flush_signals);
2596 EXPORT_SYMBOL(force_sig);
2597 EXPORT_SYMBOL(send_sig);
2598 EXPORT_SYMBOL(send_sig_info);
2599 EXPORT_SYMBOL(sigprocmask);
2600
2601 /*
2602  * System call entry points.
2603  */
2604
2605 /**
2606  *  sys_restart_syscall - restart a system call
2607  */
2608 SYSCALL_DEFINE0(restart_syscall)
2609 {
2610         struct restart_block *restart = &current->restart_block;
2611         return restart->fn(restart);
2612 }
2613
2614 long do_no_restart_syscall(struct restart_block *param)
2615 {
2616         return -EINTR;
2617 }
2618
2619 static void __set_task_blocked(struct task_struct *tsk, const sigset_t *newset)
2620 {
2621         if (signal_pending(tsk) && !thread_group_empty(tsk)) {
2622                 sigset_t newblocked;
2623                 /* A set of now blocked but previously unblocked signals. */
2624                 sigandnsets(&newblocked, newset, &current->blocked);
2625                 retarget_shared_pending(tsk, &newblocked);
2626         }
2627         tsk->blocked = *newset;
2628         recalc_sigpending();
2629 }
2630
2631 /**
2632  * set_current_blocked - change current->blocked mask
2633  * @newset: new mask
2634  *
2635  * It is wrong to change ->blocked directly, this helper should be used
2636  * to ensure the process can't miss a shared signal we are going to block.
2637  */
2638 void set_current_blocked(sigset_t *newset)
2639 {
2640         sigdelsetmask(newset, sigmask(SIGKILL) | sigmask(SIGSTOP));
2641         __set_current_blocked(newset);
2642 }
2643
2644 void __set_current_blocked(const sigset_t *newset)
2645 {
2646         struct task_struct *tsk = current;
2647
2648         /*
2649          * In case the signal mask hasn't changed, there is nothing we need
2650          * to do. The current->blocked shouldn't be modified by other task.
2651          */
2652         if (sigequalsets(&tsk->blocked, newset))
2653                 return;
2654
2655         spin_lock_irq(&tsk->sighand->siglock);
2656         __set_task_blocked(tsk, newset);
2657         spin_unlock_irq(&tsk->sighand->siglock);
2658 }
2659
2660 /*
2661  * This is also useful for kernel threads that want to temporarily
2662  * (or permanently) block certain signals.
2663  *
2664  * NOTE! Unlike the user-mode sys_sigprocmask(), the kernel
2665  * interface happily blocks "unblockable" signals like SIGKILL
2666  * and friends.
2667  */
2668 int sigprocmask(int how, sigset_t *set, sigset_t *oldset)
2669 {
2670         struct task_struct *tsk = current;
2671         sigset_t newset;
2672
2673         /* Lockless, only current can change ->blocked, never from irq */
2674         if (oldset)
2675                 *oldset = tsk->blocked;
2676
2677         switch (how) {
2678         case SIG_BLOCK:
2679                 sigorsets(&newset, &tsk->blocked, set);
2680                 break;
2681         case SIG_UNBLOCK:
2682                 sigandnsets(&newset, &tsk->blocked, set);
2683                 break;
2684         case SIG_SETMASK:
2685                 newset = *set;
2686                 break;
2687         default:
2688                 return -EINVAL;
2689         }
2690
2691         __set_current_blocked(&newset);
2692         return 0;
2693 }
2694
2695 /**
2696  *  sys_rt_sigprocmask - change the list of currently blocked signals
2697  *  @how: whether to add, remove, or set signals
2698  *  @nset: stores pending signals
2699  *  @oset: previous value of signal mask if non-null
2700  *  @sigsetsize: size of sigset_t type
2701  */
2702 SYSCALL_DEFINE4(rt_sigprocmask, int, how, sigset_t __user *, nset,
2703                 sigset_t __user *, oset, size_t, sigsetsize)
2704 {
2705         sigset_t old_set, new_set;
2706         int error;
2707
2708         /* XXX: Don't preclude handling different sized sigset_t's.  */
2709         if (sigsetsize != sizeof(sigset_t))
2710                 return -EINVAL;
2711
2712         old_set = current->blocked;
2713
2714         if (nset) {
2715                 if (copy_from_user(&new_set, nset, sizeof(sigset_t)))
2716                         return -EFAULT;
2717                 sigdelsetmask(&new_set, sigmask(SIGKILL)|sigmask(SIGSTOP));
2718
2719                 error = sigprocmask(how, &new_set, NULL);
2720                 if (error)
2721                         return error;
2722         }
2723
2724         if (oset) {
2725                 if (copy_to_user(oset, &old_set, sizeof(sigset_t)))
2726                         return -EFAULT;
2727         }
2728
2729         return 0;
2730 }
2731
2732 #ifdef CONFIG_COMPAT
2733 COMPAT_SYSCALL_DEFINE4(rt_sigprocmask, int, how, compat_sigset_t __user *, nset,
2734                 compat_sigset_t __user *, oset, compat_size_t, sigsetsize)
2735 {
2736         sigset_t old_set = current->blocked;
2737
2738         /* XXX: Don't preclude handling different sized sigset_t's.  */
2739         if (sigsetsize != sizeof(sigset_t))
2740                 return -EINVAL;
2741
2742         if (nset) {
2743                 sigset_t new_set;
2744                 int error;
2745                 if (get_compat_sigset(&new_set, nset))
2746                         return -EFAULT;
2747                 sigdelsetmask(&new_set, sigmask(SIGKILL)|sigmask(SIGSTOP));
2748
2749                 error = sigprocmask(how, &new_set, NULL);
2750                 if (error)
2751                         return error;
2752         }
2753         return oset ? put_compat_sigset(oset, &old_set, sizeof(*oset)) : 0;
2754 }
2755 #endif
2756
2757 static int do_sigpending(sigset_t *set)
2758 {
2759         spin_lock_irq(&current->sighand->siglock);
2760         sigorsets(set, &current->pending.signal,
2761                   &current->signal->shared_pending.signal);
2762         spin_unlock_irq(&current->sighand->siglock);
2763
2764         /* Outside the lock because only this thread touches it.  */
2765         sigandsets(set, &current->blocked, set);
2766         return 0;
2767 }
2768
2769 /**
2770  *  sys_rt_sigpending - examine a pending signal that has been raised
2771  *                      while blocked
2772  *  @uset: stores pending signals
2773  *  @sigsetsize: size of sigset_t type or larger
2774  */
2775 SYSCALL_DEFINE2(rt_sigpending, sigset_t __user *, uset, size_t, sigsetsize)
2776 {
2777         sigset_t set;
2778         int err;
2779
2780         if (sigsetsize > sizeof(*uset))
2781                 return -EINVAL;
2782
2783         err = do_sigpending(&set);
2784         if (!err && copy_to_user(uset, &set, sigsetsize))
2785                 err = -EFAULT;
2786         return err;
2787 }
2788
2789 #ifdef CONFIG_COMPAT
2790 COMPAT_SYSCALL_DEFINE2(rt_sigpending, compat_sigset_t __user *, uset,
2791                 compat_size_t, sigsetsize)
2792 {
2793         sigset_t set;
2794         int err;
2795
2796         if (sigsetsize > sizeof(*uset))
2797                 return -EINVAL;
2798
2799         err = do_sigpending(&set);
2800         if (!err)
2801                 err = put_compat_sigset(uset, &set, sigsetsize);
2802         return err;
2803 }
2804 #endif
2805
2806 enum siginfo_layout siginfo_layout(int sig, int si_code)
2807 {
2808         enum siginfo_layout layout = SIL_KILL;
2809         if ((si_code > SI_USER) && (si_code < SI_KERNEL)) {
2810                 static const struct {
2811                         unsigned char limit, layout;
2812                 } filter[] = {
2813                         [SIGILL]  = { NSIGILL,  SIL_FAULT },
2814                         [SIGFPE]  = { NSIGFPE,  SIL_FAULT },
2815                         [SIGSEGV] = { NSIGSEGV, SIL_FAULT },
2816                         [SIGBUS]  = { NSIGBUS,  SIL_FAULT },
2817                         [SIGTRAP] = { NSIGTRAP, SIL_FAULT },
2818 #if defined(SIGEMT) && defined(NSIGEMT)
2819                         [SIGEMT]  = { NSIGEMT,  SIL_FAULT },
2820 #endif
2821                         [SIGCHLD] = { NSIGCHLD, SIL_CHLD },
2822                         [SIGPOLL] = { NSIGPOLL, SIL_POLL },
2823                         [SIGSYS]  = { NSIGSYS,  SIL_SYS },
2824                 };
2825                 if ((sig < ARRAY_SIZE(filter)) && (si_code <= filter[sig].limit))
2826                         layout = filter[sig].layout;
2827                 else if (si_code <= NSIGPOLL)
2828                         layout = SIL_POLL;
2829         } else {
2830                 if (si_code == SI_TIMER)
2831                         layout = SIL_TIMER;
2832                 else if (si_code == SI_SIGIO)
2833                         layout = SIL_POLL;
2834                 else if (si_code < 0)
2835                         layout = SIL_RT;
2836                 /* Tests to support buggy kernel ABIs */
2837 #ifdef TRAP_FIXME
2838                 if ((sig == SIGTRAP) && (si_code == TRAP_FIXME))
2839                         layout = SIL_FAULT;
2840 #endif
2841 #ifdef FPE_FIXME
2842                 if ((sig == SIGFPE) && (si_code == FPE_FIXME))
2843                         layout = SIL_FAULT;
2844 #endif
2845 #ifdef BUS_FIXME
2846                 if ((sig == SIGBUS) && (si_code == BUS_FIXME))
2847                         layout = SIL_FAULT;
2848 #endif
2849         }
2850         return layout;
2851 }
2852
2853 int copy_siginfo_to_user(siginfo_t __user *to, const siginfo_t *from)
2854 {
2855         int err;
2856
2857         if (!access_ok (VERIFY_WRITE, to, sizeof(siginfo_t)))
2858                 return -EFAULT;
2859         if (from->si_code < 0)
2860                 return __copy_to_user(to, from, sizeof(siginfo_t))
2861                         ? -EFAULT : 0;
2862         /*
2863          * If you change siginfo_t structure, please be sure
2864          * this code is fixed accordingly.
2865          * Please remember to update the signalfd_copyinfo() function
2866          * inside fs/signalfd.c too, in case siginfo_t changes.
2867          * It should never copy any pad contained in the structure
2868          * to avoid security leaks, but must copy the generic
2869          * 3 ints plus the relevant union member.
2870          */
2871         err = __put_user(from->si_signo, &to->si_signo);
2872         err |= __put_user(from->si_errno, &to->si_errno);
2873         err |= __put_user(from->si_code, &to->si_code);
2874         switch (siginfo_layout(from->si_signo, from->si_code)) {
2875         case SIL_KILL:
2876                 err |= __put_user(from->si_pid, &to->si_pid);
2877                 err |= __put_user(from->si_uid, &to->si_uid);
2878                 break;
2879         case SIL_TIMER:
2880                 /* Unreached SI_TIMER is negative */
2881                 break;
2882         case SIL_POLL:
2883                 err |= __put_user(from->si_band, &to->si_band);
2884                 err |= __put_user(from->si_fd, &to->si_fd);
2885                 break;
2886         case SIL_FAULT:
2887                 err |= __put_user(from->si_addr, &to->si_addr);
2888 #ifdef __ARCH_SI_TRAPNO
2889                 err |= __put_user(from->si_trapno, &to->si_trapno);
2890 #endif
2891 #ifdef __ia64__
2892                 err |= __put_user(from->si_imm, &to->si_imm);
2893                 err |= __put_user(from->si_flags, &to->si_flags);
2894                 err |= __put_user(from->si_isr, &to->si_isr);
2895 #endif
2896                 /*
2897                  * Other callers might not initialize the si_lsb field,
2898                  * so check explicitly for the right codes here.
2899                  */
2900 #ifdef BUS_MCEERR_AR
2901                 if (from->si_signo == SIGBUS && from->si_code == BUS_MCEERR_AR)
2902                         err |= __put_user(from->si_addr_lsb, &to->si_addr_lsb);
2903 #endif
2904 #ifdef BUS_MCEERR_AO
2905                 if (from->si_signo == SIGBUS && from->si_code == BUS_MCEERR_AO)
2906                         err |= __put_user(from->si_addr_lsb, &to->si_addr_lsb);
2907 #endif
2908 #ifdef SEGV_BNDERR
2909                 if (from->si_signo == SIGSEGV && from->si_code == SEGV_BNDERR) {
2910                         err |= __put_user(from->si_lower, &to->si_lower);
2911                         err |= __put_user(from->si_upper, &to->si_upper);
2912                 }
2913 #endif
2914 #ifdef SEGV_PKUERR
2915                 if (from->si_signo == SIGSEGV && from->si_code == SEGV_PKUERR)
2916                         err |= __put_user(from->si_pkey, &to->si_pkey);
2917 #endif
2918                 break;
2919         case SIL_CHLD:
2920                 err |= __put_user(from->si_pid, &to->si_pid);
2921                 err |= __put_user(from->si_uid, &to->si_uid);
2922                 err |= __put_user(from->si_status, &to->si_status);
2923                 err |= __put_user(from->si_utime, &to->si_utime);
2924                 err |= __put_user(from->si_stime, &to->si_stime);
2925                 break;
2926         case SIL_RT:
2927                 err |= __put_user(from->si_pid, &to->si_pid);
2928                 err |= __put_user(from->si_uid, &to->si_uid);
2929                 err |= __put_user(from->si_ptr, &to->si_ptr);
2930                 break;
2931         case SIL_SYS:
2932                 err |= __put_user(from->si_call_addr, &to->si_call_addr);
2933                 err |= __put_user(from->si_syscall, &to->si_syscall);
2934                 err |= __put_user(from->si_arch, &to->si_arch);
2935                 break;
2936         }
2937         return err;
2938 }
2939
2940 #ifdef CONFIG_COMPAT
2941 int copy_siginfo_to_user32(struct compat_siginfo __user *to,
2942                            const struct siginfo *from)
2943 #if defined(CONFIG_X86_X32_ABI) || defined(CONFIG_IA32_EMULATION)
2944 {
2945         return __copy_siginfo_to_user32(to, from, in_x32_syscall());
2946 }
2947 int __copy_siginfo_to_user32(struct compat_siginfo __user *to,
2948                              const struct siginfo *from, bool x32_ABI)
2949 #endif
2950 {
2951         struct compat_siginfo new;
2952         memset(&new, 0, sizeof(new));
2953
2954         new.si_signo = from->si_signo;
2955         new.si_errno = from->si_errno;
2956         new.si_code  = from->si_code;
2957         switch(siginfo_layout(from->si_signo, from->si_code)) {
2958         case SIL_KILL:
2959                 new.si_pid = from->si_pid;
2960                 new.si_uid = from->si_uid;
2961                 break;
2962         case SIL_TIMER:
2963                 new.si_tid     = from->si_tid;
2964                 new.si_overrun = from->si_overrun;
2965                 new.si_int     = from->si_int;
2966                 break;
2967         case SIL_POLL:
2968                 new.si_band = from->si_band;
2969                 new.si_fd   = from->si_fd;
2970                 break;
2971         case SIL_FAULT:
2972                 new.si_addr = ptr_to_compat(from->si_addr);
2973 #ifdef __ARCH_SI_TRAPNO
2974                 new.si_trapno = from->si_trapno;
2975 #endif
2976 #ifdef BUS_MCEERR_AR
2977                 if ((from->si_signo == SIGBUS) && (from->si_code == BUS_MCEERR_AR))
2978                         new.si_addr_lsb = from->si_addr_lsb;
2979 #endif
2980 #ifdef BUS_MCEERR_AO
2981                 if ((from->si_signo == SIGBUS) && (from->si_code == BUS_MCEERR_AO))
2982                         new.si_addr_lsb = from->si_addr_lsb;
2983 #endif
2984 #ifdef SEGV_BNDERR
2985                 if ((from->si_signo == SIGSEGV) &&
2986                     (from->si_code == SEGV_BNDERR)) {
2987                         new.si_lower = ptr_to_compat(from->si_lower);
2988                         new.si_upper = ptr_to_compat(from->si_upper);
2989                 }
2990 #endif
2991 #ifdef SEGV_PKUERR
2992                 if ((from->si_signo == SIGSEGV) &&
2993                     (from->si_code == SEGV_PKUERR))
2994                         new.si_pkey = from->si_pkey;
2995 #endif
2996
2997                 break;
2998         case SIL_CHLD:
2999                 new.si_pid    = from->si_pid;
3000                 new.si_uid    = from->si_uid;
3001                 new.si_status = from->si_status;
3002 #ifdef CONFIG_X86_X32_ABI
3003                 if (x32_ABI) {
3004                         new._sifields._sigchld_x32._utime = from->si_utime;
3005                         new._sifields._sigchld_x32._stime = from->si_stime;
3006                 } else
3007 #endif
3008                 {
3009                         new.si_utime = from->si_utime;
3010                         new.si_stime = from->si_stime;
3011                 }
3012                 break;
3013         case SIL_RT:
3014                 new.si_pid = from->si_pid;
3015                 new.si_uid = from->si_uid;
3016                 new.si_int = from->si_int;
3017                 break;
3018         case SIL_SYS:
3019                 new.si_call_addr = ptr_to_compat(from->si_call_addr);
3020                 new.si_syscall   = from->si_syscall;
3021                 new.si_arch      = from->si_arch;
3022                 break;
3023         }
3024
3025         if (copy_to_user(to, &new, sizeof(struct compat_siginfo)))
3026                 return -EFAULT;
3027
3028         return 0;
3029 }
3030
3031 int copy_siginfo_from_user32(struct siginfo *to,
3032                              const struct compat_siginfo __user *ufrom)
3033 {
3034         struct compat_siginfo from;
3035
3036         if (copy_from_user(&from, ufrom, sizeof(struct compat_siginfo)))
3037                 return -EFAULT;
3038
3039         clear_siginfo(to);
3040         to->si_signo = from.si_signo;
3041         to->si_errno = from.si_errno;
3042         to->si_code  = from.si_code;
3043         switch(siginfo_layout(from.si_signo, from.si_code)) {
3044         case SIL_KILL:
3045                 to->si_pid = from.si_pid;
3046                 to->si_uid = from.si_uid;
3047                 break;
3048         case SIL_TIMER:
3049                 to->si_tid     = from.si_tid;
3050                 to->si_overrun = from.si_overrun;
3051                 to->si_int     = from.si_int;
3052                 break;
3053         case SIL_POLL:
3054                 to->si_band = from.si_band;
3055                 to->si_fd   = from.si_fd;
3056                 break;
3057         case SIL_FAULT:
3058                 to->si_addr = compat_ptr(from.si_addr);
3059 #ifdef __ARCH_SI_TRAPNO
3060                 to->si_trapno = from.si_trapno;
3061 #endif
3062 #ifdef BUS_MCEERR_AR
3063                 if ((from.si_signo == SIGBUS) && (from.si_code == BUS_MCEERR_AR))
3064                         to->si_addr_lsb = from.si_addr_lsb;
3065 #endif
3066 #ifdef BUS_MCEER_AO
3067                 if ((from.si_signo == SIGBUS) && (from.si_code == BUS_MCEERR_AO))
3068                         to->si_addr_lsb = from.si_addr_lsb;
3069 #endif
3070 #ifdef SEGV_BNDERR
3071                 if ((from.si_signo == SIGSEGV) && (from.si_code == SEGV_BNDERR)) {
3072                         to->si_lower = compat_ptr(from.si_lower);
3073                         to->si_upper = compat_ptr(from.si_upper);
3074                 }
3075 #endif
3076 #ifdef SEGV_PKUERR
3077                 if ((from.si_signo == SIGSEGV) && (from.si_code == SEGV_PKUERR))
3078                         to->si_pkey = from.si_pkey;
3079 #endif
3080                 break;
3081         case SIL_CHLD:
3082                 to->si_pid    = from.si_pid;
3083                 to->si_uid    = from.si_uid;
3084                 to->si_status = from.si_status;
3085 #ifdef CONFIG_X86_X32_ABI
3086                 if (in_x32_syscall()) {
3087                         to->si_utime = from._sifields._sigchld_x32._utime;
3088                         to->si_stime = from._sifields._sigchld_x32._stime;
3089                 } else
3090 #endif
3091                 {
3092                         to->si_utime = from.si_utime;
3093                         to->si_stime = from.si_stime;
3094                 }
3095                 break;
3096         case SIL_RT:
3097                 to->si_pid = from.si_pid;
3098                 to->si_uid = from.si_uid;
3099                 to->si_int = from.si_int;
3100                 break;
3101         case SIL_SYS:
3102                 to->si_call_addr = compat_ptr(from.si_call_addr);
3103                 to->si_syscall   = from.si_syscall;
3104                 to->si_arch      = from.si_arch;
3105                 break;
3106         }
3107         return 0;
3108 }
3109 #endif /* CONFIG_COMPAT */
3110
3111 /**
3112  *  do_sigtimedwait - wait for queued signals specified in @which
3113  *  @which: queued signals to wait for
3114  *  @info: if non-null, the signal's siginfo is returned here
3115  *  @ts: upper bound on process time suspension
3116  */
3117 static int do_sigtimedwait(const sigset_t *which, siginfo_t *info,
3118                     const struct timespec *ts)
3119 {
3120         ktime_t *to = NULL, timeout = KTIME_MAX;
3121         struct task_struct *tsk = current;
3122         sigset_t mask = *which;
3123         int sig, ret = 0;
3124
3125         if (ts) {
3126                 if (!timespec_valid(ts))
3127                         return -EINVAL;
3128                 timeout = timespec_to_ktime(*ts);
3129                 to = &timeout;
3130         }
3131
3132         /*
3133          * Invert the set of allowed signals to get those we want to block.
3134          */
3135         sigdelsetmask(&mask, sigmask(SIGKILL) | sigmask(SIGSTOP));
3136         signotset(&mask);
3137
3138         spin_lock_irq(&tsk->sighand->siglock);
3139         sig = dequeue_signal(tsk, &mask, info);
3140         if (!sig && timeout) {
3141                 /*
3142                  * None ready, temporarily unblock those we're interested
3143                  * while we are sleeping in so that we'll be awakened when
3144                  * they arrive. Unblocking is always fine, we can avoid
3145                  * set_current_blocked().
3146                  */
3147                 tsk->real_blocked = tsk->blocked;
3148                 sigandsets(&tsk->blocked, &tsk->blocked, &mask);
3149                 recalc_sigpending();
3150                 spin_unlock_irq(&tsk->sighand->siglock);
3151
3152                 __set_current_state(TASK_INTERRUPTIBLE);
3153                 ret = freezable_schedule_hrtimeout_range(to, tsk->timer_slack_ns,
3154                                                          HRTIMER_MODE_REL);
3155                 spin_lock_irq(&tsk->sighand->siglock);
3156                 __set_task_blocked(tsk, &tsk->real_blocked);
3157                 sigemptyset(&tsk->real_blocked);
3158                 sig = dequeue_signal(tsk, &mask, info);
3159         }
3160         spin_unlock_irq(&tsk->sighand->siglock);
3161
3162         if (sig)
3163                 return sig;
3164         return ret ? -EINTR : -EAGAIN;
3165 }
3166
3167 /**
3168  *  sys_rt_sigtimedwait - synchronously wait for queued signals specified
3169  *                      in @uthese
3170  *  @uthese: queued signals to wait for
3171  *  @uinfo: if non-null, the signal's siginfo is returned here
3172  *  @uts: upper bound on process time suspension
3173  *  @sigsetsize: size of sigset_t type
3174  */
3175 SYSCALL_DEFINE4(rt_sigtimedwait, const sigset_t __user *, uthese,
3176                 siginfo_t __user *, uinfo, const struct timespec __user *, uts,
3177                 size_t, sigsetsize)
3178 {
3179         sigset_t these;
3180         struct timespec ts;
3181         siginfo_t info;
3182         int ret;
3183
3184         /* XXX: Don't preclude handling different sized sigset_t's.  */
3185         if (sigsetsize != sizeof(sigset_t))
3186                 return -EINVAL;
3187
3188         if (copy_from_user(&these, uthese, sizeof(these)))
3189                 return -EFAULT;
3190
3191         if (uts) {
3192                 if (copy_from_user(&ts, uts, sizeof(ts)))
3193                         return -EFAULT;
3194         }
3195
3196         ret = do_sigtimedwait(&these, &info, uts ? &ts : NULL);
3197
3198         if (ret > 0 && uinfo) {
3199                 if (copy_siginfo_to_user(uinfo, &info))
3200                         ret = -EFAULT;
3201         }
3202
3203         return ret;
3204 }
3205
3206 #ifdef CONFIG_COMPAT
3207 COMPAT_SYSCALL_DEFINE4(rt_sigtimedwait, compat_sigset_t __user *, uthese,
3208                 struct compat_siginfo __user *, uinfo,
3209                 struct compat_timespec __user *, uts, compat_size_t, sigsetsize)
3210 {
3211         sigset_t s;
3212         struct timespec t;
3213         siginfo_t info;
3214         long ret;
3215
3216         if (sigsetsize != sizeof(sigset_t))
3217                 return -EINVAL;
3218
3219         if (get_compat_sigset(&s, uthese))
3220                 return -EFAULT;
3221
3222         if (uts) {
3223                 if (compat_get_timespec(&t, uts))
3224                         return -EFAULT;
3225         }
3226
3227         ret = do_sigtimedwait(&s, &info, uts ? &t : NULL);
3228
3229         if (ret > 0 && uinfo) {
3230                 if (copy_siginfo_to_user32(uinfo, &info))
3231                         ret = -EFAULT;
3232         }
3233
3234         return ret;
3235 }
3236 #endif
3237
3238 /**
3239  *  sys_kill - send a signal to a process
3240  *  @pid: the PID of the process
3241  *  @sig: signal to be sent
3242  */
3243 SYSCALL_DEFINE2(kill, pid_t, pid, int, sig)
3244 {
3245         struct siginfo info;
3246
3247         clear_siginfo(&info);
3248         info.si_signo = sig;
3249         info.si_errno = 0;
3250         info.si_code = SI_USER;
3251         info.si_pid = task_tgid_vnr(current);
3252         info.si_uid = from_kuid_munged(current_user_ns(), current_uid());
3253
3254         return kill_something_info(sig, &info, pid);
3255 }
3256
3257 static int
3258 do_send_specific(pid_t tgid, pid_t pid, int sig, struct siginfo *info)
3259 {
3260         struct task_struct *p;
3261         int error = -ESRCH;
3262
3263         rcu_read_lock();
3264         p = find_task_by_vpid(pid);
3265         if (p && (tgid <= 0 || task_tgid_vnr(p) == tgid)) {
3266                 error = check_kill_permission(sig, info, p);
3267                 /*
3268                  * The null signal is a permissions and process existence
3269                  * probe.  No signal is actually delivered.
3270                  */
3271                 if (!error && sig) {
3272                         error = do_send_sig_info(sig, info, p, false);
3273                         /*
3274                          * If lock_task_sighand() failed we pretend the task
3275                          * dies after receiving the signal. The window is tiny,
3276                          * and the signal is private anyway.
3277                          */
3278                         if (unlikely(error == -ESRCH))
3279                                 error = 0;
3280                 }
3281         }
3282         rcu_read_unlock();
3283
3284         return error;
3285 }
3286
3287 static int do_tkill(pid_t tgid, pid_t pid, int sig)
3288 {
3289         struct siginfo info;
3290
3291         clear_siginfo(&info);
3292         info.si_signo = sig;
3293         info.si_errno = 0;
3294         info.si_code = SI_TKILL;
3295         info.si_pid = task_tgid_vnr(current);
3296         info.si_uid = from_kuid_munged(current_user_ns(), current_uid());
3297
3298         return do_send_specific(tgid, pid, sig, &info);
3299 }
3300
3301 /**
3302  *  sys_tgkill - send signal to one specific thread
3303  *  @tgid: the thread group ID of the thread
3304  *  @pid: the PID of the thread
3305  *  @sig: signal to be sent
3306  *
3307  *  This syscall also checks the @tgid and returns -ESRCH even if the PID
3308  *  exists but it's not belonging to the target process anymore. This
3309  *  method solves the problem of threads exiting and PIDs getting reused.
3310  */
3311 SYSCALL_DEFINE3(tgkill, pid_t, tgid, pid_t, pid, int, sig)
3312 {
3313         /* This is only valid for single tasks */
3314         if (pid <= 0 || tgid <= 0)
3315                 return -EINVAL;
3316
3317         return do_tkill(tgid, pid, sig);
3318 }
3319
3320 /**
3321  *  sys_tkill - send signal to one specific task
3322  *  @pid: the PID of the task
3323  *  @sig: signal to be sent
3324  *
3325  *  Send a signal to only one task, even if it's a CLONE_THREAD task.
3326  */
3327 SYSCALL_DEFINE2(tkill, pid_t, pid, int, sig)
3328 {
3329         /* This is only valid for single tasks */
3330         if (pid <= 0)
3331                 return -EINVAL;
3332
3333         return do_tkill(0, pid, sig);
3334 }
3335
3336 static int do_rt_sigqueueinfo(pid_t pid, int sig, siginfo_t *info)
3337 {
3338         /* Not even root can pretend to send signals from the kernel.
3339          * Nor can they impersonate a kill()/tgkill(), which adds source info.
3340          */
3341         if ((info->si_code >= 0 || info->si_code == SI_TKILL) &&
3342             (task_pid_vnr(current) != pid))
3343                 return -EPERM;
3344
3345         info->si_signo = sig;
3346
3347         /* POSIX.1b doesn't mention process groups.  */
3348         return kill_proc_info(sig, info, pid);
3349 }
3350
3351 /**
3352  *  sys_rt_sigqueueinfo - send signal information to a signal
3353  *  @pid: the PID of the thread
3354  *  @sig: signal to be sent
3355  *  @uinfo: signal info to be sent
3356  */
3357 SYSCALL_DEFINE3(rt_sigqueueinfo, pid_t, pid, int, sig,
3358                 siginfo_t __user *, uinfo)
3359 {
3360         siginfo_t info;
3361         if (copy_from_user(&info, uinfo, sizeof(siginfo_t)))
3362                 return -EFAULT;
3363         return do_rt_sigqueueinfo(pid, sig, &info);
3364 }
3365
3366 #ifdef CONFIG_COMPAT
3367 COMPAT_SYSCALL_DEFINE3(rt_sigqueueinfo,
3368                         compat_pid_t, pid,
3369                         int, sig,
3370                         struct compat_siginfo __user *, uinfo)
3371 {
3372         siginfo_t info;
3373         int ret = copy_siginfo_from_user32(&info, uinfo);
3374         if (unlikely(ret))
3375                 return ret;
3376         return do_rt_sigqueueinfo(pid, sig, &info);
3377 }
3378 #endif
3379
3380 static int do_rt_tgsigqueueinfo(pid_t tgid, pid_t pid, int sig, siginfo_t *info)
3381 {
3382         /* This is only valid for single tasks */
3383         if (pid <= 0 || tgid <= 0)
3384                 return -EINVAL;
3385
3386         /* Not even root can pretend to send signals from the kernel.
3387          * Nor can they impersonate a kill()/tgkill(), which adds source info.
3388          */
3389         if ((info->si_code >= 0 || info->si_code == SI_TKILL) &&
3390             (task_pid_vnr(current) != pid))
3391                 return -EPERM;
3392
3393         info->si_signo = sig;
3394
3395         return do_send_specific(tgid, pid, sig, info);
3396 }
3397
3398 SYSCALL_DEFINE4(rt_tgsigqueueinfo, pid_t, tgid, pid_t, pid, int, sig,
3399                 siginfo_t __user *, uinfo)
3400 {
3401         siginfo_t info;
3402
3403         if (copy_from_user(&info, uinfo, sizeof(siginfo_t)))
3404                 return -EFAULT;
3405
3406         return do_rt_tgsigqueueinfo(tgid, pid, sig, &info);
3407 }
3408
3409 #ifdef CONFIG_COMPAT
3410 COMPAT_SYSCALL_DEFINE4(rt_tgsigqueueinfo,
3411                         compat_pid_t, tgid,
3412                         compat_pid_t, pid,
3413                         int, sig,
3414                         struct compat_siginfo __user *, uinfo)
3415 {
3416         siginfo_t info;
3417
3418         if (copy_siginfo_from_user32(&info, uinfo))
3419                 return -EFAULT;
3420         return do_rt_tgsigqueueinfo(tgid, pid, sig, &info);
3421 }
3422 #endif
3423
3424 /*
3425  * For kthreads only, must not be used if cloned with CLONE_SIGHAND
3426  */
3427 void kernel_sigaction(int sig, __sighandler_t action)
3428 {
3429         spin_lock_irq(&current->sighand->siglock);
3430         current->sighand->action[sig - 1].sa.sa_handler = action;
3431         if (action == SIG_IGN) {
3432                 sigset_t mask;
3433
3434                 sigemptyset(&mask);
3435                 sigaddset(&mask, sig);
3436
3437                 flush_sigqueue_mask(&mask, &current->signal->shared_pending);
3438                 flush_sigqueue_mask(&mask, &current->pending);
3439                 recalc_sigpending();
3440         }
3441         spin_unlock_irq(&current->sighand->siglock);
3442 }
3443 EXPORT_SYMBOL(kernel_sigaction);
3444
3445 void __weak sigaction_compat_abi(struct k_sigaction *act,
3446                 struct k_sigaction *oact)
3447 {
3448 }
3449
3450 int do_sigaction(int sig, struct k_sigaction *act, struct k_sigaction *oact)
3451 {
3452         struct task_struct *p = current, *t;
3453         struct k_sigaction *k;
3454         sigset_t mask;
3455
3456         if (!valid_signal(sig) || sig < 1 || (act && sig_kernel_only(sig)))
3457                 return -EINVAL;
3458
3459         k = &p->sighand->action[sig-1];
3460
3461         spin_lock_irq(&p->sighand->siglock);
3462         if (oact)
3463                 *oact = *k;
3464
3465         sigaction_compat_abi(act, oact);
3466
3467         if (act) {
3468                 sigdelsetmask(&act->sa.sa_mask,
3469                               sigmask(SIGKILL) | sigmask(SIGSTOP));
3470                 *k = *act;
3471                 /*
3472                  * POSIX 3.3.1.3:
3473                  *  "Setting a signal action to SIG_IGN for a signal that is
3474                  *   pending shall cause the pending signal to be discarded,
3475                  *   whether or not it is blocked."
3476                  *
3477                  *  "Setting a signal action to SIG_DFL for a signal that is
3478                  *   pending and whose default action is to ignore the signal
3479                  *   (for example, SIGCHLD), shall cause the pending signal to
3480                  *   be discarded, whether or not it is blocked"
3481                  */
3482                 if (sig_handler_ignored(sig_handler(p, sig), sig)) {
3483                         sigemptyset(&mask);
3484                         sigaddset(&mask, sig);
3485                         flush_sigqueue_mask(&mask, &p->signal->shared_pending);
3486                         for_each_thread(p, t)
3487                                 flush_sigqueue_mask(&mask, &t->pending);
3488                 }
3489         }
3490
3491         spin_unlock_irq(&p->sighand->siglock);
3492         return 0;
3493 }
3494
3495 static int
3496 do_sigaltstack (const stack_t *ss, stack_t *oss, unsigned long sp)
3497 {
3498         struct task_struct *t = current;
3499
3500         if (oss) {
3501                 memset(oss, 0, sizeof(stack_t));
3502                 oss->ss_sp = (void __user *) t->sas_ss_sp;
3503                 oss->ss_size = t->sas_ss_size;
3504                 oss->ss_flags = sas_ss_flags(sp) |
3505                         (current->sas_ss_flags & SS_FLAG_BITS);
3506         }
3507
3508         if (ss) {
3509                 void __user *ss_sp = ss->ss_sp;
3510                 size_t ss_size = ss->ss_size;
3511                 unsigned ss_flags = ss->ss_flags;
3512                 int ss_mode;
3513
3514                 if (unlikely(on_sig_stack(sp)))
3515                         return -EPERM;
3516
3517                 ss_mode = ss_flags & ~SS_FLAG_BITS;
3518                 if (unlikely(ss_mode != SS_DISABLE && ss_mode != SS_ONSTACK &&
3519                                 ss_mode != 0))
3520                         return -EINVAL;
3521
3522                 if (ss_mode == SS_DISABLE) {
3523                         ss_size = 0;
3524                         ss_sp = NULL;
3525                 } else {
3526                         if (unlikely(ss_size < MINSIGSTKSZ))
3527                                 return -ENOMEM;
3528                 }
3529
3530                 t->sas_ss_sp = (unsigned long) ss_sp;
3531                 t->sas_ss_size = ss_size;
3532                 t->sas_ss_flags = ss_flags;
3533         }
3534         return 0;
3535 }
3536
3537 SYSCALL_DEFINE2(sigaltstack,const stack_t __user *,uss, stack_t __user *,uoss)
3538 {
3539         stack_t new, old;
3540         int err;
3541         if (uss && copy_from_user(&new, uss, sizeof(stack_t)))
3542                 return -EFAULT;
3543         err = do_sigaltstack(uss ? &new : NULL, uoss ? &old : NULL,
3544                               current_user_stack_pointer());
3545         if (!err && uoss && copy_to_user(uoss, &old, sizeof(stack_t)))
3546                 err = -EFAULT;
3547         return err;
3548 }
3549
3550 int restore_altstack(const stack_t __user *uss)
3551 {
3552         stack_t new;
3553         if (copy_from_user(&new, uss, sizeof(stack_t)))
3554                 return -EFAULT;
3555         (void)do_sigaltstack(&new, NULL, current_user_stack_pointer());
3556         /* squash all but EFAULT for now */
3557         return 0;
3558 }
3559
3560 int __save_altstack(stack_t __user *uss, unsigned long sp)
3561 {
3562         struct task_struct *t = current;
3563         int err = __put_user((void __user *)t->sas_ss_sp, &uss->ss_sp) |
3564                 __put_user(t->sas_ss_flags, &uss->ss_flags) |
3565                 __put_user(t->sas_ss_size, &uss->ss_size);
3566         if (err)
3567                 return err;
3568         if (t->sas_ss_flags & SS_AUTODISARM)
3569                 sas_ss_reset(t);
3570         return 0;
3571 }
3572
3573 #ifdef CONFIG_COMPAT
3574 COMPAT_SYSCALL_DEFINE2(sigaltstack,
3575                         const compat_stack_t __user *, uss_ptr,
3576                         compat_stack_t __user *, uoss_ptr)
3577 {
3578         stack_t uss, uoss;
3579         int ret;
3580
3581         if (uss_ptr) {
3582                 compat_stack_t uss32;
3583                 if (copy_from_user(&uss32, uss_ptr, sizeof(compat_stack_t)))
3584                         return -EFAULT;
3585                 uss.ss_sp = compat_ptr(uss32.ss_sp);
3586                 uss.ss_flags = uss32.ss_flags;
3587                 uss.ss_size = uss32.ss_size;
3588         }
3589         ret = do_sigaltstack(uss_ptr ? &uss : NULL, &uoss,
3590                              compat_user_stack_pointer());
3591         if (ret >= 0 && uoss_ptr)  {
3592                 compat_stack_t old;
3593                 memset(&old, 0, sizeof(old));
3594                 old.ss_sp = ptr_to_compat(uoss.ss_sp);
3595                 old.ss_flags = uoss.ss_flags;
3596                 old.ss_size = uoss.ss_size;
3597                 if (copy_to_user(uoss_ptr, &old, sizeof(compat_stack_t)))
3598                         ret = -EFAULT;
3599         }
3600         return ret;
3601 }
3602
3603 int compat_restore_altstack(const compat_stack_t __user *uss)
3604 {
3605         int err = compat_sys_sigaltstack(uss, NULL);
3606         /* squash all but -EFAULT for now */
3607         return err == -EFAULT ? err : 0;
3608 }
3609
3610 int __compat_save_altstack(compat_stack_t __user *uss, unsigned long sp)
3611 {
3612         int err;
3613         struct task_struct *t = current;
3614         err = __put_user(ptr_to_compat((void __user *)t->sas_ss_sp),
3615                          &uss->ss_sp) |
3616                 __put_user(t->sas_ss_flags, &uss->ss_flags) |
3617                 __put_user(t->sas_ss_size, &uss->ss_size);
3618         if (err)
3619                 return err;
3620         if (t->sas_ss_flags & SS_AUTODISARM)
3621                 sas_ss_reset(t);
3622         return 0;
3623 }
3624 #endif
3625
3626 #ifdef __ARCH_WANT_SYS_SIGPENDING
3627
3628 /**
3629  *  sys_sigpending - examine pending signals
3630  *  @set: where mask of pending signal is returned
3631  */
3632 SYSCALL_DEFINE1(sigpending, old_sigset_t __user *, set)
3633 {
3634         return sys_rt_sigpending((sigset_t __user *)set, sizeof(old_sigset_t)); 
3635 }
3636
3637 #ifdef CONFIG_COMPAT
3638 COMPAT_SYSCALL_DEFINE1(sigpending, compat_old_sigset_t __user *, set32)
3639 {
3640         sigset_t set;
3641         int err = do_sigpending(&set);
3642         if (!err)
3643                 err = put_user(set.sig[0], set32);
3644         return err;
3645 }
3646 #endif
3647
3648 #endif
3649
3650 #ifdef __ARCH_WANT_SYS_SIGPROCMASK
3651 /**
3652  *  sys_sigprocmask - examine and change blocked signals
3653  *  @how: whether to add, remove, or set signals
3654  *  @nset: signals to add or remove (if non-null)
3655  *  @oset: previous value of signal mask if non-null
3656  *
3657  * Some platforms have their own version with special arguments;
3658  * others support only sys_rt_sigprocmask.
3659  */
3660
3661 SYSCALL_DEFINE3(sigprocmask, int, how, old_sigset_t __user *, nset,
3662                 old_sigset_t __user *, oset)
3663 {
3664         old_sigset_t old_set, new_set;
3665         sigset_t new_blocked;
3666
3667         old_set = current->blocked.sig[0];
3668
3669         if (nset) {
3670                 if (copy_from_user(&new_set, nset, sizeof(*nset)))
3671                         return -EFAULT;
3672
3673                 new_blocked = current->blocked;
3674
3675                 switch (how) {
3676                 case SIG_BLOCK:
3677                         sigaddsetmask(&new_blocked, new_set);
3678                         break;
3679                 case SIG_UNBLOCK:
3680                         sigdelsetmask(&new_blocked, new_set);
3681                         break;
3682                 case SIG_SETMASK:
3683                         new_blocked.sig[0] = new_set;
3684                         break;
3685                 default:
3686                         return -EINVAL;
3687                 }
3688
3689                 set_current_blocked(&new_blocked);
3690         }
3691
3692         if (oset) {
3693                 if (copy_to_user(oset, &old_set, sizeof(*oset)))
3694                         return -EFAULT;
3695         }
3696
3697         return 0;
3698 }
3699 #endif /* __ARCH_WANT_SYS_SIGPROCMASK */
3700
3701 #ifndef CONFIG_ODD_RT_SIGACTION
3702 /**
3703  *  sys_rt_sigaction - alter an action taken by a process
3704  *  @sig: signal to be sent
3705  *  @act: new sigaction
3706  *  @oact: used to save the previous sigaction
3707  *  @sigsetsize: size of sigset_t type
3708  */
3709 SYSCALL_DEFINE4(rt_sigaction, int, sig,
3710                 const struct sigaction __user *, act,
3711                 struct sigaction __user *, oact,
3712                 size_t, sigsetsize)
3713 {
3714         struct k_sigaction new_sa, old_sa;
3715         int ret = -EINVAL;
3716
3717         /* XXX: Don't preclude handling different sized sigset_t's.  */
3718         if (sigsetsize != sizeof(sigset_t))
3719                 goto out;
3720
3721         if (act) {
3722                 if (copy_from_user(&new_sa.sa, act, sizeof(new_sa.sa)))
3723                         return -EFAULT;
3724         }
3725
3726         ret = do_sigaction(sig, act ? &new_sa : NULL, oact ? &old_sa : NULL);
3727
3728         if (!ret && oact) {
3729                 if (copy_to_user(oact, &old_sa.sa, sizeof(old_sa.sa)))
3730                         return -EFAULT;
3731         }
3732 out:
3733         return ret;
3734 }
3735 #ifdef CONFIG_COMPAT
3736 COMPAT_SYSCALL_DEFINE4(rt_sigaction, int, sig,
3737                 const struct compat_sigaction __user *, act,
3738                 struct compat_sigaction __user *, oact,
3739                 compat_size_t, sigsetsize)
3740 {
3741         struct k_sigaction new_ka, old_ka;
3742 #ifdef __ARCH_HAS_SA_RESTORER
3743         compat_uptr_t restorer;
3744 #endif
3745         int ret;
3746
3747         /* XXX: Don't preclude handling different sized sigset_t's.  */
3748         if (sigsetsize != sizeof(compat_sigset_t))
3749                 return -EINVAL;
3750
3751         if (act) {
3752                 compat_uptr_t handler;
3753                 ret = get_user(handler, &act->sa_handler);
3754                 new_ka.sa.sa_handler = compat_ptr(handler);
3755 #ifdef __ARCH_HAS_SA_RESTORER
3756                 ret |= get_user(restorer, &act->sa_restorer);
3757                 new_ka.sa.sa_restorer = compat_ptr(restorer);
3758 #endif
3759                 ret |= get_compat_sigset(&new_ka.sa.sa_mask, &act->sa_mask);
3760                 ret |= get_user(new_ka.sa.sa_flags, &act->sa_flags);
3761                 if (ret)
3762                         return -EFAULT;
3763         }
3764
3765         ret = do_sigaction(sig, act ? &new_ka : NULL, oact ? &old_ka : NULL);
3766         if (!ret && oact) {
3767                 ret = put_user(ptr_to_compat(old_ka.sa.sa_handler), 
3768                                &oact->sa_handler);
3769                 ret |= put_compat_sigset(&oact->sa_mask, &old_ka.sa.sa_mask,
3770                                          sizeof(oact->sa_mask));
3771                 ret |= put_user(old_ka.sa.sa_flags, &oact->sa_flags);
3772 #ifdef __ARCH_HAS_SA_RESTORER
3773                 ret |= put_user(ptr_to_compat(old_ka.sa.sa_restorer),
3774                                 &oact->sa_restorer);
3775 #endif
3776         }
3777         return ret;
3778 }
3779 #endif
3780 #endif /* !CONFIG_ODD_RT_SIGACTION */
3781
3782 #ifdef CONFIG_OLD_SIGACTION
3783 SYSCALL_DEFINE3(sigaction, int, sig,
3784                 const struct old_sigaction __user *, act,
3785                 struct old_sigaction __user *, oact)
3786 {
3787         struct k_sigaction new_ka, old_ka;
3788         int ret;
3789
3790         if (act) {
3791                 old_sigset_t mask;
3792                 if (!access_ok(VERIFY_READ, act, sizeof(*act)) ||
3793                     __get_user(new_ka.sa.sa_handler, &act->sa_handler) ||
3794                     __get_user(new_ka.sa.sa_restorer, &act->sa_restorer) ||
3795                     __get_user(new_ka.sa.sa_flags, &act->sa_flags) ||
3796                     __get_user(mask, &act->sa_mask))
3797                         return -EFAULT;
3798 #ifdef __ARCH_HAS_KA_RESTORER
3799                 new_ka.ka_restorer = NULL;
3800 #endif
3801                 siginitset(&new_ka.sa.sa_mask, mask);
3802         }
3803
3804         ret = do_sigaction(sig, act ? &new_ka : NULL, oact ? &old_ka : NULL);
3805
3806         if (!ret && oact) {
3807                 if (!access_ok(VERIFY_WRITE, oact, sizeof(*oact)) ||
3808                     __put_user(old_ka.sa.sa_handler, &oact->sa_handler) ||
3809                     __put_user(old_ka.sa.sa_restorer, &oact->sa_restorer) ||
3810                     __put_user(old_ka.sa.sa_flags, &oact->sa_flags) ||
3811                     __put_user(old_ka.sa.sa_mask.sig[0], &oact->sa_mask))
3812                         return -EFAULT;
3813         }
3814
3815         return ret;
3816 }
3817 #endif
3818 #ifdef CONFIG_COMPAT_OLD_SIGACTION
3819 COMPAT_SYSCALL_DEFINE3(sigaction, int, sig,
3820                 const struct compat_old_sigaction __user *, act,
3821                 struct compat_old_sigaction __user *, oact)
3822 {
3823         struct k_sigaction new_ka, old_ka;
3824         int ret;
3825         compat_old_sigset_t mask;
3826         compat_uptr_t handler, restorer;
3827
3828         if (act) {
3829                 if (!access_ok(VERIFY_READ, act, sizeof(*act)) ||
3830                     __get_user(handler, &act->sa_handler) ||
3831                     __get_user(restorer, &act->sa_restorer) ||
3832                     __get_user(new_ka.sa.sa_flags, &act->sa_flags) ||
3833                     __get_user(mask, &act->sa_mask))
3834                         return -EFAULT;
3835
3836 #ifdef __ARCH_HAS_KA_RESTORER
3837                 new_ka.ka_restorer = NULL;
3838 #endif
3839                 new_ka.sa.sa_handler = compat_ptr(handler);
3840                 new_ka.sa.sa_restorer = compat_ptr(restorer);
3841                 siginitset(&new_ka.sa.sa_mask, mask);
3842         }
3843
3844         ret = do_sigaction(sig, act ? &new_ka : NULL, oact ? &old_ka : NULL);
3845
3846         if (!ret && oact) {
3847                 if (!access_ok(VERIFY_WRITE, oact, sizeof(*oact)) ||
3848                     __put_user(ptr_to_compat(old_ka.sa.sa_handler),
3849                                &oact->sa_handler) ||
3850                     __put_user(ptr_to_compat(old_ka.sa.sa_restorer),
3851                                &oact->sa_restorer) ||
3852                     __put_user(old_ka.sa.sa_flags, &oact->sa_flags) ||
3853                     __put_user(old_ka.sa.sa_mask.sig[0], &oact->sa_mask))
3854                         return -EFAULT;
3855         }
3856         return ret;
3857 }
3858 #endif
3859
3860 #ifdef CONFIG_SGETMASK_SYSCALL
3861
3862 /*
3863  * For backwards compatibility.  Functionality superseded by sigprocmask.
3864  */
3865 SYSCALL_DEFINE0(sgetmask)
3866 {
3867         /* SMP safe */
3868         return current->blocked.sig[0];
3869 }
3870
3871 SYSCALL_DEFINE1(ssetmask, int, newmask)
3872 {
3873         int old = current->blocked.sig[0];
3874         sigset_t newset;
3875
3876         siginitset(&newset, newmask);
3877         set_current_blocked(&newset);
3878
3879         return old;
3880 }
3881 #endif /* CONFIG_SGETMASK_SYSCALL */
3882
3883 #ifdef __ARCH_WANT_SYS_SIGNAL
3884 /*
3885  * For backwards compatibility.  Functionality superseded by sigaction.
3886  */
3887 SYSCALL_DEFINE2(signal, int, sig, __sighandler_t, handler)
3888 {
3889         struct k_sigaction new_sa, old_sa;
3890         int ret;
3891
3892         new_sa.sa.sa_handler = handler;
3893         new_sa.sa.sa_flags = SA_ONESHOT | SA_NOMASK;
3894         sigemptyset(&new_sa.sa.sa_mask);
3895
3896         ret = do_sigaction(sig, &new_sa, &old_sa);
3897
3898         return ret ? ret : (unsigned long)old_sa.sa.sa_handler;
3899 }
3900 #endif /* __ARCH_WANT_SYS_SIGNAL */
3901
3902 #ifdef __ARCH_WANT_SYS_PAUSE
3903
3904 SYSCALL_DEFINE0(pause)
3905 {
3906         while (!signal_pending(current)) {
3907                 __set_current_state(TASK_INTERRUPTIBLE);
3908                 schedule();
3909         }
3910         return -ERESTARTNOHAND;
3911 }
3912
3913 #endif
3914
3915 static int sigsuspend(sigset_t *set)
3916 {
3917         current->saved_sigmask = current->blocked;
3918         set_current_blocked(set);
3919
3920         while (!signal_pending(current)) {
3921                 __set_current_state(TASK_INTERRUPTIBLE);
3922                 schedule();
3923         }
3924         set_restore_sigmask();
3925         return -ERESTARTNOHAND;
3926 }
3927
3928 /**
3929  *  sys_rt_sigsuspend - replace the signal mask for a value with the
3930  *      @unewset value until a signal is received
3931  *  @unewset: new signal mask value
3932  *  @sigsetsize: size of sigset_t type
3933  */
3934 SYSCALL_DEFINE2(rt_sigsuspend, sigset_t __user *, unewset, size_t, sigsetsize)
3935 {
3936         sigset_t newset;
3937
3938         /* XXX: Don't preclude handling different sized sigset_t's.  */
3939         if (sigsetsize != sizeof(sigset_t))
3940                 return -EINVAL;
3941
3942         if (copy_from_user(&newset, unewset, sizeof(newset)))
3943                 return -EFAULT;
3944         return sigsuspend(&newset);
3945 }
3946  
3947 #ifdef CONFIG_COMPAT
3948 COMPAT_SYSCALL_DEFINE2(rt_sigsuspend, compat_sigset_t __user *, unewset, compat_size_t, sigsetsize)
3949 {
3950         sigset_t newset;
3951
3952         /* XXX: Don't preclude handling different sized sigset_t's.  */
3953         if (sigsetsize != sizeof(sigset_t))
3954                 return -EINVAL;
3955
3956         if (get_compat_sigset(&newset, unewset))
3957                 return -EFAULT;
3958         return sigsuspend(&newset);
3959 }
3960 #endif
3961
3962 #ifdef CONFIG_OLD_SIGSUSPEND
3963 SYSCALL_DEFINE1(sigsuspend, old_sigset_t, mask)
3964 {
3965         sigset_t blocked;
3966         siginitset(&blocked, mask);
3967         return sigsuspend(&blocked);
3968 }
3969 #endif
3970 #ifdef CONFIG_OLD_SIGSUSPEND3
3971 SYSCALL_DEFINE3(sigsuspend, int, unused1, int, unused2, old_sigset_t, mask)
3972 {
3973         sigset_t blocked;
3974         siginitset(&blocked, mask);
3975         return sigsuspend(&blocked);
3976 }
3977 #endif
3978
3979 __weak const char *arch_vma_name(struct vm_area_struct *vma)
3980 {
3981         return NULL;
3982 }
3983
3984 void __init signals_init(void)
3985 {
3986         /* If this check fails, the __ARCH_SI_PREAMBLE_SIZE value is wrong! */
3987         BUILD_BUG_ON(__ARCH_SI_PREAMBLE_SIZE
3988                 != offsetof(struct siginfo, _sifields._pad));
3989         BUILD_BUG_ON(sizeof(struct siginfo) != SI_MAX_SIZE);
3990
3991         sigqueue_cachep = KMEM_CACHE(sigqueue, SLAB_PANIC);
3992 }
3993
3994 #ifdef CONFIG_KGDB_KDB
3995 #include <linux/kdb.h>
3996 /*
3997  * kdb_send_sig - Allows kdb to send signals without exposing
3998  * signal internals.  This function checks if the required locks are
3999  * available before calling the main signal code, to avoid kdb
4000  * deadlocks.
4001  */
4002 void kdb_send_sig(struct task_struct *t, int sig)
4003 {
4004         static struct task_struct *kdb_prev_t;
4005         int new_t, ret;
4006         if (!spin_trylock(&t->sighand->siglock)) {
4007                 kdb_printf("Can't do kill command now.\n"
4008                            "The sigmask lock is held somewhere else in "
4009                            "kernel, try again later\n");
4010                 return;
4011         }
4012         new_t = kdb_prev_t != t;
4013         kdb_prev_t = t;
4014         if (t->state != TASK_RUNNING && new_t) {
4015                 spin_unlock(&t->sighand->siglock);
4016                 kdb_printf("Process is not RUNNING, sending a signal from "
4017                            "kdb risks deadlock\n"
4018                            "on the run queue locks. "
4019                            "The signal has _not_ been sent.\n"
4020                            "Reissue the kill command if you want to risk "
4021                            "the deadlock.\n");
4022                 return;
4023         }
4024         ret = send_signal(sig, SEND_SIG_PRIV, t, false);
4025         spin_unlock(&t->sighand->siglock);
4026         if (ret)
4027                 kdb_printf("Fail to deliver Signal %d to process %d.\n",
4028                            sig, t->pid);
4029         else
4030                 kdb_printf("Signal %d is sent to process %d.\n", sig, t->pid);
4031 }
4032 #endif  /* CONFIG_KGDB_KDB */