summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJohan Hovold <jhovold@gmail.com>2012-04-25 15:56:32 +0200
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2012-04-25 11:37:19 -0700
commitbdce6612a0562e64acec92bbf6dce567609f5867 (patch)
tree18f59af1558fc0dde243445246803658493df152
parent6f1efd6c5aa63ddcfe1ffc60ade716f5421766f4 (diff)
downloadlinux-bdce6612a0562e64acec92bbf6dce567609f5867.tar.bz2
USB: serial: fix interface data use
The interface data should not be used as a flag to signal disconnect. Now that all serial drivers use the usb_serial disconnect flag and mutex, we can set the interface data prior to registering the ports and there's no need to clear it at disconnect. This should hopefully also make it more clear that the interface data is not a flag, which could prevent future misuse. Signed-off-by: Johan Hovold <jhovold@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-rw-r--r--drivers/usb/serial/usb-serial.c6
1 files changed, 2 insertions, 4 deletions
diff --git a/drivers/usb/serial/usb-serial.c b/drivers/usb/serial/usb-serial.c
index 97355a15bbea..906f06e97fde 100644
--- a/drivers/usb/serial/usb-serial.c
+++ b/drivers/usb/serial/usb-serial.c
@@ -1043,6 +1043,8 @@ int usb_serial_probe(struct usb_interface *interface,
dbg("the device claims to support interrupt out transfers, but write_int_callback is not defined");
}
+ usb_set_intfdata(interface, serial);
+
/* if this device type has an attach function, call it */
if (type->attach) {
retval = type->attach(serial);
@@ -1087,10 +1089,7 @@ int usb_serial_probe(struct usb_interface *interface,
serial->disconnected = 0;
usb_serial_console_init(debug, minor);
-
exit:
- /* success */
- usb_set_intfdata(interface, serial);
module_put(type->driver.owner);
return 0;
@@ -1112,7 +1111,6 @@ void usb_serial_disconnect(struct usb_interface *interface)
dbg("%s", __func__);
mutex_lock(&serial->disc_mutex);
- usb_set_intfdata(interface, NULL);
/* must set a flag, to signal subdrivers */
serial->disconnected = 1;
mutex_unlock(&serial->disc_mutex);