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