This patch fixes -EIO caused when serial port opened more than once. Signed-off-by: Denis Joseph Barrow --- Index: linux-2.6/drivers/net/usb/hso.c =================================================================== --- linux-2.6.orig/drivers/net/usb/hso.c 2009-01-14 11:51:26.000000000 +0100 +++ linux-2.6/drivers/net/usb/hso.c 2009-01-14 11:57:59.000000000 +0100 @@ -1354,13 +1354,14 @@ /* do the actual close */ serial->open_count--; kref_put(&serial->parent->ref, hso_serial_ref_free); + if (serial->tty == tty) + tty_kref_put(tty); if (serial->open_count <= 0) { serial->open_count = 0; spin_lock_irq(&serial->serial_lock); if (serial->tty == tty) { serial->tty->driver_data = NULL; serial->tty = NULL; - tty_kref_put(tty); } spin_unlock_irq(&serial->serial_lock); if (!usb_gone) @@ -1368,7 +1369,6 @@ tasklet_kill(&serial->unthrottle_tasklet); cancel_work_sync(&serial->retry_unthrottle_workqueue); } - if (!usb_gone) usb_autopm_put_interface(serial->parent->interface);