aboutsummaryrefslogtreecommitdiff
path: root/sys/dev
diff options
context:
space:
mode:
authorBrian Somers <brian@FreeBSD.org>2006-01-03 17:01:43 +0000
committerBrian Somers <brian@FreeBSD.org>2006-01-03 17:01:43 +0000
commit0d1074125599dedc6f6084285958c90e785acb21 (patch)
tree56fa1368e62eaa34afea8fbc79bf59ca5a029763 /sys/dev
parent61d963bc57a7eee4686f7a29ddee5bab851348e7 (diff)
downloadsrc-0d1074125599dedc6f6084285958c90e785acb21.tar.gz
src-0d1074125599dedc6f6084285958c90e785acb21.zip
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
Notes
Notes: svn path=/head/; revision=153993
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 9361c7ee88e6..53a91d064f9f 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;