aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/usb
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/usb')
-rw-r--r--drivers/usb/serial/usb-serial.c14
1 files changed, 6 insertions, 8 deletions
diff --git a/drivers/usb/serial/usb-serial.c b/drivers/usb/serial/usb-serial.c
index ff75a3589e7e..aa6b2ae951ae 100644
--- a/drivers/usb/serial/usb-serial.c
+++ b/drivers/usb/serial/usb-serial.c
@@ -192,7 +192,7 @@ void usb_serial_put(struct usb_serial *serial)
192 * This is the first place a new tty gets used. Hence this is where we 192 * This is the first place a new tty gets used. Hence this is where we
193 * acquire references to the usb_serial structure and the driver module, 193 * acquire references to the usb_serial structure and the driver module,
194 * where we store a pointer to the port, and where we do an autoresume. 194 * where we store a pointer to the port, and where we do an autoresume.
195 * All these actions are reversed in serial_release(). 195 * All these actions are reversed in serial_cleanup().
196 */ 196 */
197static int serial_install(struct tty_driver *driver, struct tty_struct *tty) 197static int serial_install(struct tty_driver *driver, struct tty_struct *tty)
198{ 198{
@@ -339,15 +339,16 @@ static void serial_close(struct tty_struct *tty, struct file *filp)
339} 339}
340 340
341/** 341/**
342 * serial_release - free resources post close/hangup 342 * serial_cleanup - free resources post close/hangup
343 * @port: port to free up 343 * @port: port to free up
344 * 344 *
345 * Do the resource freeing and refcount dropping for the port. 345 * Do the resource freeing and refcount dropping for the port.
346 * Avoid freeing the console. 346 * Avoid freeing the console.
347 * 347 *
348 * Called when the last tty kref is dropped. 348 * Called asynchronously after the last tty kref is dropped,
349 * and the tty layer has already done the tty_shutdown(tty);
349 */ 350 */
350static void serial_release(struct tty_struct *tty) 351static void serial_cleanup(struct tty_struct *tty)
351{ 352{
352 struct usb_serial_port *port = tty->driver_data; 353 struct usb_serial_port *port = tty->driver_data;
353 struct usb_serial *serial; 354 struct usb_serial *serial;
@@ -361,9 +362,6 @@ static void serial_release(struct tty_struct *tty)
361 362
362 dbg("%s - port %d", __func__, port->number); 363 dbg("%s - port %d", __func__, port->number);
363 364
364 /* Standard shutdown processing */
365 tty_shutdown(tty);
366
367 tty->driver_data = NULL; 365 tty->driver_data = NULL;
368 366
369 serial = port->serial; 367 serial = port->serial;
@@ -1210,7 +1208,7 @@ static const struct tty_operations serial_ops = {
1210 .chars_in_buffer = serial_chars_in_buffer, 1208 .chars_in_buffer = serial_chars_in_buffer,
1211 .tiocmget = serial_tiocmget, 1209 .tiocmget = serial_tiocmget,
1212 .tiocmset = serial_tiocmset, 1210 .tiocmset = serial_tiocmset,
1213 .shutdown = serial_release, 1211 .cleanup = serial_cleanup,
1214 .install = serial_install, 1212 .install = serial_install,
1215 .proc_fops = &serial_proc_fops, 1213 .proc_fops = &serial_proc_fops,
1216}; 1214};