diff options
author | Gerd Hoffmann | 2020-11-05 14:41:12 +0100 |
---|---|---|
committer | Gerd Hoffmann | 2020-11-16 09:11:21 +0100 |
commit | c590fe3aa23acb923159c41c741dd694cba9c544 (patch) | |
tree | 8810017e0b4db25f28955e18543b12ddd48343f7 /hw | |
parent | xhci: fix guest triggerable assert (diff) | |
download | qemu-c590fe3aa23acb923159c41c741dd694cba9c544.tar.gz qemu-c590fe3aa23acb923159c41c741dd694cba9c544.tar.xz qemu-c590fe3aa23acb923159c41c741dd694cba9c544.zip |
xhci: move sanity checks
The v variable goes negative for reg < 0x20. Reorder the code
to first sanity check then calculate v and assign intr to make
sanity checkers happy.
Buglink: https://bugs.launchpad.net/qemu/+bug/1902112
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Message-id: 20201105134112.25119-7-kraxel@redhat.com
Diffstat (limited to 'hw')
-rw-r--r-- | hw/usb/hcd-xhci.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/hw/usb/hcd-xhci.c b/hw/usb/hcd-xhci.c index d00bb0141d..6dfb17cbe9 100644 --- a/hw/usb/hcd-xhci.c +++ b/hw/usb/hcd-xhci.c @@ -3010,14 +3010,17 @@ static void xhci_runtime_write(void *ptr, hwaddr reg, uint64_t val, unsigned size) { XHCIState *xhci = ptr; - int v = (reg - 0x20) / 0x20; - XHCIInterrupter *intr = &xhci->intr[v]; + XHCIInterrupter *intr; + int v; + trace_usb_xhci_runtime_write(reg, val); if (reg < 0x20) { trace_usb_xhci_unimplemented("runtime write", reg); return; } + v = (reg - 0x20) / 0x20; + intr = &xhci->intr[v]; switch (reg & 0x1f) { case 0x00: /* IMAN */ |