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