Plug one more xfer leak.
authormpi <mpi@openbsd.org>
Thu, 8 May 2014 14:00:52 +0000 (14:00 +0000)
committermpi <mpi@openbsd.org>
Thu, 8 May 2014 14:00:52 +0000 (14:00 +0000)
Now that aborting interrupt pipes does not prevent us from freeing
the associated xfer, make sure to flag this xfer as "done" even if
there's no need to abort it in hardware.

sys/dev/usb/ehci.c
sys/dev/usb/uhci.c

index 5351d94..98c5f83 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: ehci.c,v 1.151 2014/05/04 14:42:36 mpi Exp $ */
+/*     $OpenBSD: ehci.c,v 1.152 2014/05/08 14:00:52 mpi Exp $ */
 /*     $NetBSD: ehci.c,v 1.66 2004/06/30 03:11:56 mycroft Exp $        */
 
 /*
@@ -2734,6 +2734,9 @@ ehci_abort_xfer(struct usbd_xfer *xfer, usbd_status status)
                xfer->status = status;  /* make software ignore it */
                timeout_del(&xfer->timeout_handle);
                usb_rem_task(xfer->device, &xfer->abort_task);
+#ifdef DIAGNOSTIC
+               ex->isdone = 1;
+#endif
                usb_transfer_complete(xfer);
                splx(s);
                return;
index 7fe63f9..b720b39 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: uhci.c,v 1.114 2014/05/04 14:42:36 mpi Exp $  */
+/*     $OpenBSD: uhci.c,v 1.115 2014/05/08 14:00:52 mpi Exp $  */
 /*     $NetBSD: uhci.c,v 1.172 2003/02/23 04:19:26 simonb Exp $        */
 /*     $FreeBSD: src/sys/dev/usb/uhci.c,v 1.33 1999/11/17 22:33:41 n_hibma Exp $       */
 
@@ -1785,6 +1785,9 @@ uhci_abort_xfer(struct usbd_xfer *xfer, usbd_status status)
                xfer->status = status;  /* make software ignore it */
                timeout_del(&xfer->timeout_handle);
                usb_rem_task(xfer->device, &xfer->abort_task);
+#ifdef DIAGNOSTIC
+               ux->isdone = 1;
+#endif
                usb_transfer_complete(xfer);
                splx(s);
                return;