From db360a206482811f67aaf677d49c675125c9079f Mon Sep 17 00:00:00 2001 From: Augustin Cavalier Date: Mon, 18 Feb 2019 11:40:45 -0500 Subject: [PATCH] XHCI: Make sure we have at least one TRB in CreateDescriptorChain. Linux seems to do the same thing. Confirmed as correct by korli in #12929. --- src/add-ons/kernel/busses/usb/xhci.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/add-ons/kernel/busses/usb/xhci.cpp b/src/add-ons/kernel/busses/usb/xhci.cpp index d816446318..7acc3914ff 100644 --- a/src/add-ons/kernel/busses/usb/xhci.cpp +++ b/src/add-ons/kernel/busses/usb/xhci.cpp @@ -883,6 +883,9 @@ XHCI::CreateDescriptorChain(size_t bufferSize, int32 &trbCount) { size_t packetSize = B_PAGE_SIZE * 16; trbCount = (bufferSize + packetSize - 1) / packetSize; + if (trbCount == 0) + trbCount = 1; + // keep one trb for linking int32 tdCount = (trbCount + XHCI_MAX_TRBS_PER_TD - 2) / (XHCI_MAX_TRBS_PER_TD - 1);