Commit 4a90f09b20f4622dcbff1f0e1e6bae1704f8ad8c added kref stuff to ftdi_sio, but missed tty_kref_put at one exit point in ftdi_process_read. Signed-off-by: Jim Paris <jim@xxxxxxxx> --- On 2.6.28-rc6, I have an FTDI device sending data at 500 kbps. When I killed the process reading the data, I got something like this: ... [54291.148306] drivers/usb/serial/ftdi_sio.c: ftdi_process_read - throttled [54291.148308] drivers/usb/serial/ftdi_sio.c: ftdi_process_read - incomplete, 0 bytes processed, 512 remain [54291.148310] drivers/usb/serial/ftdi_sio.c: ftdi_process_read - deferring remainder until unthrottled ... After this, attempting to open the same /dev/ttyUSBx device forever gives -EIO, even if this particular numbered device gets taken by another driver. A similar bug: http://lkml.org/lkml/2008/10/28/126 This patch fixes the problem on 2.6.28-rc6. It's rebased to current git. -jim drivers/usb/serial/ftdi_sio.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/drivers/usb/serial/ftdi_sio.c b/drivers/usb/serial/ftdi_sio.c index ef6cfa5..c70a8f6 100644 --- a/drivers/usb/serial/ftdi_sio.c +++ b/drivers/usb/serial/ftdi_sio.c @@ -2030,7 +2030,7 @@ static void ftdi_process_read(struct work_struct *work) spin_unlock_irqrestore(&priv->rx_lock, flags); dbg("%s - deferring remainder until unthrottled", __func__); - return; + goto out; } spin_unlock_irqrestore(&priv->rx_lock, flags); /* if the port is closed stop trying to read */ -- 1.6.0.6 -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html