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