when a process waiting for an afs operation to complete receives
a signal.
seq = evp->seq;
while (seq == evp->seq) {
+ sigset_t saved_set;
+
AFS_ASSERT_GLOCK();
AFS_GUNLOCK();
+ spin_lock_irq(¤t->sigmask_lock);
+ saved_set = current->blocked;
+ sigfillset(¤t->blocked);
+ recalc_sigpending(current);
+ spin_unlock_irq(¤t->sigmask_lock);
+
interruptible_sleep_on(&evp->cond);
+
+ spin_lock_irq(¤t->sigmask_lock);
+ current->blocked = saved_set;
+ recalc_sigpending(current);
+ spin_unlock_irq(¤t->sigmask_lock);
AFS_GLOCK();
}
relevent(evp);