summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorps <ps@FreeBSD.org>2005-07-29 01:47:36 +0000
committerps <ps@FreeBSD.org>2005-07-29 01:47:36 +0000
commitf7414e11198f15bf1a59d12db82e522738fa37a5 (patch)
treefc7d7ec7f51f0c85574496e1c8637a19134f2dfa
parent8b3f56edd4c08f7f3a58c0db13f53d43c10c1bc0 (diff)
downloadFreeBSD-src-f7414e11198f15bf1a59d12db82e522738fa37a5.zip
FreeBSD-src-f7414e11198f15bf1a59d12db82e522738fa37a5.tar.gz
Don't allow ioctl commands to be interrupted by the user.
-rw-r--r--sys/dev/amr/amr.c10
1 files changed, 4 insertions, 6 deletions
diff --git a/sys/dev/amr/amr.c b/sys/dev/amr/amr.c
index 6c51839..a3bd999 100644
--- a/sys/dev/amr/amr.c
+++ b/sys/dev/amr/amr.c
@@ -962,7 +962,7 @@ amr_bio_command(struct amr_softc *sc, struct amr_command **acp)
static int
amr_wait_command(struct amr_command *ac)
{
- int error, count;
+ int error = 0;
debug_called(1);
@@ -971,12 +971,10 @@ amr_wait_command(struct amr_command *ac)
if ((error = amr_start(ac)) != 0)
return(error);
- count = 0;
- /* XXX better timeout? */
- while ((ac->ac_flags & AMR_CMD_BUSY) && (count < 30)) {
- msleep(ac, &ac->ac_sc->amr_io_lock, PRIBIO | PCATCH, "amrwcmd", hz);
+ while ((ac->ac_flags & AMR_CMD_BUSY) && (error != EWOULDBLOCK)) {
+ error = msleep(ac, &ac->ac_sc->amr_io_lock, PRIBIO, "amrwcmd", 0);
}
- return(0);
+ return(error);
}
/********************************************************************************
OpenPOWER on IntegriCloud