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