diff --git a/debian/changelog b/debian/changelog --- a/debian/changelog +++ b/debian/changelog @@ -1,8 +1,13 @@ qemu-kvm (1.1.2+dfsg-4) unstable; urgency=medium + [ Michael Tokarev ] * e1000-discard-oversized-packets-based-on-SBP_LPE.patch: the second half of the fix for CVE-2012-6075. (Finally Closes: #696051) + [ Nikolaus Rath ] + * fix-usb-passthrough.patch: fix problems with accessing some host + USB devices (Closes: 683983) + -- Michael Tokarev Wed, 09 Jan 2013 23:05:17 +0400 qemu-kvm (1.1.2+dfsg-3) unstable; urgency=low diff --git a/debian/patches/fix-usb-passthrough.patch b/debian/patches/fix-usb-passthrough.patch new file mode 100644 --- /dev/null +++ b/debian/patches/fix-usb-passthrough.patch @@ -0,0 +1,43 @@ +From: Hans de Goede +Date: Wed, 12 Sep 2012 13:08:40 +0000 (+0200) +Subject: uhci: Don't queue up packets after one with the SPD flag set +X-Git-Tag: v1.3.0-rc0~483^2 +X-Git-Url: http://git.qemu.org/?p=qemu.git;a=commitdiff_plain;h=72a04d0c178f01908d74539230d9de64ffc6da19 +Bug-Debian: http://bugs.debian.org/683983 + +uhci: Don't queue up packets after one with the SPD flag set + +Don't queue up packets after a packet with the SPD (short packet detect) +flag set. Since we won't know if the packet will actually be short until it +has completed, and if it is short we should stop the queue. + +This fixes a miniature photoframe emulating a USB cdrom with the windows +software for it not working. + +Signed-off-by: Hans de Goede +Signed-off-by: Gerd Hoffmann +--- + +diff --git a/hw/usb/hcd-uhci.c b/hw/usb/hcd-uhci.c +index c7c8786..cdc8bc3 100644 +--- a/hw/usb/hcd-uhci.c ++++ b/hw/usb/hcd-uhci.c +@@ -1000,6 +1000,9 @@ static void uhci_fill_queue(UHCIState *s, UHCI_TD *td) + } + assert(ret == TD_RESULT_ASYNC_START); + assert(int_mask == 0); ++ if (ptd.ctrl & TD_CTRL_SPD) { ++ break; ++ } + plink = ptd.link; + } + } +@@ -1097,7 +1100,7 @@ static void uhci_process_frame(UHCIState *s) + + case TD_RESULT_ASYNC_START: + trace_usb_uhci_td_async(curr_qh & ~0xf, link & ~0xf); +- if (is_valid(td.link)) { ++ if (is_valid(td.link) && !(td.ctrl & TD_CTRL_SPD)) { + uhci_fill_queue(s, &td); + } + link = curr_qh ? qh.link : td.link; diff --git a/debian/patches/series b/debian/patches/series --- a/debian/patches/series +++ b/debian/patches/series @@ -21,3 +21,4 @@ qcow2-fix-refcount-table-size-calculation.patch tap-reset-vnet-header-size-on-open.patch vmdk-fix-data-corruption-bug-in-WRITE-and-READ-handling.patch +fix-usb-passthrough.patch