diff options
Diffstat (limited to 'drivers/usb/serial/usb-serial.c')
| -rw-r--r-- | drivers/usb/serial/usb-serial.c | 10 | 
1 files changed, 5 insertions, 5 deletions
| diff --git a/drivers/usb/serial/usb-serial.c b/drivers/usb/serial/usb-serial.c index 4dd6865d32b0..b5c96e74a903 100644 --- a/drivers/usb/serial/usb-serial.c +++ b/drivers/usb/serial/usb-serial.c | |||
| @@ -242,8 +242,10 @@ static void serial_close(struct tty_struct *tty, struct file * filp) | |||
| 242 | 242 | ||
| 243 | down(&port->sem); | 243 | down(&port->sem); | 
| 244 | 244 | ||
| 245 | if (port->open_count == 0) | 245 | if (port->open_count == 0) { | 
| 246 | goto out; | 246 | up(&port->sem); | 
| 247 | return; | ||
| 248 | } | ||
| 247 | 249 | ||
| 248 | --port->open_count; | 250 | --port->open_count; | 
| 249 | if (port->open_count == 0) { | 251 | if (port->open_count == 0) { | 
| @@ -260,10 +262,8 @@ static void serial_close(struct tty_struct *tty, struct file * filp) | |||
| 260 | module_put(port->serial->type->driver.owner); | 262 | module_put(port->serial->type->driver.owner); | 
| 261 | } | 263 | } | 
| 262 | 264 | ||
| 263 | kref_put(&port->serial->kref, destroy_serial); | ||
| 264 | |||
| 265 | out: | ||
| 266 | up(&port->sem); | 265 | up(&port->sem); | 
| 266 | kref_put(&port->serial->kref, destroy_serial); | ||
| 267 | } | 267 | } | 
| 268 | 268 | ||
| 269 | static int serial_write (struct tty_struct * tty, const unsigned char *buf, int count) | 269 | static int serial_write (struct tty_struct * tty, const unsigned char *buf, int count) | 
