--- signal.c.orig 2003-05-25 07:12:46.000000000 -0400 +++ signal.c 2003-05-25 07:15:02.000000000 -0400 @@ -885,11 +885,13 @@ break; } + if (error) { + spin_unlock_irq(¤t->sigmask_lock); + goto out; + } current->blocked = new_set; recalc_sigpending(current); spin_unlock_irq(¤t->sigmask_lock); - if (error) - goto out; if (oset) goto set_old; } else if (oset) {