Date: Tue, 26 Jan 1999 13:20:01 -0800 (PST) From: Darrell Anderson <anderson@cs.duke.edu> To: freebsd-bugs@FreeBSD.ORG Subject: Re: kern/9679: fix for uninterruptible open in portal file system Message-ID: <199901262120.NAA54409@freefall.freebsd.org>
index | next in thread | raw e-mail
The following reply was made to PR kern/9679; it has been noted by GNATS.
From: Darrell Anderson <anderson@cs.duke.edu>
To: freebsd-gnats-submit@freebsd.org, anderson@cs.duke.edu
Cc:
Subject: Re: kern/9679: fix for uninterruptible open in portal file system
Date: Tue, 26 Jan 1999 16:18:54 -0500
incorporating Bruce's suggestions cleans things up and still works:
RCS file: /cvs/src/sys/miscfs/portal/portal_vnops.c,v
retrieving revision 1.35
diff -u -r1.35 portal_vnops.c
--- portal_vnops.c 1999/01/12 11:49:30 1.35
+++ portal_vnops.c 1999/01/26 21:17:34
@@ -61,6 +61,7 @@
#include <sys/socketvar.h>
#include <sys/un.h>
#include <sys/unpcb.h>
+#include <sys/signalvar.h>
#include <miscfs/portal/portal.h>
static int portal_fileid = PORTAL_ROOTFILEID+1;
@@ -287,7 +288,11 @@
splx(s);
goto bad;
}
- (void) tsleep((caddr_t) &so->so_timeo, PSOCK,
"portalcon", 5 * hz);
+ error = tsleep((caddr_t) &so->so_timeo, PCATCH|PSOCK,
"portalcon", 5 * hz);
+ if (error) {
+ splx(s);
+ goto bad;
+ }
}
splx(s);
@@ -301,7 +306,6 @@
*/
so->so_rcv.sb_timeo = 0;
so->so_snd.sb_timeo = 0;
- so->so_rcv.sb_flags |= SB_NOINTR;
so->so_snd.sb_flags |= SB_NOINTR;
@@ -334,6 +338,17 @@
&m, &cm, &flags);
if (error)
goto bad;
+ /*
+ * if there's a signal pending, call tsleep to set the
+ * proper process state and give us the EINTR error.
+ * don't need to worry about the portal daemon b/c
+ * we close the socket on our way out.
+ */
+ if (CURSIG(curproc) != 0) {
+ error = tsleep((caddr_t)vp, PCATCH, "portalcon",
0);
+ if (error)
+ goto bad;
+ }
/*
* Grab an error code from the mbuf.
To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-bugs" in the body of the message
help
Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199901262120.NAA54409>
