[haiku-commits] haiku: hrev53887 - src/add-ons/kernel/busses/usb

  • From: waddlesplash <waddlesplash@xxxxxxxxx>
  • To: haiku-commits@xxxxxxxxxxxxx
  • Date: Mon, 17 Feb 2020 17:19:04 -0500 (EST)

hrev53887 adds 1 changeset to branch 'master'
old head: 5d08e3a5b9ccd0a3fce82dc51e41590a5b05c315
new head: b1970a8427f80cab0519d4f5599f00197f15947a
overview: 
https://git.haiku-os.org/haiku/log/?qt=range&q=b1970a8427f8+%5E5d08e3a5b9cc

----------------------------------------------------------------------------

b1970a8427f8: XHCI: Do not try to use hardware with unknown interface versions.
  
  Should fix the crash in #15717.

                              [ Augustin Cavalier <waddlesplash@xxxxxxxxx> ]

----------------------------------------------------------------------------

Revision:    hrev53887
Commit:      b1970a8427f80cab0519d4f5599f00197f15947a
URL:         https://git.haiku-os.org/haiku/commit/?id=b1970a8427f8
Author:      Augustin Cavalier <waddlesplash@xxxxxxxxx>
Date:        Mon Feb 17 22:18:11 2020 UTC

Ticket:      https://dev.haiku-os.org/ticket/15717

----------------------------------------------------------------------------

1 file changed, 8 insertions(+), 2 deletions(-)
src/add-ons/kernel/busses/usb/xhci.cpp | 10 ++++++++--

----------------------------------------------------------------------------

diff --git a/src/add-ons/kernel/busses/usb/xhci.cpp 
b/src/add-ons/kernel/busses/usb/xhci.cpp
index d553072f91..666f19d99a 100644
--- a/src/add-ons/kernel/busses/usb/xhci.cpp
+++ b/src/add-ons/kernel/busses/usb/xhci.cpp
@@ -266,8 +266,14 @@ XHCI::XHCI(pci_info *info, Stack *stack)
        TRACE("runtime register offset: %" B_PRId32 "\n", 
fRuntimeRegisterOffset);
        TRACE("doorbell register offset: %" B_PRId32 "\n", 
fDoorbellRegisterOffset);
 
-       TRACE_ALWAYS("interface version: 0x%04" B_PRIx32 "\n",
-               HCI_VERSION(ReadCapReg32(XHCI_HCI_VERSION)));
+       int32 interfaceVersion = HCI_VERSION(ReadCapReg32(XHCI_HCI_VERSION));
+       if (interfaceVersion < 0x0090 || interfaceVersion > 0x0120) {
+               TRACE_ERROR("unsupported interface version: 0x%04" B_PRIx32 
"\n",
+                       interfaceVersion);
+               return;
+       }
+       TRACE_ALWAYS("interface version: 0x%04" B_PRIx32 "\n", 
interfaceVersion);
+
        TRACE_ALWAYS("structural parameters: 1:0x%08" B_PRIx32 " 2:0x%08"
                B_PRIx32 " 3:0x%08" B_PRIx32 "\n", 
ReadCapReg32(XHCI_HCSPARAMS1),
                ReadCapReg32(XHCI_HCSPARAMS2), ReadCapReg32(XHCI_HCSPARAMS3));


Other related posts:

  • » [haiku-commits] haiku: hrev53887 - src/add-ons/kernel/busses/usb - waddlesplash