lkml.org 
[lkml]   [2008]   [Nov]   [14]   [last100]   RSS Feed
Views: [more markup]  [less markup]  [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
DateThu, 13 Nov 2008 22:15:36 -0700
FromPete Zaitcev <>
SubjectRe: [PATCH] usbmon binary format reader loses synchronization
On Thu, 13 Nov 2008 13:59:45 +0100, Ingo van Lil <inguin@gmx.de> wrote:

> When dumping USB data with "cat /dev/usbmon0 > usbmon.trace" while
> reading from a USB storage device and analyzing the dump file
> afterwards it will get out of sync after a couple of packets.

I think you nailed the problem. I only want shorter lines.
How about this:

diff --git a/drivers/usb/mon/mon_bin.c b/drivers/usb/mon/mon_bin.c
index c9de3f0..e06810a 100644
--- a/drivers/usb/mon/mon_bin.c
+++ b/drivers/usb/mon/mon_bin.c
@@ -687,7 +687,10 @@ static ssize_t mon_bin_read(struct file *file, char __user *buf,
 	}
 
 	if (rp->b_read >= sizeof(struct mon_bin_hdr)) {
-		step_len = min(nbytes, (size_t)ep->len_cap);
+		step_len = ep->len_cap;
+		step_len -= rp->b_read - sizeof(struct mon_bin_hdr);
+		if (step_len > nbytes)
+			step_len = nbytes;
 		offset = rp->b_out + PKT_SIZE;
 		offset += rp->b_read - sizeof(struct mon_bin_hdr);
 		if (offset >= rp->b_size)
Also, please send me signed-off-by if you want it.

-- Pete


\
 
 \ /
  Last update: 2008-11-14 06:19    [from the cache]
©2003-2008