Re: [REGRESSION] "USB: use kfifo to buffer usb-generic serialwrites" causes gobi_loader to hang

From: Alan Cox
Date: Tue Jan 19 2010 - 09:19:22 EST


On Tue, 19 Jan 2010 14:57:00 +0100
Oliver Neukum <oliver@xxxxxxxxxx> wrote:

> Am Dienstag, 19. Januar 2010 14:29:34 schrieb Alan Cox:
> > On Tue, 19 Jan 2010 14:20:29 +0100
> > Oliver Neukum <oliver@xxxxxxxxxx> wrote:
> >
> > > Am Montag, 18. Januar 2010 21:14:16 schrieb Matthew Garrett:
> > >
> > > > drivers/usb/serial/generic.c: usb_serial_generic_write - port 0, 1565
> > > > bytes
> > > > drivers/usb/serial/generic.c: usb_serial_generic_write - put 0 bytes
> > > > into fifo
> > > > drivers/usb/serial/generic.c: usb_serial_generic_read_bulk_callback -
> > > > port 0
> > >
> > > If the FIFO is full we can do nothing. Please try the attached patch.
> >
> > If the FIFO is full how are we getting called - we should have throttled
> > earlier if there is any flow control (including 'look no URBs' cases) ?
>
> The log shows no call to usb_serial_generic_write_room()
> Do you consider this a bug in the tty layer?

Some of the line disciplines just throw data at the board but not n_tty
(the normal one) - so for PPP you wouldn't see checks on room but the
loader I assume is using the normal tty layer - if so something is up
because the ldisc shouldn't have written more than there is room for.
--
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/