[PATCH] cleanup the usage of SEND_SIG_xxx constants
[GitHub/mt8127/android_kernel_alcatel_ttab.git] / kernel / signal.c
1 /*
2 * linux/kernel/signal.c
3 *
4 * Copyright (C) 1991, 1992 Linus Torvalds
5 *
6 * 1997-11-02 Modified for POSIX.1b signals by Richard Henderson
7 *
8 * 2003-06-02 Jim Houston - Concurrent Computer Corp.
9 * Changes to use preallocated sigqueue structures
10 * to allow signals to be sent reliably.
11 */
12
13 #include <linux/config.h>
14 #include <linux/slab.h>
15 #include <linux/module.h>
16 #include <linux/smp_lock.h>
17 #include <linux/init.h>
18 #include <linux/sched.h>
19 #include <linux/fs.h>
20 #include <linux/tty.h>
21 #include <linux/binfmts.h>
22 #include <linux/security.h>
23 #include <linux/syscalls.h>
24 #include <linux/ptrace.h>
25 #include <linux/posix-timers.h>
26 #include <linux/signal.h>
27 #include <linux/audit.h>
28 #include <asm/param.h>
29 #include <asm/uaccess.h>
30 #include <asm/unistd.h>
31 #include <asm/siginfo.h>
32
33 /*
34 * SLAB caches for signal bits.
35 */
36
37 static kmem_cache_t *sigqueue_cachep;
38
39 /*
40 * In POSIX a signal is sent either to a specific thread (Linux task)
41 * or to the process as a whole (Linux thread group). How the signal
42 * is sent determines whether it's to one thread or the whole group,
43 * which determines which signal mask(s) are involved in blocking it
44 * from being delivered until later. When the signal is delivered,
45 * either it's caught or ignored by a user handler or it has a default
46 * effect that applies to the whole thread group (POSIX process).
47 *
48 * The possible effects an unblocked signal set to SIG_DFL can have are:
49 * ignore - Nothing Happens
50 * terminate - kill the process, i.e. all threads in the group,
51 * similar to exit_group. The group leader (only) reports
52 * WIFSIGNALED status to its parent.
53 * coredump - write a core dump file describing all threads using
54 * the same mm and then kill all those threads
55 * stop - stop all the threads in the group, i.e. TASK_STOPPED state
56 *
57 * SIGKILL and SIGSTOP cannot be caught, blocked, or ignored.
58 * Other signals when not blocked and set to SIG_DFL behaves as follows.
59 * The job control signals also have other special effects.
60 *
61 * +--------------------+------------------+
62 * | POSIX signal | default action |
63 * +--------------------+------------------+
64 * | SIGHUP | terminate |
65 * | SIGINT | terminate |
66 * | SIGQUIT | coredump |
67 * | SIGILL | coredump |
68 * | SIGTRAP | coredump |
69 * | SIGABRT/SIGIOT | coredump |
70 * | SIGBUS | coredump |
71 * | SIGFPE | coredump |
72 * | SIGKILL | terminate(+) |
73 * | SIGUSR1 | terminate |
74 * | SIGSEGV | coredump |
75 * | SIGUSR2 | terminate |
76 * | SIGPIPE | terminate |
77 * | SIGALRM | terminate |
78 * | SIGTERM | terminate |
79 * | SIGCHLD | ignore |
80 * | SIGCONT | ignore(*) |
81 * | SIGSTOP | stop(*)(+) |
82 * | SIGTSTP | stop(*) |
83 * | SIGTTIN | stop(*) |
84 * | SIGTTOU | stop(*) |
85 * | SIGURG | ignore |
86 * | SIGXCPU | coredump |
87 * | SIGXFSZ | coredump |
88 * | SIGVTALRM | terminate |
89 * | SIGPROF | terminate |
90 * | SIGPOLL/SIGIO | terminate |
91 * | SIGSYS/SIGUNUSED | coredump |
92 * | SIGSTKFLT | terminate |
93 * | SIGWINCH | ignore |
94 * | SIGPWR | terminate |
95 * | SIGRTMIN-SIGRTMAX | terminate |
96 * +--------------------+------------------+
97 * | non-POSIX signal | default action |
98 * +--------------------+------------------+
99 * | SIGEMT | coredump |
100 * +--------------------+------------------+
101 *
102 * (+) For SIGKILL and SIGSTOP the action is "always", not just "default".
103 * (*) Special job control effects:
104 * When SIGCONT is sent, it resumes the process (all threads in the group)
105 * from TASK_STOPPED state and also clears any pending/queued stop signals
106 * (any of those marked with "stop(*)"). This happens regardless of blocking,
107 * catching, or ignoring SIGCONT. When any stop signal is sent, it clears
108 * any pending/queued SIGCONT signals; this happens regardless of blocking,
109 * catching, or ignored the stop signal, though (except for SIGSTOP) the
110 * default action of stopping the process may happen later or never.
111 */
112
113 #ifdef SIGEMT
114 #define M_SIGEMT M(SIGEMT)
115 #else
116 #define M_SIGEMT 0
117 #endif
118
119 #if SIGRTMIN > BITS_PER_LONG
120 #define M(sig) (1ULL << ((sig)-1))
121 #else
122 #define M(sig) (1UL << ((sig)-1))
123 #endif
124 #define T(sig, mask) (M(sig) & (mask))
125
126 #define SIG_KERNEL_ONLY_MASK (\
127 M(SIGKILL) | M(SIGSTOP) )
128
129 #define SIG_KERNEL_STOP_MASK (\
130 M(SIGSTOP) | M(SIGTSTP) | M(SIGTTIN) | M(SIGTTOU) )
131
132 #define SIG_KERNEL_COREDUMP_MASK (\
133 M(SIGQUIT) | M(SIGILL) | M(SIGTRAP) | M(SIGABRT) | \
134 M(SIGFPE) | M(SIGSEGV) | M(SIGBUS) | M(SIGSYS) | \
135 M(SIGXCPU) | M(SIGXFSZ) | M_SIGEMT )
136
137 #define SIG_KERNEL_IGNORE_MASK (\
138 M(SIGCONT) | M(SIGCHLD) | M(SIGWINCH) | M(SIGURG) )
139
140 #define sig_kernel_only(sig) \
141 (((sig) < SIGRTMIN) && T(sig, SIG_KERNEL_ONLY_MASK))
142 #define sig_kernel_coredump(sig) \
143 (((sig) < SIGRTMIN) && T(sig, SIG_KERNEL_COREDUMP_MASK))
144 #define sig_kernel_ignore(sig) \
145 (((sig) < SIGRTMIN) && T(sig, SIG_KERNEL_IGNORE_MASK))
146 #define sig_kernel_stop(sig) \
147 (((sig) < SIGRTMIN) && T(sig, SIG_KERNEL_STOP_MASK))
148
149 #define sig_user_defined(t, signr) \
150 (((t)->sighand->action[(signr)-1].sa.sa_handler != SIG_DFL) && \
151 ((t)->sighand->action[(signr)-1].sa.sa_handler != SIG_IGN))
152
153 #define sig_fatal(t, signr) \
154 (!T(signr, SIG_KERNEL_IGNORE_MASK|SIG_KERNEL_STOP_MASK) && \
155 (t)->sighand->action[(signr)-1].sa.sa_handler == SIG_DFL)
156
157 static int sig_ignored(struct task_struct *t, int sig)
158 {
159 void __user * handler;
160
161 /*
162 * Tracers always want to know about signals..
163 */
164 if (t->ptrace & PT_PTRACED)
165 return 0;
166
167 /*
168 * Blocked signals are never ignored, since the
169 * signal handler may change by the time it is
170 * unblocked.
171 */
172 if (sigismember(&t->blocked, sig))
173 return 0;
174
175 /* Is it explicitly or implicitly ignored? */
176 handler = t->sighand->action[sig-1].sa.sa_handler;
177 return handler == SIG_IGN ||
178 (handler == SIG_DFL && sig_kernel_ignore(sig));
179 }
180
181 /*
182 * Re-calculate pending state from the set of locally pending
183 * signals, globally pending signals, and blocked signals.
184 */
185 static inline int has_pending_signals(sigset_t *signal, sigset_t *blocked)
186 {
187 unsigned long ready;
188 long i;
189
190 switch (_NSIG_WORDS) {
191 default:
192 for (i = _NSIG_WORDS, ready = 0; --i >= 0 ;)
193 ready |= signal->sig[i] &~ blocked->sig[i];
194 break;
195
196 case 4: ready = signal->sig[3] &~ blocked->sig[3];
197 ready |= signal->sig[2] &~ blocked->sig[2];
198 ready |= signal->sig[1] &~ blocked->sig[1];
199 ready |= signal->sig[0] &~ blocked->sig[0];
200 break;
201
202 case 2: ready = signal->sig[1] &~ blocked->sig[1];
203 ready |= signal->sig[0] &~ blocked->sig[0];
204 break;
205
206 case 1: ready = signal->sig[0] &~ blocked->sig[0];
207 }
208 return ready != 0;
209 }
210
211 #define PENDING(p,b) has_pending_signals(&(p)->signal, (b))
212
213 fastcall void recalc_sigpending_tsk(struct task_struct *t)
214 {
215 if (t->signal->group_stop_count > 0 ||
216 (freezing(t)) ||
217 PENDING(&t->pending, &t->blocked) ||
218 PENDING(&t->signal->shared_pending, &t->blocked))
219 set_tsk_thread_flag(t, TIF_SIGPENDING);
220 else
221 clear_tsk_thread_flag(t, TIF_SIGPENDING);
222 }
223
224 void recalc_sigpending(void)
225 {
226 recalc_sigpending_tsk(current);
227 }
228
229 /* Given the mask, find the first available signal that should be serviced. */
230
231 static int
232 next_signal(struct sigpending *pending, sigset_t *mask)
233 {
234 unsigned long i, *s, *m, x;
235 int sig = 0;
236
237 s = pending->signal.sig;
238 m = mask->sig;
239 switch (_NSIG_WORDS) {
240 default:
241 for (i = 0; i < _NSIG_WORDS; ++i, ++s, ++m)
242 if ((x = *s &~ *m) != 0) {
243 sig = ffz(~x) + i*_NSIG_BPW + 1;
244 break;
245 }
246 break;
247
248 case 2: if ((x = s[0] &~ m[0]) != 0)
249 sig = 1;
250 else if ((x = s[1] &~ m[1]) != 0)
251 sig = _NSIG_BPW + 1;
252 else
253 break;
254 sig += ffz(~x);
255 break;
256
257 case 1: if ((x = *s &~ *m) != 0)
258 sig = ffz(~x) + 1;
259 break;
260 }
261
262 return sig;
263 }
264
265 static struct sigqueue *__sigqueue_alloc(struct task_struct *t, gfp_t flags,
266 int override_rlimit)
267 {
268 struct sigqueue *q = NULL;
269
270 atomic_inc(&t->user->sigpending);
271 if (override_rlimit ||
272 atomic_read(&t->user->sigpending) <=
273 t->signal->rlim[RLIMIT_SIGPENDING].rlim_cur)
274 q = kmem_cache_alloc(sigqueue_cachep, flags);
275 if (unlikely(q == NULL)) {
276 atomic_dec(&t->user->sigpending);
277 } else {
278 INIT_LIST_HEAD(&q->list);
279 q->flags = 0;
280 q->user = get_uid(t->user);
281 }
282 return(q);
283 }
284
285 static inline void __sigqueue_free(struct sigqueue *q)
286 {
287 if (q->flags & SIGQUEUE_PREALLOC)
288 return;
289 atomic_dec(&q->user->sigpending);
290 free_uid(q->user);
291 kmem_cache_free(sigqueue_cachep, q);
292 }
293
294 static void flush_sigqueue(struct sigpending *queue)
295 {
296 struct sigqueue *q;
297
298 sigemptyset(&queue->signal);
299 while (!list_empty(&queue->list)) {
300 q = list_entry(queue->list.next, struct sigqueue , list);
301 list_del_init(&q->list);
302 __sigqueue_free(q);
303 }
304 }
305
306 /*
307 * Flush all pending signals for a task.
308 */
309
310 void
311 flush_signals(struct task_struct *t)
312 {
313 unsigned long flags;
314
315 spin_lock_irqsave(&t->sighand->siglock, flags);
316 clear_tsk_thread_flag(t,TIF_SIGPENDING);
317 flush_sigqueue(&t->pending);
318 flush_sigqueue(&t->signal->shared_pending);
319 spin_unlock_irqrestore(&t->sighand->siglock, flags);
320 }
321
322 /*
323 * This function expects the tasklist_lock write-locked.
324 */
325 void __exit_sighand(struct task_struct *tsk)
326 {
327 struct sighand_struct * sighand = tsk->sighand;
328
329 /* Ok, we're done with the signal handlers */
330 tsk->sighand = NULL;
331 if (atomic_dec_and_test(&sighand->count))
332 kmem_cache_free(sighand_cachep, sighand);
333 }
334
335 void exit_sighand(struct task_struct *tsk)
336 {
337 write_lock_irq(&tasklist_lock);
338 __exit_sighand(tsk);
339 write_unlock_irq(&tasklist_lock);
340 }
341
342 /*
343 * This function expects the tasklist_lock write-locked.
344 */
345 void __exit_signal(struct task_struct *tsk)
346 {
347 struct signal_struct * sig = tsk->signal;
348 struct sighand_struct * sighand = tsk->sighand;
349
350 if (!sig)
351 BUG();
352 if (!atomic_read(&sig->count))
353 BUG();
354 spin_lock(&sighand->siglock);
355 posix_cpu_timers_exit(tsk);
356 if (atomic_dec_and_test(&sig->count)) {
357 posix_cpu_timers_exit_group(tsk);
358 if (tsk == sig->curr_target)
359 sig->curr_target = next_thread(tsk);
360 tsk->signal = NULL;
361 spin_unlock(&sighand->siglock);
362 flush_sigqueue(&sig->shared_pending);
363 } else {
364 /*
365 * If there is any task waiting for the group exit
366 * then notify it:
367 */
368 if (sig->group_exit_task && atomic_read(&sig->count) == sig->notify_count) {
369 wake_up_process(sig->group_exit_task);
370 sig->group_exit_task = NULL;
371 }
372 if (tsk == sig->curr_target)
373 sig->curr_target = next_thread(tsk);
374 tsk->signal = NULL;
375 /*
376 * Accumulate here the counters for all threads but the
377 * group leader as they die, so they can be added into
378 * the process-wide totals when those are taken.
379 * The group leader stays around as a zombie as long
380 * as there are other threads. When it gets reaped,
381 * the exit.c code will add its counts into these totals.
382 * We won't ever get here for the group leader, since it
383 * will have been the last reference on the signal_struct.
384 */
385 sig->utime = cputime_add(sig->utime, tsk->utime);
386 sig->stime = cputime_add(sig->stime, tsk->stime);
387 sig->min_flt += tsk->min_flt;
388 sig->maj_flt += tsk->maj_flt;
389 sig->nvcsw += tsk->nvcsw;
390 sig->nivcsw += tsk->nivcsw;
391 sig->sched_time += tsk->sched_time;
392 spin_unlock(&sighand->siglock);
393 sig = NULL; /* Marker for below. */
394 }
395 clear_tsk_thread_flag(tsk,TIF_SIGPENDING);
396 flush_sigqueue(&tsk->pending);
397 if (sig) {
398 /*
399 * We are cleaning up the signal_struct here.
400 */
401 exit_thread_group_keys(sig);
402 kmem_cache_free(signal_cachep, sig);
403 }
404 }
405
406 void exit_signal(struct task_struct *tsk)
407 {
408 atomic_dec(&tsk->signal->live);
409
410 write_lock_irq(&tasklist_lock);
411 __exit_signal(tsk);
412 write_unlock_irq(&tasklist_lock);
413 }
414
415 /*
416 * Flush all handlers for a task.
417 */
418
419 void
420 flush_signal_handlers(struct task_struct *t, int force_default)
421 {
422 int i;
423 struct k_sigaction *ka = &t->sighand->action[0];
424 for (i = _NSIG ; i != 0 ; i--) {
425 if (force_default || ka->sa.sa_handler != SIG_IGN)
426 ka->sa.sa_handler = SIG_DFL;
427 ka->sa.sa_flags = 0;
428 sigemptyset(&ka->sa.sa_mask);
429 ka++;
430 }
431 }
432
433
434 /* Notify the system that a driver wants to block all signals for this
435 * process, and wants to be notified if any signals at all were to be
436 * sent/acted upon. If the notifier routine returns non-zero, then the
437 * signal will be acted upon after all. If the notifier routine returns 0,
438 * then then signal will be blocked. Only one block per process is
439 * allowed. priv is a pointer to private data that the notifier routine
440 * can use to determine if the signal should be blocked or not. */
441
442 void
443 block_all_signals(int (*notifier)(void *priv), void *priv, sigset_t *mask)
444 {
445 unsigned long flags;
446
447 spin_lock_irqsave(&current->sighand->siglock, flags);
448 current->notifier_mask = mask;
449 current->notifier_data = priv;
450 current->notifier = notifier;
451 spin_unlock_irqrestore(&current->sighand->siglock, flags);
452 }
453
454 /* Notify the system that blocking has ended. */
455
456 void
457 unblock_all_signals(void)
458 {
459 unsigned long flags;
460
461 spin_lock_irqsave(&current->sighand->siglock, flags);
462 current->notifier = NULL;
463 current->notifier_data = NULL;
464 recalc_sigpending();
465 spin_unlock_irqrestore(&current->sighand->siglock, flags);
466 }
467
468 static inline int collect_signal(int sig, struct sigpending *list, siginfo_t *info)
469 {
470 struct sigqueue *q, *first = NULL;
471 int still_pending = 0;
472
473 if (unlikely(!sigismember(&list->signal, sig)))
474 return 0;
475
476 /*
477 * Collect the siginfo appropriate to this signal. Check if
478 * there is another siginfo for the same signal.
479 */
480 list_for_each_entry(q, &list->list, list) {
481 if (q->info.si_signo == sig) {
482 if (first) {
483 still_pending = 1;
484 break;
485 }
486 first = q;
487 }
488 }
489 if (first) {
490 list_del_init(&first->list);
491 copy_siginfo(info, &first->info);
492 __sigqueue_free(first);
493 if (!still_pending)
494 sigdelset(&list->signal, sig);
495 } else {
496
497 /* Ok, it wasn't in the queue. This must be
498 a fast-pathed signal or we must have been
499 out of queue space. So zero out the info.
500 */
501 sigdelset(&list->signal, sig);
502 info->si_signo = sig;
503 info->si_errno = 0;
504 info->si_code = 0;
505 info->si_pid = 0;
506 info->si_uid = 0;
507 }
508 return 1;
509 }
510
511 static int __dequeue_signal(struct sigpending *pending, sigset_t *mask,
512 siginfo_t *info)
513 {
514 int sig = 0;
515
516 /* SIGKILL must have priority, otherwise it is quite easy
517 * to create an unkillable process, sending sig < SIGKILL
518 * to self */
519 if (unlikely(sigismember(&pending->signal, SIGKILL))) {
520 if (!sigismember(mask, SIGKILL))
521 sig = SIGKILL;
522 }
523
524 if (likely(!sig))
525 sig = next_signal(pending, mask);
526 if (sig) {
527 if (current->notifier) {
528 if (sigismember(current->notifier_mask, sig)) {
529 if (!(current->notifier)(current->notifier_data)) {
530 clear_thread_flag(TIF_SIGPENDING);
531 return 0;
532 }
533 }
534 }
535
536 if (!collect_signal(sig, pending, info))
537 sig = 0;
538
539 }
540 recalc_sigpending();
541
542 return sig;
543 }
544
545 /*
546 * Dequeue a signal and return the element to the caller, which is
547 * expected to free it.
548 *
549 * All callers have to hold the siglock.
550 */
551 int dequeue_signal(struct task_struct *tsk, sigset_t *mask, siginfo_t *info)
552 {
553 int signr = __dequeue_signal(&tsk->pending, mask, info);
554 if (!signr)
555 signr = __dequeue_signal(&tsk->signal->shared_pending,
556 mask, info);
557 if (signr && unlikely(sig_kernel_stop(signr))) {
558 /*
559 * Set a marker that we have dequeued a stop signal. Our
560 * caller might release the siglock and then the pending
561 * stop signal it is about to process is no longer in the
562 * pending bitmasks, but must still be cleared by a SIGCONT
563 * (and overruled by a SIGKILL). So those cases clear this
564 * shared flag after we've set it. Note that this flag may
565 * remain set after the signal we return is ignored or
566 * handled. That doesn't matter because its only purpose
567 * is to alert stop-signal processing code when another
568 * processor has come along and cleared the flag.
569 */
570 if (!(tsk->signal->flags & SIGNAL_GROUP_EXIT))
571 tsk->signal->flags |= SIGNAL_STOP_DEQUEUED;
572 }
573 if ( signr &&
574 ((info->si_code & __SI_MASK) == __SI_TIMER) &&
575 info->si_sys_private){
576 /*
577 * Release the siglock to ensure proper locking order
578 * of timer locks outside of siglocks. Note, we leave
579 * irqs disabled here, since the posix-timers code is
580 * about to disable them again anyway.
581 */
582 spin_unlock(&tsk->sighand->siglock);
583 do_schedule_next_timer(info);
584 spin_lock(&tsk->sighand->siglock);
585 }
586 return signr;
587 }
588
589 /*
590 * Tell a process that it has a new active signal..
591 *
592 * NOTE! we rely on the previous spin_lock to
593 * lock interrupts for us! We can only be called with
594 * "siglock" held, and the local interrupt must
595 * have been disabled when that got acquired!
596 *
597 * No need to set need_resched since signal event passing
598 * goes through ->blocked
599 */
600 void signal_wake_up(struct task_struct *t, int resume)
601 {
602 unsigned int mask;
603
604 set_tsk_thread_flag(t, TIF_SIGPENDING);
605
606 /*
607 * For SIGKILL, we want to wake it up in the stopped/traced case.
608 * We don't check t->state here because there is a race with it
609 * executing another processor and just now entering stopped state.
610 * By using wake_up_state, we ensure the process will wake up and
611 * handle its death signal.
612 */
613 mask = TASK_INTERRUPTIBLE;
614 if (resume)
615 mask |= TASK_STOPPED | TASK_TRACED;
616 if (!wake_up_state(t, mask))
617 kick_process(t);
618 }
619
620 /*
621 * Remove signals in mask from the pending set and queue.
622 * Returns 1 if any signals were found.
623 *
624 * All callers must be holding the siglock.
625 */
626 static int rm_from_queue(unsigned long mask, struct sigpending *s)
627 {
628 struct sigqueue *q, *n;
629
630 if (!sigtestsetmask(&s->signal, mask))
631 return 0;
632
633 sigdelsetmask(&s->signal, mask);
634 list_for_each_entry_safe(q, n, &s->list, list) {
635 if (q->info.si_signo < SIGRTMIN &&
636 (mask & sigmask(q->info.si_signo))) {
637 list_del_init(&q->list);
638 __sigqueue_free(q);
639 }
640 }
641 return 1;
642 }
643
644 /*
645 * Bad permissions for sending the signal
646 */
647 static int check_kill_permission(int sig, struct siginfo *info,
648 struct task_struct *t)
649 {
650 int error = -EINVAL;
651 if (!valid_signal(sig))
652 return error;
653 error = -EPERM;
654 if ((info == SEND_SIG_NOINFO || (!is_si_special(info) && SI_FROMUSER(info)))
655 && ((sig != SIGCONT) ||
656 (current->signal->session != t->signal->session))
657 && (current->euid ^ t->suid) && (current->euid ^ t->uid)
658 && (current->uid ^ t->suid) && (current->uid ^ t->uid)
659 && !capable(CAP_KILL))
660 return error;
661
662 error = security_task_kill(t, info, sig);
663 if (!error)
664 audit_signal_info(sig, t); /* Let audit system see the signal */
665 return error;
666 }
667
668 /* forward decl */
669 static void do_notify_parent_cldstop(struct task_struct *tsk,
670 int to_self,
671 int why);
672
673 /*
674 * Handle magic process-wide effects of stop/continue signals.
675 * Unlike the signal actions, these happen immediately at signal-generation
676 * time regardless of blocking, ignoring, or handling. This does the
677 * actual continuing for SIGCONT, but not the actual stopping for stop
678 * signals. The process stop is done as a signal action for SIG_DFL.
679 */
680 static void handle_stop_signal(int sig, struct task_struct *p)
681 {
682 struct task_struct *t;
683
684 if (p->signal->flags & SIGNAL_GROUP_EXIT)
685 /*
686 * The process is in the middle of dying already.
687 */
688 return;
689
690 if (sig_kernel_stop(sig)) {
691 /*
692 * This is a stop signal. Remove SIGCONT from all queues.
693 */
694 rm_from_queue(sigmask(SIGCONT), &p->signal->shared_pending);
695 t = p;
696 do {
697 rm_from_queue(sigmask(SIGCONT), &t->pending);
698 t = next_thread(t);
699 } while (t != p);
700 } else if (sig == SIGCONT) {
701 /*
702 * Remove all stop signals from all queues,
703 * and wake all threads.
704 */
705 if (unlikely(p->signal->group_stop_count > 0)) {
706 /*
707 * There was a group stop in progress. We'll
708 * pretend it finished before we got here. We are
709 * obliged to report it to the parent: if the
710 * SIGSTOP happened "after" this SIGCONT, then it
711 * would have cleared this pending SIGCONT. If it
712 * happened "before" this SIGCONT, then the parent
713 * got the SIGCHLD about the stop finishing before
714 * the continue happened. We do the notification
715 * now, and it's as if the stop had finished and
716 * the SIGCHLD was pending on entry to this kill.
717 */
718 p->signal->group_stop_count = 0;
719 p->signal->flags = SIGNAL_STOP_CONTINUED;
720 spin_unlock(&p->sighand->siglock);
721 do_notify_parent_cldstop(p, (p->ptrace & PT_PTRACED), CLD_STOPPED);
722 spin_lock(&p->sighand->siglock);
723 }
724 rm_from_queue(SIG_KERNEL_STOP_MASK, &p->signal->shared_pending);
725 t = p;
726 do {
727 unsigned int state;
728 rm_from_queue(SIG_KERNEL_STOP_MASK, &t->pending);
729
730 /*
731 * If there is a handler for SIGCONT, we must make
732 * sure that no thread returns to user mode before
733 * we post the signal, in case it was the only
734 * thread eligible to run the signal handler--then
735 * it must not do anything between resuming and
736 * running the handler. With the TIF_SIGPENDING
737 * flag set, the thread will pause and acquire the
738 * siglock that we hold now and until we've queued
739 * the pending signal.
740 *
741 * Wake up the stopped thread _after_ setting
742 * TIF_SIGPENDING
743 */
744 state = TASK_STOPPED;
745 if (sig_user_defined(t, SIGCONT) && !sigismember(&t->blocked, SIGCONT)) {
746 set_tsk_thread_flag(t, TIF_SIGPENDING);
747 state |= TASK_INTERRUPTIBLE;
748 }
749 wake_up_state(t, state);
750
751 t = next_thread(t);
752 } while (t != p);
753
754 if (p->signal->flags & SIGNAL_STOP_STOPPED) {
755 /*
756 * We were in fact stopped, and are now continued.
757 * Notify the parent with CLD_CONTINUED.
758 */
759 p->signal->flags = SIGNAL_STOP_CONTINUED;
760 p->signal->group_exit_code = 0;
761 spin_unlock(&p->sighand->siglock);
762 do_notify_parent_cldstop(p, (p->ptrace & PT_PTRACED), CLD_CONTINUED);
763 spin_lock(&p->sighand->siglock);
764 } else {
765 /*
766 * We are not stopped, but there could be a stop
767 * signal in the middle of being processed after
768 * being removed from the queue. Clear that too.
769 */
770 p->signal->flags = 0;
771 }
772 } else if (sig == SIGKILL) {
773 /*
774 * Make sure that any pending stop signal already dequeued
775 * is undone by the wakeup for SIGKILL.
776 */
777 p->signal->flags = 0;
778 }
779 }
780
781 static int send_signal(int sig, struct siginfo *info, struct task_struct *t,
782 struct sigpending *signals)
783 {
784 struct sigqueue * q = NULL;
785 int ret = 0;
786
787 /*
788 * fast-pathed signals for kernel-internal things like SIGSTOP
789 * or SIGKILL.
790 */
791 if (info == SEND_SIG_FORCED)
792 goto out_set;
793
794 /* Real-time signals must be queued if sent by sigqueue, or
795 some other real-time mechanism. It is implementation
796 defined whether kill() does so. We attempt to do so, on
797 the principle of least surprise, but since kill is not
798 allowed to fail with EAGAIN when low on memory we just
799 make sure at least one signal gets delivered and don't
800 pass on the info struct. */
801
802 q = __sigqueue_alloc(t, GFP_ATOMIC, (sig < SIGRTMIN &&
803 (is_si_special(info) ||
804 info->si_code >= 0)));
805 if (q) {
806 list_add_tail(&q->list, &signals->list);
807 switch ((unsigned long) info) {
808 case (unsigned long) SEND_SIG_NOINFO:
809 q->info.si_signo = sig;
810 q->info.si_errno = 0;
811 q->info.si_code = SI_USER;
812 q->info.si_pid = current->pid;
813 q->info.si_uid = current->uid;
814 break;
815 case (unsigned long) SEND_SIG_PRIV:
816 q->info.si_signo = sig;
817 q->info.si_errno = 0;
818 q->info.si_code = SI_KERNEL;
819 q->info.si_pid = 0;
820 q->info.si_uid = 0;
821 break;
822 default:
823 copy_siginfo(&q->info, info);
824 break;
825 }
826 } else if (!is_si_special(info)) {
827 if (sig >= SIGRTMIN && info->si_code != SI_USER)
828 /*
829 * Queue overflow, abort. We may abort if the signal was rt
830 * and sent by user using something other than kill().
831 */
832 return -EAGAIN;
833 if (info->si_code == SI_TIMER)
834 /*
835 * Set up a return to indicate that we dropped
836 * the signal.
837 */
838 ret = info->si_sys_private;
839 }
840
841 out_set:
842 sigaddset(&signals->signal, sig);
843 return ret;
844 }
845
846 #define LEGACY_QUEUE(sigptr, sig) \
847 (((sig) < SIGRTMIN) && sigismember(&(sigptr)->signal, (sig)))
848
849
850 static int
851 specific_send_sig_info(int sig, struct siginfo *info, struct task_struct *t)
852 {
853 int ret = 0;
854
855 if (!irqs_disabled())
856 BUG();
857 assert_spin_locked(&t->sighand->siglock);
858
859 if (!is_si_special(info) && (info->si_code == SI_TIMER))
860 /*
861 * Set up a return to indicate that we dropped the signal.
862 */
863 ret = info->si_sys_private;
864
865 /* Short-circuit ignored signals. */
866 if (sig_ignored(t, sig))
867 goto out;
868
869 /* Support queueing exactly one non-rt signal, so that we
870 can get more detailed information about the cause of
871 the signal. */
872 if (LEGACY_QUEUE(&t->pending, sig))
873 goto out;
874
875 ret = send_signal(sig, info, t, &t->pending);
876 if (!ret && !sigismember(&t->blocked, sig))
877 signal_wake_up(t, sig == SIGKILL);
878 out:
879 return ret;
880 }
881
882 /*
883 * Force a signal that the process can't ignore: if necessary
884 * we unblock the signal and change any SIG_IGN to SIG_DFL.
885 */
886
887 int
888 force_sig_info(int sig, struct siginfo *info, struct task_struct *t)
889 {
890 unsigned long int flags;
891 int ret;
892
893 spin_lock_irqsave(&t->sighand->siglock, flags);
894 if (sigismember(&t->blocked, sig) || t->sighand->action[sig-1].sa.sa_handler == SIG_IGN) {
895 t->sighand->action[sig-1].sa.sa_handler = SIG_DFL;
896 sigdelset(&t->blocked, sig);
897 recalc_sigpending_tsk(t);
898 }
899 ret = specific_send_sig_info(sig, info, t);
900 spin_unlock_irqrestore(&t->sighand->siglock, flags);
901
902 return ret;
903 }
904
905 void
906 force_sig_specific(int sig, struct task_struct *t)
907 {
908 unsigned long int flags;
909
910 spin_lock_irqsave(&t->sighand->siglock, flags);
911 if (t->sighand->action[sig-1].sa.sa_handler == SIG_IGN)
912 t->sighand->action[sig-1].sa.sa_handler = SIG_DFL;
913 sigdelset(&t->blocked, sig);
914 recalc_sigpending_tsk(t);
915 specific_send_sig_info(sig, SEND_SIG_FORCED, t);
916 spin_unlock_irqrestore(&t->sighand->siglock, flags);
917 }
918
919 /*
920 * Test if P wants to take SIG. After we've checked all threads with this,
921 * it's equivalent to finding no threads not blocking SIG. Any threads not
922 * blocking SIG were ruled out because they are not running and already
923 * have pending signals. Such threads will dequeue from the shared queue
924 * as soon as they're available, so putting the signal on the shared queue
925 * will be equivalent to sending it to one such thread.
926 */
927 static inline int wants_signal(int sig, struct task_struct *p)
928 {
929 if (sigismember(&p->blocked, sig))
930 return 0;
931 if (p->flags & PF_EXITING)
932 return 0;
933 if (sig == SIGKILL)
934 return 1;
935 if (p->state & (TASK_STOPPED | TASK_TRACED))
936 return 0;
937 return task_curr(p) || !signal_pending(p);
938 }
939
940 static void
941 __group_complete_signal(int sig, struct task_struct *p)
942 {
943 struct task_struct *t;
944
945 /*
946 * Now find a thread we can wake up to take the signal off the queue.
947 *
948 * If the main thread wants the signal, it gets first crack.
949 * Probably the least surprising to the average bear.
950 */
951 if (wants_signal(sig, p))
952 t = p;
953 else if (thread_group_empty(p))
954 /*
955 * There is just one thread and it does not need to be woken.
956 * It will dequeue unblocked signals before it runs again.
957 */
958 return;
959 else {
960 /*
961 * Otherwise try to find a suitable thread.
962 */
963 t = p->signal->curr_target;
964 if (t == NULL)
965 /* restart balancing at this thread */
966 t = p->signal->curr_target = p;
967 BUG_ON(t->tgid != p->tgid);
968
969 while (!wants_signal(sig, t)) {
970 t = next_thread(t);
971 if (t == p->signal->curr_target)
972 /*
973 * No thread needs to be woken.
974 * Any eligible threads will see
975 * the signal in the queue soon.
976 */
977 return;
978 }
979 p->signal->curr_target = t;
980 }
981
982 /*
983 * Found a killable thread. If the signal will be fatal,
984 * then start taking the whole group down immediately.
985 */
986 if (sig_fatal(p, sig) && !(p->signal->flags & SIGNAL_GROUP_EXIT) &&
987 !sigismember(&t->real_blocked, sig) &&
988 (sig == SIGKILL || !(t->ptrace & PT_PTRACED))) {
989 /*
990 * This signal will be fatal to the whole group.
991 */
992 if (!sig_kernel_coredump(sig)) {
993 /*
994 * Start a group exit and wake everybody up.
995 * This way we don't have other threads
996 * running and doing things after a slower
997 * thread has the fatal signal pending.
998 */
999 p->signal->flags = SIGNAL_GROUP_EXIT;
1000 p->signal->group_exit_code = sig;
1001 p->signal->group_stop_count = 0;
1002 t = p;
1003 do {
1004 sigaddset(&t->pending.signal, SIGKILL);
1005 signal_wake_up(t, 1);
1006 t = next_thread(t);
1007 } while (t != p);
1008 return;
1009 }
1010
1011 /*
1012 * There will be a core dump. We make all threads other
1013 * than the chosen one go into a group stop so that nothing
1014 * happens until it gets scheduled, takes the signal off
1015 * the shared queue, and does the core dump. This is a
1016 * little more complicated than strictly necessary, but it
1017 * keeps the signal state that winds up in the core dump
1018 * unchanged from the death state, e.g. which thread had
1019 * the core-dump signal unblocked.
1020 */
1021 rm_from_queue(SIG_KERNEL_STOP_MASK, &t->pending);
1022 rm_from_queue(SIG_KERNEL_STOP_MASK, &p->signal->shared_pending);
1023 p->signal->group_stop_count = 0;
1024 p->signal->group_exit_task = t;
1025 t = p;
1026 do {
1027 p->signal->group_stop_count++;
1028 signal_wake_up(t, 0);
1029 t = next_thread(t);
1030 } while (t != p);
1031 wake_up_process(p->signal->group_exit_task);
1032 return;
1033 }
1034
1035 /*
1036 * The signal is already in the shared-pending queue.
1037 * Tell the chosen thread to wake up and dequeue it.
1038 */
1039 signal_wake_up(t, sig == SIGKILL);
1040 return;
1041 }
1042
1043 int
1044 __group_send_sig_info(int sig, struct siginfo *info, struct task_struct *p)
1045 {
1046 int ret = 0;
1047
1048 assert_spin_locked(&p->sighand->siglock);
1049 handle_stop_signal(sig, p);
1050
1051 if (!is_si_special(info) && (info->si_code == SI_TIMER))
1052 /*
1053 * Set up a return to indicate that we dropped the signal.
1054 */
1055 ret = info->si_sys_private;
1056
1057 /* Short-circuit ignored signals. */
1058 if (sig_ignored(p, sig))
1059 return ret;
1060
1061 if (LEGACY_QUEUE(&p->signal->shared_pending, sig))
1062 /* This is a non-RT signal and we already have one queued. */
1063 return ret;
1064
1065 /*
1066 * Put this signal on the shared-pending queue, or fail with EAGAIN.
1067 * We always use the shared queue for process-wide signals,
1068 * to avoid several races.
1069 */
1070 ret = send_signal(sig, info, p, &p->signal->shared_pending);
1071 if (unlikely(ret))
1072 return ret;
1073
1074 __group_complete_signal(sig, p);
1075 return 0;
1076 }
1077
1078 /*
1079 * Nuke all other threads in the group.
1080 */
1081 void zap_other_threads(struct task_struct *p)
1082 {
1083 struct task_struct *t;
1084
1085 p->signal->flags = SIGNAL_GROUP_EXIT;
1086 p->signal->group_stop_count = 0;
1087
1088 if (thread_group_empty(p))
1089 return;
1090
1091 for (t = next_thread(p); t != p; t = next_thread(t)) {
1092 /*
1093 * Don't bother with already dead threads
1094 */
1095 if (t->exit_state)
1096 continue;
1097
1098 /*
1099 * We don't want to notify the parent, since we are
1100 * killed as part of a thread group due to another
1101 * thread doing an execve() or similar. So set the
1102 * exit signal to -1 to allow immediate reaping of
1103 * the process. But don't detach the thread group
1104 * leader.
1105 */
1106 if (t != p->group_leader)
1107 t->exit_signal = -1;
1108
1109 /* SIGKILL will be handled before any pending SIGSTOP */
1110 sigaddset(&t->pending.signal, SIGKILL);
1111 signal_wake_up(t, 1);
1112 }
1113 }
1114
1115 /*
1116 * Must be called with the tasklist_lock held for reading!
1117 */
1118 int group_send_sig_info(int sig, struct siginfo *info, struct task_struct *p)
1119 {
1120 unsigned long flags;
1121 int ret;
1122
1123 ret = check_kill_permission(sig, info, p);
1124 if (!ret && sig && p->sighand) {
1125 spin_lock_irqsave(&p->sighand->siglock, flags);
1126 ret = __group_send_sig_info(sig, info, p);
1127 spin_unlock_irqrestore(&p->sighand->siglock, flags);
1128 }
1129
1130 return ret;
1131 }
1132
1133 /*
1134 * kill_pg_info() sends a signal to a process group: this is what the tty
1135 * control characters do (^C, ^Z etc)
1136 */
1137
1138 int __kill_pg_info(int sig, struct siginfo *info, pid_t pgrp)
1139 {
1140 struct task_struct *p = NULL;
1141 int retval, success;
1142
1143 if (pgrp <= 0)
1144 return -EINVAL;
1145
1146 success = 0;
1147 retval = -ESRCH;
1148 do_each_task_pid(pgrp, PIDTYPE_PGID, p) {
1149 int err = group_send_sig_info(sig, info, p);
1150 success |= !err;
1151 retval = err;
1152 } while_each_task_pid(pgrp, PIDTYPE_PGID, p);
1153 return success ? 0 : retval;
1154 }
1155
1156 int
1157 kill_pg_info(int sig, struct siginfo *info, pid_t pgrp)
1158 {
1159 int retval;
1160
1161 read_lock(&tasklist_lock);
1162 retval = __kill_pg_info(sig, info, pgrp);
1163 read_unlock(&tasklist_lock);
1164
1165 return retval;
1166 }
1167
1168 int
1169 kill_proc_info(int sig, struct siginfo *info, pid_t pid)
1170 {
1171 int error;
1172 struct task_struct *p;
1173
1174 read_lock(&tasklist_lock);
1175 p = find_task_by_pid(pid);
1176 error = -ESRCH;
1177 if (p)
1178 error = group_send_sig_info(sig, info, p);
1179 read_unlock(&tasklist_lock);
1180 return error;
1181 }
1182
1183 /* like kill_proc_info(), but doesn't use uid/euid of "current" */
1184 int kill_proc_info_as_uid(int sig, struct siginfo *info, pid_t pid,
1185 uid_t uid, uid_t euid)
1186 {
1187 int ret = -EINVAL;
1188 struct task_struct *p;
1189
1190 if (!valid_signal(sig))
1191 return ret;
1192
1193 read_lock(&tasklist_lock);
1194 p = find_task_by_pid(pid);
1195 if (!p) {
1196 ret = -ESRCH;
1197 goto out_unlock;
1198 }
1199 if ((!info || ((unsigned long)info != 1 &&
1200 (unsigned long)info != 2 && SI_FROMUSER(info)))
1201 && (euid != p->suid) && (euid != p->uid)
1202 && (uid != p->suid) && (uid != p->uid)) {
1203 ret = -EPERM;
1204 goto out_unlock;
1205 }
1206 if (sig && p->sighand) {
1207 unsigned long flags;
1208 spin_lock_irqsave(&p->sighand->siglock, flags);
1209 ret = __group_send_sig_info(sig, info, p);
1210 spin_unlock_irqrestore(&p->sighand->siglock, flags);
1211 }
1212 out_unlock:
1213 read_unlock(&tasklist_lock);
1214 return ret;
1215 }
1216 EXPORT_SYMBOL_GPL(kill_proc_info_as_uid);
1217
1218 /*
1219 * kill_something_info() interprets pid in interesting ways just like kill(2).
1220 *
1221 * POSIX specifies that kill(-1,sig) is unspecified, but what we have
1222 * is probably wrong. Should make it like BSD or SYSV.
1223 */
1224
1225 static int kill_something_info(int sig, struct siginfo *info, int pid)
1226 {
1227 if (!pid) {
1228 return kill_pg_info(sig, info, process_group(current));
1229 } else if (pid == -1) {
1230 int retval = 0, count = 0;
1231 struct task_struct * p;
1232
1233 read_lock(&tasklist_lock);
1234 for_each_process(p) {
1235 if (p->pid > 1 && p->tgid != current->tgid) {
1236 int err = group_send_sig_info(sig, info, p);
1237 ++count;
1238 if (err != -EPERM)
1239 retval = err;
1240 }
1241 }
1242 read_unlock(&tasklist_lock);
1243 return count ? retval : -ESRCH;
1244 } else if (pid < 0) {
1245 return kill_pg_info(sig, info, -pid);
1246 } else {
1247 return kill_proc_info(sig, info, pid);
1248 }
1249 }
1250
1251 /*
1252 * These are for backward compatibility with the rest of the kernel source.
1253 */
1254
1255 /*
1256 * These two are the most common entry points. They send a signal
1257 * just to the specific thread.
1258 */
1259 int
1260 send_sig_info(int sig, struct siginfo *info, struct task_struct *p)
1261 {
1262 int ret;
1263 unsigned long flags;
1264
1265 /*
1266 * Make sure legacy kernel users don't send in bad values
1267 * (normal paths check this in check_kill_permission).
1268 */
1269 if (!valid_signal(sig))
1270 return -EINVAL;
1271
1272 /*
1273 * We need the tasklist lock even for the specific
1274 * thread case (when we don't need to follow the group
1275 * lists) in order to avoid races with "p->sighand"
1276 * going away or changing from under us.
1277 */
1278 read_lock(&tasklist_lock);
1279 spin_lock_irqsave(&p->sighand->siglock, flags);
1280 ret = specific_send_sig_info(sig, info, p);
1281 spin_unlock_irqrestore(&p->sighand->siglock, flags);
1282 read_unlock(&tasklist_lock);
1283 return ret;
1284 }
1285
1286 #define __si_special(priv) \
1287 ((priv) ? SEND_SIG_PRIV : SEND_SIG_NOINFO)
1288
1289 int
1290 send_sig(int sig, struct task_struct *p, int priv)
1291 {
1292 return send_sig_info(sig, __si_special(priv), p);
1293 }
1294
1295 /*
1296 * This is the entry point for "process-wide" signals.
1297 * They will go to an appropriate thread in the thread group.
1298 */
1299 int
1300 send_group_sig_info(int sig, struct siginfo *info, struct task_struct *p)
1301 {
1302 int ret;
1303 read_lock(&tasklist_lock);
1304 ret = group_send_sig_info(sig, info, p);
1305 read_unlock(&tasklist_lock);
1306 return ret;
1307 }
1308
1309 void
1310 force_sig(int sig, struct task_struct *p)
1311 {
1312 force_sig_info(sig, SEND_SIG_PRIV, p);
1313 }
1314
1315 /*
1316 * When things go south during signal handling, we
1317 * will force a SIGSEGV. And if the signal that caused
1318 * the problem was already a SIGSEGV, we'll want to
1319 * make sure we don't even try to deliver the signal..
1320 */
1321 int
1322 force_sigsegv(int sig, struct task_struct *p)
1323 {
1324 if (sig == SIGSEGV) {
1325 unsigned long flags;
1326 spin_lock_irqsave(&p->sighand->siglock, flags);
1327 p->sighand->action[sig - 1].sa.sa_handler = SIG_DFL;
1328 spin_unlock_irqrestore(&p->sighand->siglock, flags);
1329 }
1330 force_sig(SIGSEGV, p);
1331 return 0;
1332 }
1333
1334 int
1335 kill_pg(pid_t pgrp, int sig, int priv)
1336 {
1337 return kill_pg_info(sig, __si_special(priv), pgrp);
1338 }
1339
1340 int
1341 kill_proc(pid_t pid, int sig, int priv)
1342 {
1343 return kill_proc_info(sig, __si_special(priv), pid);
1344 }
1345
1346 /*
1347 * These functions support sending signals using preallocated sigqueue
1348 * structures. This is needed "because realtime applications cannot
1349 * afford to lose notifications of asynchronous events, like timer
1350 * expirations or I/O completions". In the case of Posix Timers
1351 * we allocate the sigqueue structure from the timer_create. If this
1352 * allocation fails we are able to report the failure to the application
1353 * with an EAGAIN error.
1354 */
1355
1356 struct sigqueue *sigqueue_alloc(void)
1357 {
1358 struct sigqueue *q;
1359
1360 if ((q = __sigqueue_alloc(current, GFP_KERNEL, 0)))
1361 q->flags |= SIGQUEUE_PREALLOC;
1362 return(q);
1363 }
1364
1365 void sigqueue_free(struct sigqueue *q)
1366 {
1367 unsigned long flags;
1368 BUG_ON(!(q->flags & SIGQUEUE_PREALLOC));
1369 /*
1370 * If the signal is still pending remove it from the
1371 * pending queue.
1372 */
1373 if (unlikely(!list_empty(&q->list))) {
1374 spinlock_t *lock = &current->sighand->siglock;
1375 read_lock(&tasklist_lock);
1376 spin_lock_irqsave(lock, flags);
1377 if (!list_empty(&q->list))
1378 list_del_init(&q->list);
1379 spin_unlock_irqrestore(lock, flags);
1380 read_unlock(&tasklist_lock);
1381 }
1382 q->flags &= ~SIGQUEUE_PREALLOC;
1383 __sigqueue_free(q);
1384 }
1385
1386 int
1387 send_sigqueue(int sig, struct sigqueue *q, struct task_struct *p)
1388 {
1389 unsigned long flags;
1390 int ret = 0;
1391
1392 BUG_ON(!(q->flags & SIGQUEUE_PREALLOC));
1393 read_lock(&tasklist_lock);
1394
1395 if (unlikely(p->flags & PF_EXITING)) {
1396 ret = -1;
1397 goto out_err;
1398 }
1399
1400 spin_lock_irqsave(&p->sighand->siglock, flags);
1401
1402 if (unlikely(!list_empty(&q->list))) {
1403 /*
1404 * If an SI_TIMER entry is already queue just increment
1405 * the overrun count.
1406 */
1407 if (q->info.si_code != SI_TIMER)
1408 BUG();
1409 q->info.si_overrun++;
1410 goto out;
1411 }
1412 /* Short-circuit ignored signals. */
1413 if (sig_ignored(p, sig)) {
1414 ret = 1;
1415 goto out;
1416 }
1417
1418 list_add_tail(&q->list, &p->pending.list);
1419 sigaddset(&p->pending.signal, sig);
1420 if (!sigismember(&p->blocked, sig))
1421 signal_wake_up(p, sig == SIGKILL);
1422
1423 out:
1424 spin_unlock_irqrestore(&p->sighand->siglock, flags);
1425 out_err:
1426 read_unlock(&tasklist_lock);
1427
1428 return ret;
1429 }
1430
1431 int
1432 send_group_sigqueue(int sig, struct sigqueue *q, struct task_struct *p)
1433 {
1434 unsigned long flags;
1435 int ret = 0;
1436
1437 BUG_ON(!(q->flags & SIGQUEUE_PREALLOC));
1438 read_lock(&tasklist_lock);
1439 spin_lock_irqsave(&p->sighand->siglock, flags);
1440 handle_stop_signal(sig, p);
1441
1442 /* Short-circuit ignored signals. */
1443 if (sig_ignored(p, sig)) {
1444 ret = 1;
1445 goto out;
1446 }
1447
1448 if (unlikely(!list_empty(&q->list))) {
1449 /*
1450 * If an SI_TIMER entry is already queue just increment
1451 * the overrun count. Other uses should not try to
1452 * send the signal multiple times.
1453 */
1454 if (q->info.si_code != SI_TIMER)
1455 BUG();
1456 q->info.si_overrun++;
1457 goto out;
1458 }
1459
1460 /*
1461 * Put this signal on the shared-pending queue.
1462 * We always use the shared queue for process-wide signals,
1463 * to avoid several races.
1464 */
1465 list_add_tail(&q->list, &p->signal->shared_pending.list);
1466 sigaddset(&p->signal->shared_pending.signal, sig);
1467
1468 __group_complete_signal(sig, p);
1469 out:
1470 spin_unlock_irqrestore(&p->sighand->siglock, flags);
1471 read_unlock(&tasklist_lock);
1472 return(ret);
1473 }
1474
1475 /*
1476 * Wake up any threads in the parent blocked in wait* syscalls.
1477 */
1478 static inline void __wake_up_parent(struct task_struct *p,
1479 struct task_struct *parent)
1480 {
1481 wake_up_interruptible_sync(&parent->signal->wait_chldexit);
1482 }
1483
1484 /*
1485 * Let a parent know about the death of a child.
1486 * For a stopped/continued status change, use do_notify_parent_cldstop instead.
1487 */
1488
1489 void do_notify_parent(struct task_struct *tsk, int sig)
1490 {
1491 struct siginfo info;
1492 unsigned long flags;
1493 struct sighand_struct *psig;
1494
1495 BUG_ON(sig == -1);
1496
1497 /* do_notify_parent_cldstop should have been called instead. */
1498 BUG_ON(tsk->state & (TASK_STOPPED|TASK_TRACED));
1499
1500 BUG_ON(!tsk->ptrace &&
1501 (tsk->group_leader != tsk || !thread_group_empty(tsk)));
1502
1503 info.si_signo = sig;
1504 info.si_errno = 0;
1505 info.si_pid = tsk->pid;
1506 info.si_uid = tsk->uid;
1507
1508 /* FIXME: find out whether or not this is supposed to be c*time. */
1509 info.si_utime = cputime_to_jiffies(cputime_add(tsk->utime,
1510 tsk->signal->utime));
1511 info.si_stime = cputime_to_jiffies(cputime_add(tsk->stime,
1512 tsk->signal->stime));
1513
1514 info.si_status = tsk->exit_code & 0x7f;
1515 if (tsk->exit_code & 0x80)
1516 info.si_code = CLD_DUMPED;
1517 else if (tsk->exit_code & 0x7f)
1518 info.si_code = CLD_KILLED;
1519 else {
1520 info.si_code = CLD_EXITED;
1521 info.si_status = tsk->exit_code >> 8;
1522 }
1523
1524 psig = tsk->parent->sighand;
1525 spin_lock_irqsave(&psig->siglock, flags);
1526 if (sig == SIGCHLD &&
1527 (psig->action[SIGCHLD-1].sa.sa_handler == SIG_IGN ||
1528 (psig->action[SIGCHLD-1].sa.sa_flags & SA_NOCLDWAIT))) {
1529 /*
1530 * We are exiting and our parent doesn't care. POSIX.1
1531 * defines special semantics for setting SIGCHLD to SIG_IGN
1532 * or setting the SA_NOCLDWAIT flag: we should be reaped
1533 * automatically and not left for our parent's wait4 call.
1534 * Rather than having the parent do it as a magic kind of
1535 * signal handler, we just set this to tell do_exit that we
1536 * can be cleaned up without becoming a zombie. Note that
1537 * we still call __wake_up_parent in this case, because a
1538 * blocked sys_wait4 might now return -ECHILD.
1539 *
1540 * Whether we send SIGCHLD or not for SA_NOCLDWAIT
1541 * is implementation-defined: we do (if you don't want
1542 * it, just use SIG_IGN instead).
1543 */
1544 tsk->exit_signal = -1;
1545 if (psig->action[SIGCHLD-1].sa.sa_handler == SIG_IGN)
1546 sig = 0;
1547 }
1548 if (valid_signal(sig) && sig > 0)
1549 __group_send_sig_info(sig, &info, tsk->parent);
1550 __wake_up_parent(tsk, tsk->parent);
1551 spin_unlock_irqrestore(&psig->siglock, flags);
1552 }
1553
1554 static void do_notify_parent_cldstop(struct task_struct *tsk, int to_self, int why)
1555 {
1556 struct siginfo info;
1557 unsigned long flags;
1558 struct task_struct *parent;
1559 struct sighand_struct *sighand;
1560
1561 if (to_self)
1562 parent = tsk->parent;
1563 else {
1564 tsk = tsk->group_leader;
1565 parent = tsk->real_parent;
1566 }
1567
1568 info.si_signo = SIGCHLD;
1569 info.si_errno = 0;
1570 info.si_pid = tsk->pid;
1571 info.si_uid = tsk->uid;
1572
1573 /* FIXME: find out whether or not this is supposed to be c*time. */
1574 info.si_utime = cputime_to_jiffies(tsk->utime);
1575 info.si_stime = cputime_to_jiffies(tsk->stime);
1576
1577 info.si_code = why;
1578 switch (why) {
1579 case CLD_CONTINUED:
1580 info.si_status = SIGCONT;
1581 break;
1582 case CLD_STOPPED:
1583 info.si_status = tsk->signal->group_exit_code & 0x7f;
1584 break;
1585 case CLD_TRAPPED:
1586 info.si_status = tsk->exit_code & 0x7f;
1587 break;
1588 default:
1589 BUG();
1590 }
1591
1592 sighand = parent->sighand;
1593 spin_lock_irqsave(&sighand->siglock, flags);
1594 if (sighand->action[SIGCHLD-1].sa.sa_handler != SIG_IGN &&
1595 !(sighand->action[SIGCHLD-1].sa.sa_flags & SA_NOCLDSTOP))
1596 __group_send_sig_info(SIGCHLD, &info, parent);
1597 /*
1598 * Even if SIGCHLD is not generated, we must wake up wait4 calls.
1599 */
1600 __wake_up_parent(tsk, parent);
1601 spin_unlock_irqrestore(&sighand->siglock, flags);
1602 }
1603
1604 /*
1605 * This must be called with current->sighand->siglock held.
1606 *
1607 * This should be the path for all ptrace stops.
1608 * We always set current->last_siginfo while stopped here.
1609 * That makes it a way to test a stopped process for
1610 * being ptrace-stopped vs being job-control-stopped.
1611 *
1612 * If we actually decide not to stop at all because the tracer is gone,
1613 * we leave nostop_code in current->exit_code.
1614 */
1615 static void ptrace_stop(int exit_code, int nostop_code, siginfo_t *info)
1616 {
1617 /*
1618 * If there is a group stop in progress,
1619 * we must participate in the bookkeeping.
1620 */
1621 if (current->signal->group_stop_count > 0)
1622 --current->signal->group_stop_count;
1623
1624 current->last_siginfo = info;
1625 current->exit_code = exit_code;
1626
1627 /* Let the debugger run. */
1628 set_current_state(TASK_TRACED);
1629 spin_unlock_irq(&current->sighand->siglock);
1630 read_lock(&tasklist_lock);
1631 if (likely(current->ptrace & PT_PTRACED) &&
1632 likely(current->parent != current->real_parent ||
1633 !(current->ptrace & PT_ATTACHED)) &&
1634 (likely(current->parent->signal != current->signal) ||
1635 !unlikely(current->signal->flags & SIGNAL_GROUP_EXIT))) {
1636 do_notify_parent_cldstop(current, 1, CLD_TRAPPED);
1637 read_unlock(&tasklist_lock);
1638 schedule();
1639 } else {
1640 /*
1641 * By the time we got the lock, our tracer went away.
1642 * Don't stop here.
1643 */
1644 read_unlock(&tasklist_lock);
1645 set_current_state(TASK_RUNNING);
1646 current->exit_code = nostop_code;
1647 }
1648
1649 /*
1650 * We are back. Now reacquire the siglock before touching
1651 * last_siginfo, so that we are sure to have synchronized with
1652 * any signal-sending on another CPU that wants to examine it.
1653 */
1654 spin_lock_irq(&current->sighand->siglock);
1655 current->last_siginfo = NULL;
1656
1657 /*
1658 * Queued signals ignored us while we were stopped for tracing.
1659 * So check for any that we should take before resuming user mode.
1660 */
1661 recalc_sigpending();
1662 }
1663
1664 void ptrace_notify(int exit_code)
1665 {
1666 siginfo_t info;
1667
1668 BUG_ON((exit_code & (0x7f | ~0xffff)) != SIGTRAP);
1669
1670 memset(&info, 0, sizeof info);
1671 info.si_signo = SIGTRAP;
1672 info.si_code = exit_code;
1673 info.si_pid = current->pid;
1674 info.si_uid = current->uid;
1675
1676 /* Let the debugger run. */
1677 spin_lock_irq(&current->sighand->siglock);
1678 ptrace_stop(exit_code, 0, &info);
1679 spin_unlock_irq(&current->sighand->siglock);
1680 }
1681
1682 static void
1683 finish_stop(int stop_count)
1684 {
1685 int to_self;
1686
1687 /*
1688 * If there are no other threads in the group, or if there is
1689 * a group stop in progress and we are the last to stop,
1690 * report to the parent. When ptraced, every thread reports itself.
1691 */
1692 if (stop_count < 0 || (current->ptrace & PT_PTRACED))
1693 to_self = 1;
1694 else if (stop_count == 0)
1695 to_self = 0;
1696 else
1697 goto out;
1698
1699 read_lock(&tasklist_lock);
1700 do_notify_parent_cldstop(current, to_self, CLD_STOPPED);
1701 read_unlock(&tasklist_lock);
1702
1703 out:
1704 schedule();
1705 /*
1706 * Now we don't run again until continued.
1707 */
1708 current->exit_code = 0;
1709 }
1710
1711 /*
1712 * This performs the stopping for SIGSTOP and other stop signals.
1713 * We have to stop all threads in the thread group.
1714 * Returns nonzero if we've actually stopped and released the siglock.
1715 * Returns zero if we didn't stop and still hold the siglock.
1716 */
1717 static int
1718 do_signal_stop(int signr)
1719 {
1720 struct signal_struct *sig = current->signal;
1721 struct sighand_struct *sighand = current->sighand;
1722 int stop_count = -1;
1723
1724 if (!likely(sig->flags & SIGNAL_STOP_DEQUEUED))
1725 return 0;
1726
1727 if (sig->group_stop_count > 0) {
1728 /*
1729 * There is a group stop in progress. We don't need to
1730 * start another one.
1731 */
1732 signr = sig->group_exit_code;
1733 stop_count = --sig->group_stop_count;
1734 current->exit_code = signr;
1735 set_current_state(TASK_STOPPED);
1736 if (stop_count == 0)
1737 sig->flags = SIGNAL_STOP_STOPPED;
1738 spin_unlock_irq(&sighand->siglock);
1739 }
1740 else if (thread_group_empty(current)) {
1741 /*
1742 * Lock must be held through transition to stopped state.
1743 */
1744 current->exit_code = current->signal->group_exit_code = signr;
1745 set_current_state(TASK_STOPPED);
1746 sig->flags = SIGNAL_STOP_STOPPED;
1747 spin_unlock_irq(&sighand->siglock);
1748 }
1749 else {
1750 /*
1751 * There is no group stop already in progress.
1752 * We must initiate one now, but that requires
1753 * dropping siglock to get both the tasklist lock
1754 * and siglock again in the proper order. Note that
1755 * this allows an intervening SIGCONT to be posted.
1756 * We need to check for that and bail out if necessary.
1757 */
1758 struct task_struct *t;
1759
1760 spin_unlock_irq(&sighand->siglock);
1761
1762 /* signals can be posted during this window */
1763
1764 read_lock(&tasklist_lock);
1765 spin_lock_irq(&sighand->siglock);
1766
1767 if (!likely(sig->flags & SIGNAL_STOP_DEQUEUED)) {
1768 /*
1769 * Another stop or continue happened while we
1770 * didn't have the lock. We can just swallow this
1771 * signal now. If we raced with a SIGCONT, that
1772 * should have just cleared it now. If we raced
1773 * with another processor delivering a stop signal,
1774 * then the SIGCONT that wakes us up should clear it.
1775 */
1776 read_unlock(&tasklist_lock);
1777 return 0;
1778 }
1779
1780 if (sig->group_stop_count == 0) {
1781 sig->group_exit_code = signr;
1782 stop_count = 0;
1783 for (t = next_thread(current); t != current;
1784 t = next_thread(t))
1785 /*
1786 * Setting state to TASK_STOPPED for a group
1787 * stop is always done with the siglock held,
1788 * so this check has no races.
1789 */
1790 if (!t->exit_state &&
1791 !(t->state & (TASK_STOPPED|TASK_TRACED))) {
1792 stop_count++;
1793 signal_wake_up(t, 0);
1794 }
1795 sig->group_stop_count = stop_count;
1796 }
1797 else {
1798 /* A race with another thread while unlocked. */
1799 signr = sig->group_exit_code;
1800 stop_count = --sig->group_stop_count;
1801 }
1802
1803 current->exit_code = signr;
1804 set_current_state(TASK_STOPPED);
1805 if (stop_count == 0)
1806 sig->flags = SIGNAL_STOP_STOPPED;
1807
1808 spin_unlock_irq(&sighand->siglock);
1809 read_unlock(&tasklist_lock);
1810 }
1811
1812 finish_stop(stop_count);
1813 return 1;
1814 }
1815
1816 /*
1817 * Do appropriate magic when group_stop_count > 0.
1818 * We return nonzero if we stopped, after releasing the siglock.
1819 * We return zero if we still hold the siglock and should look
1820 * for another signal without checking group_stop_count again.
1821 */
1822 static inline int handle_group_stop(void)
1823 {
1824 int stop_count;
1825
1826 if (current->signal->group_exit_task == current) {
1827 /*
1828 * Group stop is so we can do a core dump,
1829 * We are the initiating thread, so get on with it.
1830 */
1831 current->signal->group_exit_task = NULL;
1832 return 0;
1833 }
1834
1835 if (current->signal->flags & SIGNAL_GROUP_EXIT)
1836 /*
1837 * Group stop is so another thread can do a core dump,
1838 * or else we are racing against a death signal.
1839 * Just punt the stop so we can get the next signal.
1840 */
1841 return 0;
1842
1843 /*
1844 * There is a group stop in progress. We stop
1845 * without any associated signal being in our queue.
1846 */
1847 stop_count = --current->signal->group_stop_count;
1848 if (stop_count == 0)
1849 current->signal->flags = SIGNAL_STOP_STOPPED;
1850 current->exit_code = current->signal->group_exit_code;
1851 set_current_state(TASK_STOPPED);
1852 spin_unlock_irq(&current->sighand->siglock);
1853 finish_stop(stop_count);
1854 return 1;
1855 }
1856
1857 int get_signal_to_deliver(siginfo_t *info, struct k_sigaction *return_ka,
1858 struct pt_regs *regs, void *cookie)
1859 {
1860 sigset_t *mask = &current->blocked;
1861 int signr = 0;
1862
1863 relock:
1864 spin_lock_irq(&current->sighand->siglock);
1865 for (;;) {
1866 struct k_sigaction *ka;
1867
1868 if (unlikely(current->signal->group_stop_count > 0) &&
1869 handle_group_stop())
1870 goto relock;
1871
1872 signr = dequeue_signal(current, mask, info);
1873
1874 if (!signr)
1875 break; /* will return 0 */
1876
1877 if ((current->ptrace & PT_PTRACED) && signr != SIGKILL) {
1878 ptrace_signal_deliver(regs, cookie);
1879
1880 /* Let the debugger run. */
1881 ptrace_stop(signr, signr, info);
1882
1883 /* We're back. Did the debugger cancel the sig or group_exit? */
1884 signr = current->exit_code;
1885 if (signr == 0 || current->signal->flags & SIGNAL_GROUP_EXIT)
1886 continue;
1887
1888 current->exit_code = 0;
1889
1890 /* Update the siginfo structure if the signal has
1891 changed. If the debugger wanted something
1892 specific in the siginfo structure then it should
1893 have updated *info via PTRACE_SETSIGINFO. */
1894 if (signr != info->si_signo) {
1895 info->si_signo = signr;
1896 info->si_errno = 0;
1897 info->si_code = SI_USER;
1898 info->si_pid = current->parent->pid;
1899 info->si_uid = current->parent->uid;
1900 }
1901
1902 /* If the (new) signal is now blocked, requeue it. */
1903 if (sigismember(&current->blocked, signr)) {
1904 specific_send_sig_info(signr, info, current);
1905 continue;
1906 }
1907 }
1908
1909 ka = &current->sighand->action[signr-1];
1910 if (ka->sa.sa_handler == SIG_IGN) /* Do nothing. */
1911 continue;
1912 if (ka->sa.sa_handler != SIG_DFL) {
1913 /* Run the handler. */
1914 *return_ka = *ka;
1915
1916 if (ka->sa.sa_flags & SA_ONESHOT)
1917 ka->sa.sa_handler = SIG_DFL;
1918
1919 break; /* will return non-zero "signr" value */
1920 }
1921
1922 /*
1923 * Now we are doing the default action for this signal.
1924 */
1925 if (sig_kernel_ignore(signr)) /* Default is nothing. */
1926 continue;
1927
1928 /* Init gets no signals it doesn't want. */
1929 if (current->pid == 1)
1930 continue;
1931
1932 if (sig_kernel_stop(signr)) {
1933 /*
1934 * The default action is to stop all threads in
1935 * the thread group. The job control signals
1936 * do nothing in an orphaned pgrp, but SIGSTOP
1937 * always works. Note that siglock needs to be
1938 * dropped during the call to is_orphaned_pgrp()
1939 * because of lock ordering with tasklist_lock.
1940 * This allows an intervening SIGCONT to be posted.
1941 * We need to check for that and bail out if necessary.
1942 */
1943 if (signr != SIGSTOP) {
1944 spin_unlock_irq(&current->sighand->siglock);
1945
1946 /* signals can be posted during this window */
1947
1948 if (is_orphaned_pgrp(process_group(current)))
1949 goto relock;
1950
1951 spin_lock_irq(&current->sighand->siglock);
1952 }
1953
1954 if (likely(do_signal_stop(signr))) {
1955 /* It released the siglock. */
1956 goto relock;
1957 }
1958
1959 /*
1960 * We didn't actually stop, due to a race
1961 * with SIGCONT or something like that.
1962 */
1963 continue;
1964 }
1965
1966 spin_unlock_irq(&current->sighand->siglock);
1967
1968 /*
1969 * Anything else is fatal, maybe with a core dump.
1970 */
1971 current->flags |= PF_SIGNALED;
1972 if (sig_kernel_coredump(signr)) {
1973 /*
1974 * If it was able to dump core, this kills all
1975 * other threads in the group and synchronizes with
1976 * their demise. If we lost the race with another
1977 * thread getting here, it set group_exit_code
1978 * first and our do_group_exit call below will use
1979 * that value and ignore the one we pass it.
1980 */
1981 do_coredump((long)signr, signr, regs);
1982 }
1983
1984 /*
1985 * Death signals, no core dump.
1986 */
1987 do_group_exit(signr);
1988 /* NOTREACHED */
1989 }
1990 spin_unlock_irq(&current->sighand->siglock);
1991 return signr;
1992 }
1993
1994 EXPORT_SYMBOL(recalc_sigpending);
1995 EXPORT_SYMBOL_GPL(dequeue_signal);
1996 EXPORT_SYMBOL(flush_signals);
1997 EXPORT_SYMBOL(force_sig);
1998 EXPORT_SYMBOL(kill_pg);
1999 EXPORT_SYMBOL(kill_proc);
2000 EXPORT_SYMBOL(ptrace_notify);
2001 EXPORT_SYMBOL(send_sig);
2002 EXPORT_SYMBOL(send_sig_info);
2003 EXPORT_SYMBOL(sigprocmask);
2004 EXPORT_SYMBOL(block_all_signals);
2005 EXPORT_SYMBOL(unblock_all_signals);
2006
2007
2008 /*
2009 * System call entry points.
2010 */
2011
2012 asmlinkage long sys_restart_syscall(void)
2013 {
2014 struct restart_block *restart = &current_thread_info()->restart_block;
2015 return restart->fn(restart);
2016 }
2017
2018 long do_no_restart_syscall(struct restart_block *param)
2019 {
2020 return -EINTR;
2021 }
2022
2023 /*
2024 * We don't need to get the kernel lock - this is all local to this
2025 * particular thread.. (and that's good, because this is _heavily_
2026 * used by various programs)
2027 */
2028
2029 /*
2030 * This is also useful for kernel threads that want to temporarily
2031 * (or permanently) block certain signals.
2032 *
2033 * NOTE! Unlike the user-mode sys_sigprocmask(), the kernel
2034 * interface happily blocks "unblockable" signals like SIGKILL
2035 * and friends.
2036 */
2037 int sigprocmask(int how, sigset_t *set, sigset_t *oldset)
2038 {
2039 int error;
2040 sigset_t old_block;
2041
2042 spin_lock_irq(&current->sighand->siglock);
2043 old_block = current->blocked;
2044 error = 0;
2045 switch (how) {
2046 case SIG_BLOCK:
2047 sigorsets(&current->blocked, &current->blocked, set);
2048 break;
2049 case SIG_UNBLOCK:
2050 signandsets(&current->blocked, &current->blocked, set);
2051 break;
2052 case SIG_SETMASK:
2053 current->blocked = *set;
2054 break;
2055 default:
2056 error = -EINVAL;
2057 }
2058 recalc_sigpending();
2059 spin_unlock_irq(&current->sighand->siglock);
2060 if (oldset)
2061 *oldset = old_block;
2062 return error;
2063 }
2064
2065 asmlinkage long
2066 sys_rt_sigprocmask(int how, sigset_t __user *set, sigset_t __user *oset, size_t sigsetsize)
2067 {
2068 int error = -EINVAL;
2069 sigset_t old_set, new_set;
2070
2071 /* XXX: Don't preclude handling different sized sigset_t's. */
2072 if (sigsetsize != sizeof(sigset_t))
2073 goto out;
2074
2075 if (set) {
2076 error = -EFAULT;
2077 if (copy_from_user(&new_set, set, sizeof(*set)))
2078 goto out;
2079 sigdelsetmask(&new_set, sigmask(SIGKILL)|sigmask(SIGSTOP));
2080
2081 error = sigprocmask(how, &new_set, &old_set);
2082 if (error)
2083 goto out;
2084 if (oset)
2085 goto set_old;
2086 } else if (oset) {
2087 spin_lock_irq(&current->sighand->siglock);
2088 old_set = current->blocked;
2089 spin_unlock_irq(&current->sighand->siglock);
2090
2091 set_old:
2092 error = -EFAULT;
2093 if (copy_to_user(oset, &old_set, sizeof(*oset)))
2094 goto out;
2095 }
2096 error = 0;
2097 out:
2098 return error;
2099 }
2100
2101 long do_sigpending(void __user *set, unsigned long sigsetsize)
2102 {
2103 long error = -EINVAL;
2104 sigset_t pending;
2105
2106 if (sigsetsize > sizeof(sigset_t))
2107 goto out;
2108
2109 spin_lock_irq(&current->sighand->siglock);
2110 sigorsets(&pending, &current->pending.signal,
2111 &current->signal->shared_pending.signal);
2112 spin_unlock_irq(&current->sighand->siglock);
2113
2114 /* Outside the lock because only this thread touches it. */
2115 sigandsets(&pending, &current->blocked, &pending);
2116
2117 error = -EFAULT;
2118 if (!copy_to_user(set, &pending, sigsetsize))
2119 error = 0;
2120
2121 out:
2122 return error;
2123 }
2124
2125 asmlinkage long
2126 sys_rt_sigpending(sigset_t __user *set, size_t sigsetsize)
2127 {
2128 return do_sigpending(set, sigsetsize);
2129 }
2130
2131 #ifndef HAVE_ARCH_COPY_SIGINFO_TO_USER
2132
2133 int copy_siginfo_to_user(siginfo_t __user *to, siginfo_t *from)
2134 {
2135 int err;
2136
2137 if (!access_ok (VERIFY_WRITE, to, sizeof(siginfo_t)))
2138 return -EFAULT;
2139 if (from->si_code < 0)
2140 return __copy_to_user(to, from, sizeof(siginfo_t))
2141 ? -EFAULT : 0;
2142 /*
2143 * If you change siginfo_t structure, please be sure
2144 * this code is fixed accordingly.
2145 * It should never copy any pad contained in the structure
2146 * to avoid security leaks, but must copy the generic
2147 * 3 ints plus the relevant union member.
2148 */
2149 err = __put_user(from->si_signo, &to->si_signo);
2150 err |= __put_user(from->si_errno, &to->si_errno);
2151 err |= __put_user((short)from->si_code, &to->si_code);
2152 switch (from->si_code & __SI_MASK) {
2153 case __SI_KILL:
2154 err |= __put_user(from->si_pid, &to->si_pid);
2155 err |= __put_user(from->si_uid, &to->si_uid);
2156 break;
2157 case __SI_TIMER:
2158 err |= __put_user(from->si_tid, &to->si_tid);
2159 err |= __put_user(from->si_overrun, &to->si_overrun);
2160 err |= __put_user(from->si_ptr, &to->si_ptr);
2161 break;
2162 case __SI_POLL:
2163 err |= __put_user(from->si_band, &to->si_band);
2164 err |= __put_user(from->si_fd, &to->si_fd);
2165 break;
2166 case __SI_FAULT:
2167 err |= __put_user(from->si_addr, &to->si_addr);
2168 #ifdef __ARCH_SI_TRAPNO
2169 err |= __put_user(from->si_trapno, &to->si_trapno);
2170 #endif
2171 break;
2172 case __SI_CHLD:
2173 err |= __put_user(from->si_pid, &to->si_pid);
2174 err |= __put_user(from->si_uid, &to->si_uid);
2175 err |= __put_user(from->si_status, &to->si_status);
2176 err |= __put_user(from->si_utime, &to->si_utime);
2177 err |= __put_user(from->si_stime, &to->si_stime);
2178 break;
2179 case __SI_RT: /* This is not generated by the kernel as of now. */
2180 case __SI_MESGQ: /* But this is */
2181 err |= __put_user(from->si_pid, &to->si_pid);
2182 err |= __put_user(from->si_uid, &to->si_uid);
2183 err |= __put_user(from->si_ptr, &to->si_ptr);
2184 break;
2185 default: /* this is just in case for now ... */
2186 err |= __put_user(from->si_pid, &to->si_pid);
2187 err |= __put_user(from->si_uid, &to->si_uid);
2188 break;
2189 }
2190 return err;
2191 }
2192
2193 #endif
2194
2195 asmlinkage long
2196 sys_rt_sigtimedwait(const sigset_t __user *uthese,
2197 siginfo_t __user *uinfo,
2198 const struct timespec __user *uts,
2199 size_t sigsetsize)
2200 {
2201 int ret, sig;
2202 sigset_t these;
2203 struct timespec ts;
2204 siginfo_t info;
2205 long timeout = 0;
2206
2207 /* XXX: Don't preclude handling different sized sigset_t's. */
2208 if (sigsetsize != sizeof(sigset_t))
2209 return -EINVAL;
2210
2211 if (copy_from_user(&these, uthese, sizeof(these)))
2212 return -EFAULT;
2213
2214 /*
2215 * Invert the set of allowed signals to get those we
2216 * want to block.
2217 */
2218 sigdelsetmask(&these, sigmask(SIGKILL)|sigmask(SIGSTOP));
2219 signotset(&these);
2220
2221 if (uts) {
2222 if (copy_from_user(&ts, uts, sizeof(ts)))
2223 return -EFAULT;
2224 if (ts.tv_nsec >= 1000000000L || ts.tv_nsec < 0
2225 || ts.tv_sec < 0)
2226 return -EINVAL;
2227 }
2228
2229 spin_lock_irq(&current->sighand->siglock);
2230 sig = dequeue_signal(current, &these, &info);
2231 if (!sig) {
2232 timeout = MAX_SCHEDULE_TIMEOUT;
2233 if (uts)
2234 timeout = (timespec_to_jiffies(&ts)
2235 + (ts.tv_sec || ts.tv_nsec));
2236
2237 if (timeout) {
2238 /* None ready -- temporarily unblock those we're
2239 * interested while we are sleeping in so that we'll
2240 * be awakened when they arrive. */
2241 current->real_blocked = current->blocked;
2242 sigandsets(&current->blocked, &current->blocked, &these);
2243 recalc_sigpending();
2244 spin_unlock_irq(&current->sighand->siglock);
2245
2246 timeout = schedule_timeout_interruptible(timeout);
2247
2248 try_to_freeze();
2249 spin_lock_irq(&current->sighand->siglock);
2250 sig = dequeue_signal(current, &these, &info);
2251 current->blocked = current->real_blocked;
2252 siginitset(&current->real_blocked, 0);
2253 recalc_sigpending();
2254 }
2255 }
2256 spin_unlock_irq(&current->sighand->siglock);
2257
2258 if (sig) {
2259 ret = sig;
2260 if (uinfo) {
2261 if (copy_siginfo_to_user(uinfo, &info))
2262 ret = -EFAULT;
2263 }
2264 } else {
2265 ret = -EAGAIN;
2266 if (timeout)
2267 ret = -EINTR;
2268 }
2269
2270 return ret;
2271 }
2272
2273 asmlinkage long
2274 sys_kill(int pid, int sig)
2275 {
2276 struct siginfo info;
2277
2278 info.si_signo = sig;
2279 info.si_errno = 0;
2280 info.si_code = SI_USER;
2281 info.si_pid = current->tgid;
2282 info.si_uid = current->uid;
2283
2284 return kill_something_info(sig, &info, pid);
2285 }
2286
2287 static int do_tkill(int tgid, int pid, int sig)
2288 {
2289 int error;
2290 struct siginfo info;
2291 struct task_struct *p;
2292
2293 error = -ESRCH;
2294 info.si_signo = sig;
2295 info.si_errno = 0;
2296 info.si_code = SI_TKILL;
2297 info.si_pid = current->tgid;
2298 info.si_uid = current->uid;
2299
2300 read_lock(&tasklist_lock);
2301 p = find_task_by_pid(pid);
2302 if (p && (tgid <= 0 || p->tgid == tgid)) {
2303 error = check_kill_permission(sig, &info, p);
2304 /*
2305 * The null signal is a permissions and process existence
2306 * probe. No signal is actually delivered.
2307 */
2308 if (!error && sig && p->sighand) {
2309 spin_lock_irq(&p->sighand->siglock);
2310 handle_stop_signal(sig, p);
2311 error = specific_send_sig_info(sig, &info, p);
2312 spin_unlock_irq(&p->sighand->siglock);
2313 }
2314 }
2315 read_unlock(&tasklist_lock);
2316
2317 return error;
2318 }
2319
2320 /**
2321 * sys_tgkill - send signal to one specific thread
2322 * @tgid: the thread group ID of the thread
2323 * @pid: the PID of the thread
2324 * @sig: signal to be sent
2325 *
2326 * This syscall also checks the tgid and returns -ESRCH even if the PID
2327 * exists but it's not belonging to the target process anymore. This
2328 * method solves the problem of threads exiting and PIDs getting reused.
2329 */
2330 asmlinkage long sys_tgkill(int tgid, int pid, int sig)
2331 {
2332 /* This is only valid for single tasks */
2333 if (pid <= 0 || tgid <= 0)
2334 return -EINVAL;
2335
2336 return do_tkill(tgid, pid, sig);
2337 }
2338
2339 /*
2340 * Send a signal to only one task, even if it's a CLONE_THREAD task.
2341 */
2342 asmlinkage long
2343 sys_tkill(int pid, int sig)
2344 {
2345 /* This is only valid for single tasks */
2346 if (pid <= 0)
2347 return -EINVAL;
2348
2349 return do_tkill(0, pid, sig);
2350 }
2351
2352 asmlinkage long
2353 sys_rt_sigqueueinfo(int pid, int sig, siginfo_t __user *uinfo)
2354 {
2355 siginfo_t info;
2356
2357 if (copy_from_user(&info, uinfo, sizeof(siginfo_t)))
2358 return -EFAULT;
2359
2360 /* Not even root can pretend to send signals from the kernel.
2361 Nor can they impersonate a kill(), which adds source info. */
2362 if (info.si_code >= 0)
2363 return -EPERM;
2364 info.si_signo = sig;
2365
2366 /* POSIX.1b doesn't mention process groups. */
2367 return kill_proc_info(sig, &info, pid);
2368 }
2369
2370 int
2371 do_sigaction(int sig, const struct k_sigaction *act, struct k_sigaction *oact)
2372 {
2373 struct k_sigaction *k;
2374
2375 if (!valid_signal(sig) || sig < 1 || (act && sig_kernel_only(sig)))
2376 return -EINVAL;
2377
2378 k = &current->sighand->action[sig-1];
2379
2380 spin_lock_irq(&current->sighand->siglock);
2381 if (signal_pending(current)) {
2382 /*
2383 * If there might be a fatal signal pending on multiple
2384 * threads, make sure we take it before changing the action.
2385 */
2386 spin_unlock_irq(&current->sighand->siglock);
2387 return -ERESTARTNOINTR;
2388 }
2389
2390 if (oact)
2391 *oact = *k;
2392
2393 if (act) {
2394 /*
2395 * POSIX 3.3.1.3:
2396 * "Setting a signal action to SIG_IGN for a signal that is
2397 * pending shall cause the pending signal to be discarded,
2398 * whether or not it is blocked."
2399 *
2400 * "Setting a signal action to SIG_DFL for a signal that is
2401 * pending and whose default action is to ignore the signal
2402 * (for example, SIGCHLD), shall cause the pending signal to
2403 * be discarded, whether or not it is blocked"
2404 */
2405 if (act->sa.sa_handler == SIG_IGN ||
2406 (act->sa.sa_handler == SIG_DFL &&
2407 sig_kernel_ignore(sig))) {
2408 /*
2409 * This is a fairly rare case, so we only take the
2410 * tasklist_lock once we're sure we'll need it.
2411 * Now we must do this little unlock and relock
2412 * dance to maintain the lock hierarchy.
2413 */
2414 struct task_struct *t = current;
2415 spin_unlock_irq(&t->sighand->siglock);
2416 read_lock(&tasklist_lock);
2417 spin_lock_irq(&t->sighand->siglock);
2418 *k = *act;
2419 sigdelsetmask(&k->sa.sa_mask,
2420 sigmask(SIGKILL) | sigmask(SIGSTOP));
2421 rm_from_queue(sigmask(sig), &t->signal->shared_pending);
2422 do {
2423 rm_from_queue(sigmask(sig), &t->pending);
2424 recalc_sigpending_tsk(t);
2425 t = next_thread(t);
2426 } while (t != current);
2427 spin_unlock_irq(&current->sighand->siglock);
2428 read_unlock(&tasklist_lock);
2429 return 0;
2430 }
2431
2432 *k = *act;
2433 sigdelsetmask(&k->sa.sa_mask,
2434 sigmask(SIGKILL) | sigmask(SIGSTOP));
2435 }
2436
2437 spin_unlock_irq(&current->sighand->siglock);
2438 return 0;
2439 }
2440
2441 int
2442 do_sigaltstack (const stack_t __user *uss, stack_t __user *uoss, unsigned long sp)
2443 {
2444 stack_t oss;
2445 int error;
2446
2447 if (uoss) {
2448 oss.ss_sp = (void __user *) current->sas_ss_sp;
2449 oss.ss_size = current->sas_ss_size;
2450 oss.ss_flags = sas_ss_flags(sp);
2451 }
2452
2453 if (uss) {
2454 void __user *ss_sp;
2455 size_t ss_size;
2456 int ss_flags;
2457
2458 error = -EFAULT;
2459 if (!access_ok(VERIFY_READ, uss, sizeof(*uss))
2460 || __get_user(ss_sp, &uss->ss_sp)
2461 || __get_user(ss_flags, &uss->ss_flags)
2462 || __get_user(ss_size, &uss->ss_size))
2463 goto out;
2464
2465 error = -EPERM;
2466 if (on_sig_stack(sp))
2467 goto out;
2468
2469 error = -EINVAL;
2470 /*
2471 *
2472 * Note - this code used to test ss_flags incorrectly
2473 * old code may have been written using ss_flags==0
2474 * to mean ss_flags==SS_ONSTACK (as this was the only
2475 * way that worked) - this fix preserves that older
2476 * mechanism
2477 */
2478 if (ss_flags != SS_DISABLE && ss_flags != SS_ONSTACK && ss_flags != 0)
2479 goto out;
2480
2481 if (ss_flags == SS_DISABLE) {
2482 ss_size = 0;
2483 ss_sp = NULL;
2484 } else {
2485 error = -ENOMEM;
2486 if (ss_size < MINSIGSTKSZ)
2487 goto out;
2488 }
2489
2490 current->sas_ss_sp = (unsigned long) ss_sp;
2491 current->sas_ss_size = ss_size;
2492 }
2493
2494 if (uoss) {
2495 error = -EFAULT;
2496 if (copy_to_user(uoss, &oss, sizeof(oss)))
2497 goto out;
2498 }
2499
2500 error = 0;
2501 out:
2502 return error;
2503 }
2504
2505 #ifdef __ARCH_WANT_SYS_SIGPENDING
2506
2507 asmlinkage long
2508 sys_sigpending(old_sigset_t __user *set)
2509 {
2510 return do_sigpending(set, sizeof(*set));
2511 }
2512
2513 #endif
2514
2515 #ifdef __ARCH_WANT_SYS_SIGPROCMASK
2516 /* Some platforms have their own version with special arguments others
2517 support only sys_rt_sigprocmask. */
2518
2519 asmlinkage long
2520 sys_sigprocmask(int how, old_sigset_t __user *set, old_sigset_t __user *oset)
2521 {
2522 int error;
2523 old_sigset_t old_set, new_set;
2524
2525 if (set) {
2526 error = -EFAULT;
2527 if (copy_from_user(&new_set, set, sizeof(*set)))
2528 goto out;
2529 new_set &= ~(sigmask(SIGKILL) | sigmask(SIGSTOP));
2530
2531 spin_lock_irq(&current->sighand->siglock);
2532 old_set = current->blocked.sig[0];
2533
2534 error = 0;
2535 switch (how) {
2536 default:
2537 error = -EINVAL;
2538 break;
2539 case SIG_BLOCK:
2540 sigaddsetmask(&current->blocked, new_set);
2541 break;
2542 case SIG_UNBLOCK:
2543 sigdelsetmask(&current->blocked, new_set);
2544 break;
2545 case SIG_SETMASK:
2546 current->blocked.sig[0] = new_set;
2547 break;
2548 }
2549
2550 recalc_sigpending();
2551 spin_unlock_irq(&current->sighand->siglock);
2552 if (error)
2553 goto out;
2554 if (oset)
2555 goto set_old;
2556 } else if (oset) {
2557 old_set = current->blocked.sig[0];
2558 set_old:
2559 error = -EFAULT;
2560 if (copy_to_user(oset, &old_set, sizeof(*oset)))
2561 goto out;
2562 }
2563 error = 0;
2564 out:
2565 return error;
2566 }
2567 #endif /* __ARCH_WANT_SYS_SIGPROCMASK */
2568
2569 #ifdef __ARCH_WANT_SYS_RT_SIGACTION
2570 asmlinkage long
2571 sys_rt_sigaction(int sig,
2572 const struct sigaction __user *act,
2573 struct sigaction __user *oact,
2574 size_t sigsetsize)
2575 {
2576 struct k_sigaction new_sa, old_sa;
2577 int ret = -EINVAL;
2578
2579 /* XXX: Don't preclude handling different sized sigset_t's. */
2580 if (sigsetsize != sizeof(sigset_t))
2581 goto out;
2582
2583 if (act) {
2584 if (copy_from_user(&new_sa.sa, act, sizeof(new_sa.sa)))
2585 return -EFAULT;
2586 }
2587
2588 ret = do_sigaction(sig, act ? &new_sa : NULL, oact ? &old_sa : NULL);
2589
2590 if (!ret && oact) {
2591 if (copy_to_user(oact, &old_sa.sa, sizeof(old_sa.sa)))
2592 return -EFAULT;
2593 }
2594 out:
2595 return ret;
2596 }
2597 #endif /* __ARCH_WANT_SYS_RT_SIGACTION */
2598
2599 #ifdef __ARCH_WANT_SYS_SGETMASK
2600
2601 /*
2602 * For backwards compatibility. Functionality superseded by sigprocmask.
2603 */
2604 asmlinkage long
2605 sys_sgetmask(void)
2606 {
2607 /* SMP safe */
2608 return current->blocked.sig[0];
2609 }
2610
2611 asmlinkage long
2612 sys_ssetmask(int newmask)
2613 {
2614 int old;
2615
2616 spin_lock_irq(&current->sighand->siglock);
2617 old = current->blocked.sig[0];
2618
2619 siginitset(&current->blocked, newmask & ~(sigmask(SIGKILL)|
2620 sigmask(SIGSTOP)));
2621 recalc_sigpending();
2622 spin_unlock_irq(&current->sighand->siglock);
2623
2624 return old;
2625 }
2626 #endif /* __ARCH_WANT_SGETMASK */
2627
2628 #ifdef __ARCH_WANT_SYS_SIGNAL
2629 /*
2630 * For backwards compatibility. Functionality superseded by sigaction.
2631 */
2632 asmlinkage unsigned long
2633 sys_signal(int sig, __sighandler_t handler)
2634 {
2635 struct k_sigaction new_sa, old_sa;
2636 int ret;
2637
2638 new_sa.sa.sa_handler = handler;
2639 new_sa.sa.sa_flags = SA_ONESHOT | SA_NOMASK;
2640
2641 ret = do_sigaction(sig, &new_sa, &old_sa);
2642
2643 return ret ? ret : (unsigned long)old_sa.sa.sa_handler;
2644 }
2645 #endif /* __ARCH_WANT_SYS_SIGNAL */
2646
2647 #ifdef __ARCH_WANT_SYS_PAUSE
2648
2649 asmlinkage long
2650 sys_pause(void)
2651 {
2652 current->state = TASK_INTERRUPTIBLE;
2653 schedule();
2654 return -ERESTARTNOHAND;
2655 }
2656
2657 #endif
2658
2659 void __init signals_init(void)
2660 {
2661 sigqueue_cachep =
2662 kmem_cache_create("sigqueue",
2663 sizeof(struct sigqueue),
2664 __alignof__(struct sigqueue),
2665 SLAB_PANIC, NULL, NULL);
2666 }