linux/drivers/usb/serial
David Woodhouse 80193195f8 Fix oops on close of hot-unplugged FTDI serial converter
Commit c45d6320 ("fix reference counting of ftdi_private") stopped
ftdi_sio_port_remove() from directly freeing the port-private data, with
the intention if the port was still open, it would be freed when
ftdi_close() is eventually called and releases the last refcount on the
structure.

That's all very well, but ftdi_sio_port_remove() still contains a call
to usb_set_serial_port_data(port, NULL) -- so by the time we get to
ftdi_close() for the port which was unplugged, it _still_ oopses on
dereferencing that NULL pointer, as it did before (and does in 2.6.29).

The fix is just not to clear the private data in ftdi_sio_port_remove().
Then the refcount is properly reduced to zero when the final kref_put()
happens in ftdi_close().

Remove a bogus comment too, while we're at it. And stop doing things
inside "if (priv)" -- it must _always_ be there.

Based loosely on an earlier patch by Daniel Mack, and suggestions by
Alan Stern.

Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
Tested-by: Daniel Mack <daniel@caiaq.de>
Cc: stable@kernel.org
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2009-05-18 08:37:15 -07:00
..
aircable.c USB: usb-serial: fix the aircable_init failure path 2009-02-09 11:19:48 -08:00
ark3116.c usb_serial: API all change 2008-07-22 13:03:22 -07:00
belkin_sa.c USB: remove use of err() in drivers/usb/serial 2008-10-17 14:41:10 -07:00
belkin_sa.h belkin_sa: clean up code 2008-07-22 13:03:22 -07:00
bus.c usb-serial-bus: tidy coding style 2008-07-22 13:03:22 -07:00
ch341.c USB: usb-serial ch341: support for DTR/RTS/CTS 2009-04-17 10:50:26 -07:00
ChangeLog.history trivial: Fix misspelling of firmware 2009-03-30 15:21:59 +02:00
console.c Add device function for USB serial console 2009-01-02 10:19:38 -08:00
cp210x.c USB: Fix cp2101 USB serial device driver termios functions for console use 2009-03-24 16:20:45 -07:00
cyberjack.c USB: removal of tty->low_latency hack dating back to the old serial code 2009-04-23 14:15:29 -07:00
cypress_m8.c USB: removal of tty->low_latency hack dating back to the old serial code 2009-04-23 14:15:29 -07:00
cypress_m8.h cypress_m8: coding style 2008-07-22 13:03:23 -07:00
digi_acceleport.c USB: serial: fix up urb->status usage 2009-01-07 10:00:06 -08:00
empeg.c USB: removal of tty->low_latency hack dating back to the old serial code 2009-04-23 14:15:29 -07:00
ezusb_convert.pl
ezusb.c USB: remove use of err() in drivers/usb/serial 2008-10-17 14:41:10 -07:00
ftdi_sio.c Fix oops on close of hot-unplugged FTDI serial converter 2009-05-18 08:37:15 -07:00
ftdi_sio.h USB: ftdi_sio: add vendor/product id for the Marvell SheevaPlug 2009-05-08 19:34:56 -07:00
funsoft.c funsoft: Switch to linux/uaccess 2008-07-22 13:03:23 -07:00
garmin_gps.c USB: removal of tty->low_latency hack dating back to the old serial code 2009-04-23 14:15:29 -07:00
generic.c USB: removal of tty->low_latency hack dating back to the old serial code 2009-04-23 14:15:29 -07:00
hp4x.c USB: remove info() macro from usb/serial drivers 2008-10-17 14:41:09 -07:00
io_16654.h
io_edgeport.c USB: removal of tty->low_latency hack dating back to the old serial code 2009-04-23 14:15:29 -07:00
io_edgeport.h
io_ionsp.h
io_tables.h tty-usb-io_edgeport: Coding style 2008-07-22 13:03:27 -07:00
io_ti.c USB: removal of tty->low_latency hack dating back to the old serial code 2009-04-23 14:15:29 -07:00
io_ti.h
io_usbvend.h
ipaq.c USB: removal of tty->low_latency hack dating back to the old serial code 2009-04-23 14:15:29 -07:00
ipaq.h
ipw.c USB: removal of tty->low_latency hack dating back to the old serial code 2009-04-23 14:15:29 -07:00
ir-usb.c tty: trivial - fix up email addresses in tty related stuff 2008-11-11 09:30:10 -08:00
iuu_phoenix.c USB: removal of tty->low_latency hack dating back to the old serial code 2009-04-23 14:15:29 -07:00
iuu_phoenix.h
Kconfig trivial: fix typos/grammar errors in Kconfig texts 2009-03-30 15:22:01 +02:00
keyspan_pda.c USB: remove use of err() in drivers/usb/serial 2008-10-17 14:41:10 -07:00
keyspan_usa26msg.h
keyspan_usa28msg.h
keyspan_usa49msg.h
keyspan_usa67msg.h
keyspan_usa90msg.h
keyspan.c USB: drivers: use USB API functions rather than constants 2009-03-24 16:20:28 -07:00
keyspan.h usb_serial: API all change 2008-07-22 13:03:22 -07:00
kl5kusb105.c tty: Drop the lock_kernel in the private ioctl hook 2009-01-02 10:19:42 -08:00
kl5kusb105.h
kobil_sct.c USB: removal of tty->low_latency hack dating back to the old serial code 2009-04-23 14:15:29 -07:00
kobil_sct.h
Makefile USB: serial: rename cp2101 driver to cp210x 2009-03-24 16:20:44 -07:00
Makefile-keyspan_pda_fw
mct_u232.c tty: Drop the lock_kernel in the private ioctl hook 2009-01-02 10:19:42 -08:00
mct_u232.h
mos7720.c USB: removal of tty->low_latency hack dating back to the old serial code 2009-04-23 14:15:29 -07:00
mos7840.c USB: removal of tty->low_latency hack dating back to the old serial code 2009-04-23 14:15:29 -07:00
moto_modem.c USB device codes for Motorola phone. 2009-04-17 10:50:26 -07:00
navman.c tty: usb-serial krefs 2008-10-13 09:51:41 -07:00
omninet.c USB: remove use of err() in drivers/usb/serial 2008-10-17 14:41:10 -07:00
opticon.c USB: removal of tty->low_latency hack dating back to the old serial code 2009-04-23 14:15:29 -07:00
option.c USB: removal of tty->low_latency hack dating back to the old serial code 2009-04-23 14:15:29 -07:00
oti6858.c tty: usb-serial krefs 2008-10-13 09:51:41 -07:00
oti6858.h
pl2303.c tty: pl2303 needs identifiers for Siemens S81 as well as EF81 2009-04-06 14:36:41 -07:00
pl2303.h tty: pl2303 needs identifiers for Siemens S81 as well as EF81 2009-04-06 14:36:41 -07:00
qcserial.c USB: qcserial: Add extra device IDs 2009-04-17 10:50:24 -07:00
safe_serial.c USB: remove use of err() in drivers/usb/serial 2008-10-17 14:41:10 -07:00
siemens_mpi.c USB: add siemens_mpi usb-serial "stub" driver 2009-01-07 10:00:13 -08:00
sierra.c USB: removal of tty->low_latency hack dating back to the old serial code 2009-04-23 14:15:29 -07:00
spcp8x5.c USB: serial: fix up urb->status usage 2009-01-07 10:00:06 -08:00
symbolserial.c symbol: Remove various bits of left over junk 2009-04-06 14:36:42 -07:00
ti_usb_3410_5052.c USB: removal of tty->low_latency hack dating back to the old serial code 2009-04-23 14:15:29 -07:00
ti_usb_3410_5052.h USB: two more usb ids for ti_usb_3410_5052 2009-02-09 11:19:48 -08:00
usb_debug.c USB: serial: usb_debug: Make static 2009-01-07 10:00:03 -08:00
usb-serial.c USB: serial: fix lifetime and locking problems 2009-04-23 14:15:26 -07:00
visor.c USB: removal of tty->low_latency hack dating back to the old serial code 2009-04-23 14:15:29 -07:00
visor.h
whiteheat.c USB: remove use of err() in drivers/usb/serial 2008-10-17 14:41:10 -07:00
whiteheat.h whiteheat: coding style 2008-07-22 13:03:22 -07:00