diff options
Diffstat (limited to 'drivers/usb')
-rw-r--r-- | drivers/usb/serial/usb-serial.c | 14 |
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 | */ |
197 | static int serial_install(struct tty_driver *driver, struct tty_struct *tty) | 197 | static 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 | */ |
350 | static void serial_release(struct tty_struct *tty) | 351 | static 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 | }; |