On Fri, Sep 11, 2015 at 02:41:04AM -0600, David Coppa wrote:
>
> Hi!
>
> Repeatedly hit the panic below with latest ugen.c code (v 1.88) and
> pcsc-lite.
Thanks for the report. Could you please try this patch?
Grant
Index: ugen.c
===================================================================
RCS file: /cvs/src/sys/dev/usb/ugen.c,v
retrieving revision 1.88
diff -u -p -d -r1.88 ugen.c
--- ugen.c 7 Sep 2015 19:58:42 -0000 1.88
+++ ugen.c 15 Sep 2015 04:42:02 -0000
@@ -557,7 +557,9 @@ ugen_do_read(struct ugen_softc *sc, int
flags, sce->timeout, NULL);
err = usbd_transfer(xfer);
if (err) {
- usbd_clear_endpoint_stall(sce->pipeh);
+ if (err == USBD_STALLED)
+ usbd_clear_endpoint_stall(sce->pipeh);
+
if (err == USBD_INTERRUPTED)
error = EINTR;
else if (err == USBD_TIMEOUT)
@@ -691,7 +693,9 @@ ugen_do_write(struct ugen_softc *sc, int
flags, sce->timeout, NULL);
err = usbd_transfer(xfer);
if (err) {
- usbd_clear_endpoint_stall(sce->pipeh);
+ if (err == USBD_STALLED)
+ usbd_clear_endpoint_stall(sce->pipeh);
+
if (err == USBD_INTERRUPTED)
error = EINTR;
else if (err == USBD_TIMEOUT)