On Sun, Jan 11, 2015 at 01:20:35PM +0100, Martin Pieuchot wrote:
> On 11/01/15(Sun) 09:54, Ingo Feinerer wrote:
> > With the latest snapshot I have /var/log/messages filled up with
> > 
> > uaudio_chan_rintr: count < n
> > usb_transfer_complete: actlen > len 2824 > 0
> > usb_transfer_complete: actlen > len 3 > 0
> > usb_transfer_complete: actlen > len 2816 > 0
> > 
> > when playing audio. The problem is that I have disk activity because
> > /var/log/messages fills up extremely fast (e.g. it was 80 MB after
> > watching a video via mplayer for a few minutes).
> 
> Thanks for the bug report, don't hesitate to send it to bugs@ next time.
> Not all the developers read misc@.
> 
> I am the one to blame for this regression.  I wanted to make sure every
> USB transfer was checked for buffer overrun but isoc transfers are
> special.  Could you tell me if the diff below fixes it?

Yes, it does.

Thank you very much!

Best regards,
Ingo

> Index: usbdi.c
> ===================================================================
> RCS file: /cvs/src/sys/dev/usb/usbdi.c,v
> retrieving revision 1.77
> diff -u -p -r1.77 usbdi.c
> --- usbdi.c   9 Jan 2015 12:15:48 -0000       1.77
> +++ usbdi.c   11 Jan 2015 11:12:34 -0000
> @@ -732,7 +732,7 @@ usb_transfer_complete(struct usbd_xfer *
>               pipe->running = 0;
>  
>  #ifdef DIAGNOSTIC
> -     if (xfer->actlen > xfer->length) {
> +     if (xfer->actlen > xfer->length && xfer->length != 0) {
>               printf("%s: actlen > len %u > %u\n", __func__, xfer->actlen,
>                   xfer->length);
>               xfer->actlen = xfer->length;

Reply via email to