Nate Williams wrote:
>> Following up on my previous mail regarding the panic on the Alpha,
>> I've been looking at the diff for the code in question, in
>> "src/sys/nfs/nfs_socket.c":
>>
>> @@ -1501,14 +1502,16 @@
>> struct nfsreq *rep;
>> register struct proc *p;
>> {
>> + sigset_t tmpset;
>>
>> + tmpset = p->p_siglist;
>> + SIGSETNAND(tmpset, p->p_sigmask);
>> + SIGSETNAND(tmpset, p->p_sigignore);
>> if (rep && (rep->r_flags & R_SOFTTERM))
>> return (EINTR);
>> if (!(nmp->nm_flag & NFSMNT_INT))
>> return (0);
>> - if (p && p->p_siglist &&
>> - (((p->p_siglist & ~p->p_sigmask) & ~p->p_sigignore) &
>> - NFSINT_SIGMASK))
>> + if (p && SIGNOTEMPTY(p->p_siglist) && NFSINT_SIGMASK(tmpset))
>> return (EINTR);
>> return (0);
>> }
>>
>> It looks like the old code was prepared for "p" to be NULL, but the
>> new code assumes it is non-NULL.
>
> Am I missing something?
>
> - if (p && p->p_siglist &&
> - (((p->p_siglist & ~p->p_sigmask) & ~p->p_sigignore) &
> - NFSINT_SIGMASK))
> + if (p && SIGNOTEMPTY(p->p_siglist) && NFSINT_SIGMASK(tmpset))
>
> The
> if (p ....
>
> in both cases checks for an null p. Or, am I missing something?
You're missing the use of "p->p_siglist" that was added at the top
of the function.
John
To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-current" in the body of the message