summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorOlivier Blin2008-08-08 21:01:41 +0200
committerJeff Garzik2008-08-14 10:43:46 +0200
commit6d558a52ba295fc1c281c671d7daab2f74ddb4f2 (patch)
treed16d3ad63cc9e0b5def6e313ac3657959597a4ff
parenthso: fix oops in read/write callbacks (diff)
downloadkernel-qcow2-linux-6d558a52ba295fc1c281c671d7daab2f74ddb4f2.tar.gz
kernel-qcow2-linux-6d558a52ba295fc1c281c671d7daab2f74ddb4f2.tar.xz
kernel-qcow2-linux-6d558a52ba295fc1c281c671d7daab2f74ddb4f2.zip
hso: fix refcounting on the ttyHSx devices
The references on ttyHSx devices were not decremented correctly when the tty was closed. The helper freeing the serial devices was never called because of that, and the module left some dangling sysfs devices after being unloaded. Signed-off-by: Olivier Blin <blino@mandriva.com> Cc: Jari Tenhunen <jari.tenhunen@iki.fi> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
-rw-r--r--drivers/net/usb/hso.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/net/usb/hso.c b/drivers/net/usb/hso.c
index 94a27f764e6b..94c41bbedee9 100644
--- a/drivers/net/usb/hso.c
+++ b/drivers/net/usb/hso.c
@@ -1103,8 +1103,8 @@ static void hso_serial_close(struct tty_struct *tty, struct file *filp)
/* reset the rts and dtr */
/* do the actual close */
serial->open_count--;
+ kref_put(&serial->parent->ref, hso_serial_ref_free);
if (serial->open_count <= 0) {
- kref_put(&serial->parent->ref, hso_serial_ref_free);
serial->open_count = 0;
if (serial->tty) {
serial->tty->driver_data = NULL;