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