Re: PATCH: NFS oops in 2.1.117

Alan Cox (alan@lxorguk.ukuu.org.uk)
Sat, 22 Aug 1998 01:10:01 +0100 (BST)


> If you expect to get signals, you'd better have INTERRUPTIBLE, but exactly
> because IS_SOFT was disabled it meant that you essentially checked for
> signals even though you asked the scheduler to not wake you up for them.
> See?

Thats what I thought when I left it alone

> Well, they'd be delivered, but you wouldn't be woken up by them, so..

A wakeup for the page that wasnt the final wake up would then see the signal
if it had someone got through the blocking.

Unless there is something wrong with the following code then there is
another way into rpc_execute() for synchronous rpcs. Well I know what Im
looking for anyway

void rpc_clnt_sigmask(struct rpc_clnt *clnt, sigset_t *oldset)
{
unsigned long sigallow = sigmask(SIGKILL);
unsigned long irqflags;

/* Turn off various signals */
if (clnt->cl_intr) {
struct k_sigaction *action = current->sig->action;
if (action[SIGINT-1].sa.sa_handler == SIG_DFL)
sigallow |= sigmask(SIGINT);
if (action[SIGQUIT-1].sa.sa_handler == SIG_DFL)
sigallow |= sigmask(SIGQUIT);
}
spin_lock_irqsave(&current->sigmask_lock, irqflags);
*oldset = current->blocked;
siginitsetinv(&current->blocked, sigallow & ~oldset->sig[0]);
recalc_sigpending(current);
spin_unlock_irqrestore(&current->sigmask_lock, irqflags);
}

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.altern.org/andrebalsa/doc/lkml-faq.html