diff --git a/devicemodel/hw/pci/xhci.c b/devicemodel/hw/pci/xhci.c index cf7485c4b..80b3d7576 100644 --- a/devicemodel/hw/pci/xhci.c +++ b/devicemodel/hw/pci/xhci.c @@ -2523,9 +2523,10 @@ done: return cmderr; } -#define XHCI_GET_SLOT(xdev, trb, slot, cmderr) \ +#define XHCI_GET_SLOT(xdev, trb, slot, cmderr) \ do { \ - slot = (XHCI_TRB_3_SLOT_GET(trb->dwTrb3)) ? 0 : \ + slot = (XHCI_TRB_3_SLOT_GET(trb->dwTrb3) > \ + XHCI_MAX_SLOTS) ? 0 : \ XHCI_TRB_3_SLOT_GET(trb->dwTrb3); \ if (!slot) \ cmderr = XHCI_TRB_ERROR_INVALID; \