From owner-freebsd-current Wed Sep 29 12: 8:18 1999 Delivered-To: freebsd-current@freebsd.org Received: from ns.mt.sri.com (ns.mt.sri.com [206.127.79.91]) by hub.freebsd.org (Postfix) with ESMTP id 1CA471593E for ; Wed, 29 Sep 1999 12:07:56 -0700 (PDT) (envelope-from nate@mt.sri.com) Received: from mt.sri.com (rocky.mt.sri.com [206.127.76.100]) by ns.mt.sri.com (8.9.3/8.9.3) with SMTP id NAA24292; Wed, 29 Sep 1999 13:07:52 -0600 (MDT) (envelope-from nate@rocky.mt.sri.com) Received: by mt.sri.com (SMI-8.6/SMI-SVR4) id NAA24394; Wed, 29 Sep 1999 13:07:51 -0600 Date: Wed, 29 Sep 1999 13:07:51 -0600 Message-Id: <199909291907.NAA24394@mt.sri.com> From: Nate Williams MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit To: John Polstra Cc: Nate Williams , current@FreeBSD.ORG, marcel@scc.nl Subject: Re: HEADS UP: sigset_t changes committed In-Reply-To: References: <199909291902.NAA24329@mt.sri.com> X-Mailer: VM 6.34 under 19.16 "Lille" XEmacs Lucid Reply-To: nate@mt.sri.com (Nate Williams) 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. Whoops, thanks for pointing that out. Just call me 'mole-eyed Nate'. *sigh* Nate To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-current" in the body of the message