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