*/
while (signal_pending(current)) {
siginfo_t info;
- unsigned long signr;
+ unsigned long signr = 0;
spin_lock_irq(¤t->sig->siglock);
- signr = dequeue_signal(¤t->blocked, &info);
+ if (current->sig->shared_pending.head)
+ signr = dequeue_signal(¤t->sig->shared_pending, ¤t->blocked, &info);
+ if (!signr)
+ signr = dequeue_signal(¤t->pending, ¤t->blocked, &info);
spin_unlock_irq(¤t->sig->siglock);
switch(signr) {
*/
while (signal_pending(current)) {
siginfo_t info;
- unsigned long signr;
+ unsigned long signr = 0 ;
spin_lock_irq(¤t->sig->siglock);
- signr = dequeue_signal(¤t->blocked, &info);
+ if (current->sig->shared_pending.head)
+ signr = dequeue_signal(¤t->sig->shared_pending, ¤t->blocked, &info);
+ if (!signr)
+ signr = dequeue_signal(¤t->pending, ¤t->blocked, &info);
spin_unlock_irq(¤t->sig->siglock);
switch(signr) {