diff options
author | ps <ps@FreeBSD.org> | 2005-07-29 01:47:36 +0000 |
---|---|---|
committer | ps <ps@FreeBSD.org> | 2005-07-29 01:47:36 +0000 |
commit | f7414e11198f15bf1a59d12db82e522738fa37a5 (patch) | |
tree | fc7d7ec7f51f0c85574496e1c8637a19134f2dfa | |
parent | 8b3f56edd4c08f7f3a58c0db13f53d43c10c1bc0 (diff) | |
download | FreeBSD-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.c | 10 |
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); } /******************************************************************************** |