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