summaryrefslogtreecommitdiffstats
path: root/sys/dev
diff options
context:
space:
mode:
authorbrian <brian@FreeBSD.org>2006-01-03 17:01:43 +0000
committerbrian <brian@FreeBSD.org>2006-01-03 17:01:43 +0000
commit435383325dd7e25922ce8b53d7129f451041a324 (patch)
tree56fa1368e62eaa34afea8fbc79bf59ca5a029763 /sys/dev
parent834b4a427cf2e688b3e0eebeeaa622477f6bf4c0 (diff)
downloadFreeBSD-src-435383325dd7e25922ce8b53d7129f451041a324.zip
FreeBSD-src-435383325dd7e25922ce8b53d7129f451041a324.tar.gz
This signal handling code is worse than a no-op. If a
signal is received during the msleep, the msleep is retried indefinitely as it just keeps returning ERESTART because of the pending signal. Instead, just don't PCATCH - the signal can wait. Sponsored by: Sophos/ActiveState
Diffstat (limited to 'sys/dev')
-rw-r--r--sys/dev/ichsmb/ichsmb.c7
1 files changed, 1 insertions, 6 deletions
diff --git a/sys/dev/ichsmb/ichsmb.c b/sys/dev/ichsmb/ichsmb.c
index 9361c7e..53a91d0 100644
--- a/sys/dev/ichsmb/ichsmb.c
+++ b/sys/dev/ichsmb/ichsmb.c
@@ -625,14 +625,9 @@ ichsmb_wait(sc_p sc)
KASSERT(sc->ich_cmd != -1,
("%s: ich_cmd=%d\n", __func__ , sc->ich_cmd));
mtx_assert(&sc->mutex, MA_OWNED);
-sleep:
- error = msleep(sc, &sc->mutex, PZERO | PCATCH, "ichsmb", hz / 4);
+ error = msleep(sc, &sc->mutex, PZERO, "ichsmb", hz / 4);
DBG("msleep -> %d\n", error);
switch (error) {
- case ERESTART:
- if (sc->ich_cmd != -1)
- goto sleep;
- /* FALLTHROUGH */
case 0:
smb_error = sc->smb_error;
break;
OpenPOWER on IntegriCloud