diff options
author | Matthias Urlichs <smurf@smurf.noris.de> | 2006-09-11 12:35:20 +0200 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2006-09-12 03:10:20 -0700 |
commit | 5992583889ce6b7960e8023e356b2a0930ebce7c (patch) | |
tree | 487a1777c3e48dab05c546e15f9f5c9f17a07600 | |
parent | 05ff0e291af086f4325bac76abad250690bbbd63 (diff) | |
download | linux-5992583889ce6b7960e8023e356b2a0930ebce7c.tar.gz linux-5992583889ce6b7960e8023e356b2a0930ebce7c.tar.bz2 linux-5992583889ce6b7960e8023e356b2a0930ebce7c.zip |
usbserial: Reference leak
A sufficiently-large number of USB serial devices causes a reference leak
when /proc/tty/drivers/usbserial is read.
Signed-Off-By: Matthias Urlichs <smurf@smurf.noris.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-rw-r--r-- | drivers/usb/serial/usb-serial.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/drivers/usb/serial/usb-serial.c b/drivers/usb/serial/usb-serial.c index 12c1694d322e..e06a41bd0f3b 100644 --- a/drivers/usb/serial/usb-serial.c +++ b/drivers/usb/serial/usb-serial.c @@ -464,8 +464,10 @@ static int serial_read_proc (char *page, char **start, off_t off, int count, int length += sprintf (page+length, " path:%s", tmp); length += sprintf (page+length, "\n"); - if ((length + begin) > (off + count)) + if ((length + begin) > (off + count)) { + usb_serial_put(serial); goto done; + } if ((length + begin) < off) { begin += length; length = 0; |