Re: [PATCH] usbmon binary format reader loses synchronization

From: Pete Zaitcev
Date: Fri Nov 14 2008 - 00:17:26 EST


On Thu, 13 Nov 2008 13:59:45 +0100, Ingo van Lil <inguin@xxxxxx> 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
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/