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