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