USB: fix bug in serial driver unregistration
authorAlan Stern <stern@rowland.harvard.edu>
Wed, 28 Mar 2012 20:10:49 +0000 (16:10 -0400)
committerVarun Wadekar <vwadekar@nvidia.com>
Wed, 18 Apr 2012 14:48:53 +0000 (19:48 +0530)
commita1063cf6b5e604d832fd33ebb3a26d9d01037a04
tree4b76b56dfd812bdd4af88096badd46da465df653
parente3da887832464acdbb4046263a8d3460e59ef001
USB: fix bug in serial driver unregistration

This patch (as1536) fixes a bug in the USB serial core.  Unloading and
reloading a serial driver while a serial device is plugged in causes
errors because of the code in usb_serial_disconnect() that tries to
make sure the port_remove method is called.  With the new order of
driver registration introduced in the 3.4 kernel, this is definitely
not the right thing to do (if indeed it ever was).

The patch removes that whole section code, along with the mechanism
for keeping track of each port's registration state, which is no
longer needed.  The driver core can handle all that stuff for us.

Note: This has been tested only with one or two USB serial drivers.
In theory, other drivers might still run into trouble.  But if they
do, it will be the fault of the drivers, not of this patch -- that is,
the drivers will need to be fixed.

Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
Reported-and-tested-by: Johan Hovold <jhovold@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/usb/serial/bus.c
drivers/usb/serial/usb-serial.c
include/linux/usb/serial.h