diff options
| author | Arnd Bergmann <arnd@arndb.de> | 2011-12-06 14:23:35 +0000 | 
|---|---|---|
| committer | Arnd Bergmann <arnd@arndb.de> | 2011-12-06 14:23:35 +0000 | 
| commit | 3642a0a2c7d2d1949988d0fd004a8039c1f3d02f (patch) | |
| tree | e687c88b1b66ad51a6a6c529f7f328f2d3b625fa /drivers/usb/class/cdc-acm.c | |
| parent | 58a273745fbb2fbd01d26e7a60f0acc8c1d99469 (diff) | |
| parent | b07fed455c883f07f8e847f5b0d79975b4dc8e7a (diff) | |
Merge branch 'mxs/saif' into next/drivers
Conflicts:
	drivers/net/ethernet/cadence/Kconfig
Diffstat (limited to 'drivers/usb/class/cdc-acm.c')
| -rw-r--r-- | drivers/usb/class/cdc-acm.c | 8 | 
1 files changed, 5 insertions, 3 deletions
diff --git a/drivers/usb/class/cdc-acm.c b/drivers/usb/class/cdc-acm.c index 6960715c5063..e8c564a53346 100644 --- a/drivers/usb/class/cdc-acm.c +++ b/drivers/usb/class/cdc-acm.c @@ -539,7 +539,6 @@ static void acm_port_down(struct acm *acm)  {  	int i; -	mutex_lock(&open_mutex);  	if (acm->dev) {  		usb_autopm_get_interface(acm->control);  		acm_set_control(acm, acm->ctrlout = 0); @@ -551,14 +550,15 @@ static void acm_port_down(struct acm *acm)  		acm->control->needs_remote_wakeup = 0;  		usb_autopm_put_interface(acm->control);  	} -	mutex_unlock(&open_mutex);  }  static void acm_tty_hangup(struct tty_struct *tty)  {  	struct acm *acm = tty->driver_data;  	tty_port_hangup(&acm->port); +	mutex_lock(&open_mutex);  	acm_port_down(acm); +	mutex_unlock(&open_mutex);  }  static void acm_tty_close(struct tty_struct *tty, struct file *filp) @@ -569,8 +569,9 @@ static void acm_tty_close(struct tty_struct *tty, struct file *filp)  	   shutdown */  	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); @@ -582,6 +583,7 @@ static void acm_tty_close(struct tty_struct *tty, struct file *filp)  	acm_port_down(acm);  	tty_port_close_end(&acm->port, tty);  	tty_port_tty_set(&acm->port, NULL); +	mutex_unlock(&open_mutex);  }  static int acm_tty_write(struct tty_struct *tty,  | 
