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