Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. =================================================================== RCS file: /ftp/cvs/cvsroot/src/sys/dev/usb/ehci.c,v rcsdiff: /ftp/cvs/cvsroot/src/sys/dev/usb/ehci.c,v: warning: Unknown phrases like `commitid ...;' are present. retrieving revision 1.225.2.1 retrieving revision 1.226 diff -u -p -r1.225.2.1 -r1.226 --- src/sys/dev/usb/ehci.c 2014/08/10 06:54:58 1.225.2.1 +++ src/sys/dev/usb/ehci.c 2014/08/04 06:17:04 1.226 @@ -1,4 +1,4 @@ -/* $NetBSD: ehci.c,v 1.225.2.1 2014/08/10 06:54:58 tls Exp $ */ +/* $NetBSD: ehci.c,v 1.226 2014/08/04 06:17:04 skrll Exp $ */ /* * Copyright (c) 2004-2012 The NetBSD Foundation, Inc. @@ -53,7 +53,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: ehci.c,v 1.225.2.1 2014/08/10 06:54:58 tls Exp $"); +__KERNEL_RCSID(0, "$NetBSD: ehci.c,v 1.226 2014/08/04 06:17:04 skrll Exp $"); #include "ohci.h" #include "uhci.h" @@ -2604,13 +2604,15 @@ ehci_root_intr_start(usbd_xfer_handle xf Static void ehci_root_intr_abort(usbd_xfer_handle xfer) { +#ifdef DIAGNOSTIC ehci_softc_t *sc = xfer->pipe->device->bus->hci_private; +#endif KASSERT(mutex_owned(&sc->sc_lock)); - KASSERT(xfer->pipe->intrxfer == xfer); - - sc->sc_intrxfer = NULL; - + if (xfer->pipe->intrxfer == xfer) { + DPRINTF(("ehci_root_intr_abort: remove\n")); + xfer->pipe->intrxfer = NULL; + } xfer->status = USBD_CANCELLED; usb_transfer_complete(xfer); } @@ -3830,8 +3832,10 @@ Static void ehci_device_intr_abort(usbd_xfer_handle xfer) { DPRINTFN(1, ("ehci_device_intr_abort: xfer=%p\n", xfer)); - KASSERT(xfer->pipe->intrxfer == xfer); - + if (xfer->pipe->intrxfer == xfer) { + DPRINTFN(1, ("echi_device_intr_abort: remove\n")); + xfer->pipe->intrxfer = NULL; + } /* * XXX - abort_xfer uses ehci_sync_hc, which syncs via the advance * async doorbell. That's dependent on the async list, wheras