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