diff --git a/drivers/usb/class/cdc-acm.c b/drivers/usb/class/cdc-acm.c index e8c564a..3a97fec 100644 --- a/drivers/usb/class/cdc-acm.c +++ b/drivers/usb/class/cdc-acm.c @@ -570,8 +570,8 @@ static void acm_tty_close(struct tty_struct *tty, struct file *filp) if (!acm) return; - mutex_lock(&open_mutex); if (tty_port_close_start(&acm->port, tty, filp) == 0) { + mutex_lock(&open_mutex); if (!acm->dev) { tty_port_tty_set(&acm->port, NULL); acm_tty_unregister(acm); @@ -580,6 +580,7 @@ static void acm_tty_close(struct tty_struct *tty, struct file *filp) mutex_unlock(&open_mutex); return; } + mutex_lock(&open_mutex); acm_port_down(acm); tty_port_close_end(&acm->port, tty); tty_port_tty_set(&acm->port, NULL);