Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 7 Oct 2001 11:20:02 -0700 (PDT)
From:      Valentin Nechayev <netch@netch.kiev.ua>
To:        freebsd-bugs@FreeBSD.org
Subject:   Re: kern/30985: incorrect signal handling in snpread()
Message-ID:  <200110071820.f97IK2T01515@freefall.freebsd.org>

next in thread | raw e-mail | index | archive | help
The following reply was made to PR kern/30985; it has been noted by GNATS.

From: Valentin Nechayev <netch@netch.kiev.ua>
To: Dima Dorfman <dima@trit.org>
Cc: Valentin Nechayev <netch@segfault.kiev.ua>,
	FreeBSD-gnats-submit@freebsd.org
Subject: Re: kern/30985: incorrect signal handling in snpread()
Date: Sun, 7 Oct 2001 21:15:36 +0300

  Sun, Oct 07, 2001 at 08:50:41, dima wrote about "Re: kern/30985: incorrect signal handling in snpread()": 
 
 > > -			tsleep((caddr_t) snp, (PZERO + 1) | PCATCH, "snoopread"
 > > , 0);
 > > +			error = tsleep((caddr_t) snp, (PZERO + 1) | PCATCH, "snoopread", 0);
 > > +			if (error == EINTR || error == ERESTART) {
 > > +				splx(s);
 > > +				return EINTR;
 > > +			}
 > 
 > Why can't we just return whatever tsleep() returns, as most (all?)
 > other drivers do?  Like so (untested):
 
 I am not experienced kernel hacker ;) The examples I saw in kernel code,
 mostly test for ERESTART and possibly EINTR and exit from routine
 in case of such codes. tsleep(9) man page (in RELENG_4_4) mentions the only
 another return code allowed - EWOULDBLOCK in timeout case, but snpread()
 doesn't suppose timeout. If you suppose that exit on any nonzero value
 is correct, you probably are right.
 
 >  			snp->snp_flags |= SNOOP_RWAIT;
 > -			tsleep((caddr_t)snp, (PZERO + 1) | PCATCH, "snprd", 0);
 > +			error = tsleep((caddr_t)snp, (PZERO + 1) | PCATCH,
 > +			    "snprd", 0);
 > +			if (error != 0)
 > +				return (error);
 >  		}
 
 
 /netch

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-bugs" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200110071820.f97IK2T01515>