diff options
| author | Nick Hibma <n_hibma@FreeBSD.org> | 1999-08-12 18:55:41 +0000 |
|---|---|---|
| committer | Nick Hibma <n_hibma@FreeBSD.org> | 1999-08-12 18:55:41 +0000 |
| commit | e0f5b7a3be9a7504a01fd25898877e6ec9d39c66 (patch) | |
| tree | e85d05639d30e6cd0f60d6e19ca3ac6ce2df70dc /sys/dev | |
| parent | e868365294028a68bc50452f184fece430c97e3d (diff) | |
Notes
Diffstat (limited to 'sys/dev')
| -rw-r--r-- | sys/dev/usb/ugen.c | 19 |
1 files changed, 12 insertions, 7 deletions
diff --git a/sys/dev/usb/ugen.c b/sys/dev/usb/ugen.c index c62cc8a82340..f217f030d2ea 100644 --- a/sys/dev/usb/ugen.c +++ b/sys/dev/usb/ugen.c @@ -358,7 +358,8 @@ ugenclose(dev, flag, mode, p) int dir; DPRINTFN(5, ("ugenclose: flag=%d, mode=%d\n", flag, mode)); - if (sc->sc_disconnected) + + if (!sc || sc->sc_disconnected) return (EIO); if (endpt == USB_CONTROL_ENDPOINT) { @@ -401,7 +402,7 @@ ugenread(dev, uio, flag) { USB_GET_SC(ugen, UGENUNIT(dev), sc); int endpt = UGENENDPOINT(dev); - struct ugen_endpoint *sce = &sc->sc_endpoints[endpt][IN]; + struct ugen_endpoint *sce; u_int32_t n, tn; char buf[UGEN_BBSIZE]; usbd_request_handle reqh; @@ -411,9 +412,11 @@ ugenread(dev, uio, flag) u_char buffer[UGEN_CHUNK]; DPRINTFN(5, ("ugenread: %d:%d\n", UGENUNIT(dev), UGENENDPOINT(dev))); - if (sc->sc_disconnected) + if (!sc || sc->sc_disconnected) return (EIO); + sce = &sc->sc_endpoints[endpt][IN]; + #ifdef DIAGNOSTIC if (!sce->edesc) { printf("ugenread: no edesc\n"); @@ -501,16 +504,18 @@ ugenwrite(dev, uio, flag) { USB_GET_SC(ugen, UGENUNIT(dev), sc); int endpt = UGENENDPOINT(dev); - struct ugen_endpoint *sce = &sc->sc_endpoints[endpt][OUT]; + struct ugen_endpoint *sce; size_t n; int error = 0; char buf[UGEN_BBSIZE]; usbd_request_handle reqh; usbd_status r; - if (sc->sc_disconnected) + if (!sc || sc->sc_disconnected) return (EIO); + sce = &sc->sc_endpoints[endpt][OUT]; + #ifdef DIAGNOSTIC if (!sce->edesc) { printf("ugenwrite: no edesc\n"); @@ -721,7 +726,7 @@ ugenioctl(dev, cmd, addr, flag, p) u_int8_t conf, alt; DPRINTFN(5, ("ugenioctl: cmd=%08lx\n", cmd)); - if (sc->sc_disconnected) + if (!sc || sc->sc_disconnected) return (EIO); switch (cmd) { @@ -963,7 +968,7 @@ ugenpoll(dev, events, p) int revents = 0; int s; - if (sc->sc_disconnected) + if (!sc || sc->sc_disconnected) return (EIO); sce = &sc->sc_endpoints[UGENENDPOINT(dev)][IN]; |
