|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [linux-2.6.18-xen] usbback: correct copy length for partial transfers
# HG changeset patch
# User Juergen Gross <jgross@xxxxxxxx>
# Date 1443429534 -7200
# Node ID 47161cb7bd45c059b8e75c09d59ee1124953ad46
# Parent b4bb467e5c077745957e26ea6872cfc65e87e4c2
usbback: correct copy length for partial transfers
Commit 72387b3c2252 ("usbback: copy only filled buffers to guest") has
introduced an error leading to copying the wrong amount of data to the
guest in case of read I/Os with not the complete buffer filled.
Depending on the amount of data read either too much or not enough
data was copied: if a buffer segment was filled less than half still
some data of the backend kernel could leak into the guest, while a
buffer segment filled more than half of it's size wouldn't be copied
completely.
Correct this by limiting the to be copied data amount to the rest
length of the read data.
Signed-off-by: Juergen Gross <jgross@xxxxxxxx>
Committed-by: Jan Beulich <jbeulich@xxxxxxxx>
---
diff -r b4bb467e5c07 -r 47161cb7bd45 drivers/xen/usbback/usbback.c
--- a/drivers/xen/usbback/usbback.c Wed Sep 09 09:52:22 2015 +0200
+++ b/drivers/xen/usbback/usbback.c Mon Sep 28 10:38:54 2015 +0200
@@ -213,7 +213,7 @@ static void copy_buff_to_pages(void *buf
buf_off += offset - buf_off;
}
if (buf_off + len > offset + length)
- len -= offset + length - buf_off;
+ len = offset + length - buf_off;
memcpy((void *)vaddr(pending_req, i) + off,
buff + buf_off, len);
}
_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |