Avoid accessing the device if it is dying.
This commit is contained in:
parent
dff1e64aad
commit
b8b53d87db
|
@ -1,4 +1,4 @@
|
||||||
/* $NetBSD: if_aue.c,v 1.29 2000/03/08 15:33:24 augustss Exp $ */
|
/* $NetBSD: if_aue.c,v 1.30 2000/03/12 21:57:50 augustss Exp $ */
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 1997, 1998, 1999, 2000
|
* Copyright (c) 1997, 1998, 1999, 2000
|
||||||
* Bill Paul <wpaul@ee.columbia.edu>. All rights reserved.
|
* Bill Paul <wpaul@ee.columbia.edu>. All rights reserved.
|
||||||
|
@ -280,6 +280,9 @@ aue_csr_read_1(sc, reg)
|
||||||
uByte val = 0;
|
uByte val = 0;
|
||||||
int s;
|
int s;
|
||||||
|
|
||||||
|
if (sc->aue_dying)
|
||||||
|
return (0);
|
||||||
|
|
||||||
req.bmRequestType = UT_READ_VENDOR_DEVICE;
|
req.bmRequestType = UT_READ_VENDOR_DEVICE;
|
||||||
req.bRequest = AUE_UR_READREG;
|
req.bRequest = AUE_UR_READREG;
|
||||||
USETW(req.wValue, 0);
|
USETW(req.wValue, 0);
|
||||||
|
@ -309,6 +312,9 @@ aue_csr_read_2(sc, reg)
|
||||||
uWord val;
|
uWord val;
|
||||||
int s;
|
int s;
|
||||||
|
|
||||||
|
if (sc->aue_dying)
|
||||||
|
return (0);
|
||||||
|
|
||||||
req.bmRequestType = UT_READ_VENDOR_DEVICE;
|
req.bmRequestType = UT_READ_VENDOR_DEVICE;
|
||||||
req.bRequest = AUE_UR_READREG;
|
req.bRequest = AUE_UR_READREG;
|
||||||
USETW(req.wValue, 0);
|
USETW(req.wValue, 0);
|
||||||
|
@ -338,6 +344,9 @@ aue_csr_write_1(sc, reg, aval)
|
||||||
int s;
|
int s;
|
||||||
uByte val;
|
uByte val;
|
||||||
|
|
||||||
|
if (sc->aue_dying)
|
||||||
|
return (0);
|
||||||
|
|
||||||
val = aval;
|
val = aval;
|
||||||
req.bmRequestType = UT_WRITE_VENDOR_DEVICE;
|
req.bmRequestType = UT_WRITE_VENDOR_DEVICE;
|
||||||
req.bRequest = AUE_UR_WRITEREG;
|
req.bRequest = AUE_UR_WRITEREG;
|
||||||
|
@ -368,6 +377,9 @@ aue_csr_write_2(sc, reg, aval)
|
||||||
int s;
|
int s;
|
||||||
uWord val;
|
uWord val;
|
||||||
|
|
||||||
|
if (sc->aue_dying)
|
||||||
|
return (0);
|
||||||
|
|
||||||
USETW(val, aval);
|
USETW(val, aval);
|
||||||
req.bmRequestType = UT_WRITE_VENDOR_DEVICE;
|
req.bmRequestType = UT_WRITE_VENDOR_DEVICE;
|
||||||
req.bRequest = AUE_UR_WRITEREG;
|
req.bRequest = AUE_UR_WRITEREG;
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* $NetBSD: if_kue.c,v 1.14 2000/03/08 15:33:38 augustss Exp $ */
|
/* $NetBSD: if_kue.c,v 1.15 2000/03/12 21:59:38 augustss Exp $ */
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 1997, 1998, 1999, 2000
|
* Copyright (c) 1997, 1998, 1999, 2000
|
||||||
* Bill Paul <wpaul@ee.columbia.edu>. All rights reserved.
|
* Bill Paul <wpaul@ee.columbia.edu>. All rights reserved.
|
||||||
|
@ -195,7 +195,7 @@ static void kue_setmulti __P((struct kue_softc *));
|
||||||
static void kue_reset __P((struct kue_softc *));
|
static void kue_reset __P((struct kue_softc *));
|
||||||
|
|
||||||
static usbd_status kue_do_request
|
static usbd_status kue_do_request
|
||||||
__P((usbd_device_handle,
|
__P((struct kue_softc *,
|
||||||
usb_device_request_t *, void *, u_int16_t,
|
usb_device_request_t *, void *, u_int16_t,
|
||||||
u_int32_t *));
|
u_int32_t *));
|
||||||
static usbd_status kue_ctl_l __P((struct kue_softc *, int, u_int8_t,
|
static usbd_status kue_ctl_l __P((struct kue_softc *, int, u_int8_t,
|
||||||
|
@ -247,8 +247,8 @@ DRIVER_MODULE(if_kue, uhub, kue_driver, kue_devclass, usbd_driver_load, 0);
|
||||||
* than the default timeout.
|
* than the default timeout.
|
||||||
*/
|
*/
|
||||||
static usbd_status
|
static usbd_status
|
||||||
kue_do_request(dev, req, data, flags, lenp)
|
kue_do_request(sc, req, data, flags, lenp)
|
||||||
usbd_device_handle dev;
|
struct kue_softc *sc;
|
||||||
usb_device_request_t *req;
|
usb_device_request_t *req;
|
||||||
void *data;
|
void *data;
|
||||||
u_int16_t flags;
|
u_int16_t flags;
|
||||||
|
@ -259,9 +259,12 @@ kue_do_request(dev, req, data, flags, lenp)
|
||||||
|
|
||||||
DPRINTFN(15,("kue_do_request: enter\n"));
|
DPRINTFN(15,("kue_do_request: enter\n"));
|
||||||
|
|
||||||
xfer = usbd_alloc_xfer(dev);
|
if (sc->kue_dying)
|
||||||
|
return (0);
|
||||||
|
|
||||||
|
xfer = usbd_alloc_xfer(sc->kue_udev);
|
||||||
/* XXX 20000 */
|
/* XXX 20000 */
|
||||||
usbd_setup_default_xfer(xfer, dev, 0, 20000, req,
|
usbd_setup_default_xfer(xfer, sc->kue_udev, 0, 20000, req,
|
||||||
data, UGETW(req->wLength), flags, 0);
|
data, UGETW(req->wLength), flags, 0);
|
||||||
err = usbd_sync_transfer(xfer);
|
err = usbd_sync_transfer(xfer);
|
||||||
if (lenp != NULL)
|
if (lenp != NULL)
|
||||||
|
@ -269,7 +272,8 @@ kue_do_request(dev, req, data, flags, lenp)
|
||||||
usbd_free_xfer(xfer);
|
usbd_free_xfer(xfer);
|
||||||
|
|
||||||
if (err) {
|
if (err) {
|
||||||
DPRINTF(("kue_do_request: err=%s\n", usbd_errstr(err)));
|
DPRINTF(("%s: kue_do_request: err=%s\n",
|
||||||
|
USBDEVNAME(sc->kue_dev), usbd_errstr(err)));
|
||||||
}
|
}
|
||||||
|
|
||||||
return (err);
|
return (err);
|
||||||
|
@ -294,7 +298,7 @@ kue_setword(sc, breq, word)
|
||||||
USETW(req.wLength, 0);
|
USETW(req.wLength, 0);
|
||||||
|
|
||||||
s = splusb();
|
s = splusb();
|
||||||
err = kue_do_request(sc->kue_udev, &req, NULL, sc->kue_xfer_flags, 0);
|
err = kue_do_request(sc, &req, NULL, sc->kue_xfer_flags, 0);
|
||||||
splx(s);
|
splx(s);
|
||||||
|
|
||||||
return (err);
|
return (err);
|
||||||
|
@ -329,8 +333,7 @@ kue_ctl_l(sc, rw, breq, val, data, len, flags, lenp)
|
||||||
USETW(req.wLength, len);
|
USETW(req.wLength, len);
|
||||||
|
|
||||||
s = splusb();
|
s = splusb();
|
||||||
err = kue_do_request(sc->kue_udev, &req, data,
|
err = kue_do_request(sc, &req, data, sc->kue_xfer_flags | flags, lenp);
|
||||||
sc->kue_xfer_flags | flags, lenp);
|
|
||||||
splx(s);
|
splx(s);
|
||||||
|
|
||||||
return (err);
|
return (err);
|
||||||
|
|
Loading…
Reference in New Issue