|
|
76daa3 |
From 22b59e7290b2649efc03fe800859c48e2fd90763 Mon Sep 17 00:00:00 2001
|
|
|
76daa3 |
From: Gerd Hoffmann <kraxel@redhat.com>
|
|
|
76daa3 |
Date: Tue, 6 Jun 2017 15:43:52 +0200
|
|
|
76daa3 |
Subject: [PATCH 16/17] ehci: fix overflow in frame timer code
|
|
|
76daa3 |
MIME-Version: 1.0
|
|
|
76daa3 |
Content-Type: text/plain; charset=UTF-8
|
|
|
76daa3 |
Content-Transfer-Encoding: 8bit
|
|
|
76daa3 |
|
|
|
76daa3 |
RH-Author: Gerd Hoffmann <kraxel@redhat.com>
|
|
|
76daa3 |
Message-id: <20170606154353.31670-2-kraxel@redhat.com>
|
|
|
76daa3 |
Patchwork-id: 75506
|
|
|
76daa3 |
O-Subject: [RHEL-7.4 qemu-kvm-rhev PATCH 1/2] ehci: fix overflow in frame timer code
|
|
|
76daa3 |
Bugzilla: 1449609
|
|
|
76daa3 |
RH-Acked-by: Stefan Hajnoczi <stefanha@redhat.com>
|
|
|
76daa3 |
RH-Acked-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
|
|
|
76daa3 |
RH-Acked-by: Thomas Huth <thuth@redhat.com>
|
|
|
76daa3 |
|
|
|
76daa3 |
In case the frame timer doesn't run for a while due to the host being
|
|
|
76daa3 |
busy skipped_uframes can become big enough that UFRAME_TIMER_NS *
|
|
|
76daa3 |
skipped_uframes overflows. Which in turn throws off all subsequent
|
|
|
76daa3 |
ehci frame timer calculations.
|
|
|
76daa3 |
|
|
|
76daa3 |
Reported-by: 李林 <8610_28@163.com>
|
|
|
76daa3 |
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
|
|
|
76daa3 |
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
|
|
|
76daa3 |
Message-id: 20170515104543.32044-1-kraxel@redhat.com
|
|
|
76daa3 |
(cherry picked from commit 3ae7eb88c472799f17beb653f4bc3fb8b124c72e)
|
|
|
76daa3 |
Signed-off-by: Miroslav Rezanina <mrezanin@redhat.com>
|
|
|
76daa3 |
---
|
|
|
76daa3 |
hw/usb/hcd-ehci.c | 2 +-
|
|
|
76daa3 |
1 file changed, 1 insertion(+), 1 deletion(-)
|
|
|
76daa3 |
|
|
|
76daa3 |
diff --git a/hw/usb/hcd-ehci.c b/hw/usb/hcd-ehci.c
|
|
|
76daa3 |
index 50ef817..d7361e5 100644
|
|
|
76daa3 |
--- a/hw/usb/hcd-ehci.c
|
|
|
76daa3 |
+++ b/hw/usb/hcd-ehci.c
|
|
|
76daa3 |
@@ -2238,7 +2238,7 @@ static void ehci_frame_timer(void *opaque)
|
|
|
76daa3 |
int need_timer = 0;
|
|
|
76daa3 |
int64_t expire_time, t_now;
|
|
|
76daa3 |
uint64_t ns_elapsed;
|
|
|
76daa3 |
- int uframes, skipped_uframes;
|
|
|
76daa3 |
+ uint64_t uframes, skipped_uframes;
|
|
|
76daa3 |
int i;
|
|
|
76daa3 |
|
|
|
76daa3 |
t_now = qemu_clock_get_ns(QEMU_CLOCK_VIRTUAL);
|
|
|
76daa3 |
--
|
|
|
76daa3 |
1.8.3.1
|
|
|
76daa3 |
|