Fix an error path where we might scsipi_prevent() on a non-removable device.
This commit is contained in:
parent
5ad03464f5
commit
ab5fff1eda
@ -1,4 +1,4 @@
|
|||||||
/* $NetBSD: sd.c,v 1.204 2003/09/08 18:51:38 mycroft Exp $ */
|
/* $NetBSD: sd.c,v 1.205 2003/09/08 23:43:35 mycroft Exp $ */
|
||||||
|
|
||||||
/*-
|
/*-
|
||||||
* Copyright (c) 1998, 2003 The NetBSD Foundation, Inc.
|
* Copyright (c) 1998, 2003 The NetBSD Foundation, Inc.
|
||||||
@ -54,7 +54,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#include <sys/cdefs.h>
|
#include <sys/cdefs.h>
|
||||||
__KERNEL_RCSID(0, "$NetBSD: sd.c,v 1.204 2003/09/08 18:51:38 mycroft Exp $");
|
__KERNEL_RCSID(0, "$NetBSD: sd.c,v 1.205 2003/09/08 23:43:35 mycroft Exp $");
|
||||||
|
|
||||||
#include "opt_scsi.h"
|
#include "opt_scsi.h"
|
||||||
#include "opt_bufq.h"
|
#include "opt_bufq.h"
|
||||||
@ -510,8 +510,10 @@ bad2:
|
|||||||
|
|
||||||
bad:
|
bad:
|
||||||
if (sd->sc_dk.dk_openmask == 0) {
|
if (sd->sc_dk.dk_openmask == 0) {
|
||||||
scsipi_prevent(periph, PR_ALLOW,
|
if (periph->periph_flags & PERIPH_REMOVABLE)
|
||||||
XS_CTL_IGNORE_ILLEGAL_REQUEST | XS_CTL_IGNORE_MEDIA_CHANGE);
|
scsipi_prevent(periph, PR_ALLOW,
|
||||||
|
XS_CTL_IGNORE_ILLEGAL_REQUEST |
|
||||||
|
XS_CTL_IGNORE_MEDIA_CHANGE);
|
||||||
periph->periph_flags &= ~PERIPH_OPEN;
|
periph->periph_flags &= ~PERIPH_OPEN;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -573,11 +575,10 @@ sdclose(dev, flag, fmt, p)
|
|||||||
|
|
||||||
scsipi_wait_drain(periph);
|
scsipi_wait_drain(periph);
|
||||||
|
|
||||||
if (periph->periph_flags & PERIPH_REMOVABLE) {
|
if (periph->periph_flags & PERIPH_REMOVABLE)
|
||||||
scsipi_prevent(periph, PR_ALLOW,
|
scsipi_prevent(periph, PR_ALLOW,
|
||||||
XS_CTL_IGNORE_ILLEGAL_REQUEST |
|
XS_CTL_IGNORE_ILLEGAL_REQUEST |
|
||||||
XS_CTL_IGNORE_NOT_READY);
|
XS_CTL_IGNORE_NOT_READY);
|
||||||
}
|
|
||||||
periph->periph_flags &= ~PERIPH_OPEN;
|
periph->periph_flags &= ~PERIPH_OPEN;
|
||||||
|
|
||||||
scsipi_wait_drain(periph);
|
scsipi_wait_drain(periph);
|
||||||
|
Loading…
Reference in New Issue
Block a user