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