From owner-freebsd-current Wed Sep 29 12: 6:25 1999 Delivered-To: freebsd-current@freebsd.org Received: from wall.polstra.com (rtrwan160.accessone.com [206.213.115.74]) by hub.freebsd.org (Postfix) with ESMTP id 3119D155BB for ; Wed, 29 Sep 1999 12:06:19 -0700 (PDT) (envelope-from jdp@polstra.com) Received: from vashon.polstra.com (vashon.polstra.com [206.213.73.13]) by wall.polstra.com (8.9.3/8.9.3) with ESMTP id MAA17143; Wed, 29 Sep 1999 12:06:10 -0700 (PDT) (envelope-from jdp@polstra.com) Received: (from jdp@localhost) by vashon.polstra.com (8.9.3/8.9.1) id MAA23025; Wed, 29 Sep 1999 12:06:09 -0700 (PDT) (envelope-from jdp@polstra.com) Message-ID: X-Mailer: XFMail 1.3 [p0] on FreeBSD X-Priority: 3 (Normal) Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 8bit MIME-Version: 1.0 In-Reply-To: <199909291902.NAA24329@mt.sri.com> Date: Wed, 29 Sep 1999 12:06:09 -0700 (PDT) Organization: Polstra & Co., Inc. From: John Polstra To: Nate Williams Subject: Re: HEADS UP: sigset_t changes committed Cc: current@FreeBSD.ORG, marcel@scc.nl Sender: owner-freebsd-current@FreeBSD.ORG Precedence: bulk X-Loop: FreeBSD.ORG 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 majordomo@FreeBSD.org with "unsubscribe freebsd-current" in the body of the message