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