Author: grehan
Date: Sun Jul 17 20:34:46 2016
New Revision: 302972
URL: https://svnweb.freebsd.org/changeset/base/302972

Log:
  Disallow interrupt requests on disabled endpoints.
  
  Submitted by: Leon Dang
  MFC after:    3 days

Modified:
  head/usr.sbin/bhyve/pci_xhci.c

Modified: head/usr.sbin/bhyve/pci_xhci.c
==============================================================================
--- head/usr.sbin/bhyve/pci_xhci.c      Sun Jul 17 19:24:28 2016        
(r302971)
+++ head/usr.sbin/bhyve/pci_xhci.c      Sun Jul 17 20:34:46 2016        
(r302972)
@@ -2537,9 +2537,11 @@ static int
 pci_xhci_dev_intr(struct usb_hci *hci, int epctx)
 {
        struct pci_xhci_dev_emu *dev;
+       struct xhci_dev_ctx     *dev_ctx;
        struct xhci_trb         evtrb;
        struct pci_xhci_softc   *sc;
        struct pci_xhci_portregs *p;
+       struct xhci_endp_ctx    *ep_ctx;
        int     error;
        int     dir_in;
        int     epid;
@@ -2578,6 +2580,14 @@ pci_xhci_dev_intr(struct usb_hci *hci, i
                        goto done;
        }
 
+       dev_ctx = dev->dev_ctx;
+       ep_ctx = &dev_ctx->ctx_ep[epid];
+       if ((ep_ctx->dwEpCtx0 & 0x7) == XHCI_ST_EPCTX_DISABLED) {
+               DPRINTF(("xhci device interrupt on disabled endpoint %d\r\n",
+                        epid));
+               return (0);
+       }
+
        DPRINTF(("xhci device interrupt on endpoint %d\r\n", epid));
 
        pci_xhci_device_doorbell(sc, hci->hci_port, epid, 0);
_______________________________________________
svn-src-all@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to