diff options
Diffstat (limited to 'drivers/usb/serial/opticon.c')
| -rw-r--r-- | drivers/usb/serial/opticon.c | 18 | 
1 files changed, 8 insertions, 10 deletions
diff --git a/drivers/usb/serial/opticon.c b/drivers/usb/serial/opticon.c index e13e1a4d3e1..5f4b0cd0f6e 100644 --- a/drivers/usb/serial/opticon.c +++ b/drivers/usb/serial/opticon.c @@ -120,7 +120,10 @@ static int send_control_msg(struct usb_serial_port *port, u8 requesttype,  				0, 0, buffer, 1, 0);  	kfree(buffer); -	return retval; +	if (retval < 0) +		return retval; + +	return 0;  }  static int opticon_open(struct tty_struct *tty, struct usb_serial_port *port) @@ -306,7 +309,6 @@ static int opticon_tiocmset(struct tty_struct *tty,  			   unsigned int set, unsigned int clear)  {  	struct usb_serial_port *port = tty->driver_data; -	struct usb_serial *serial = port->serial;  	struct opticon_private *priv = usb_get_serial_port_data(port);  	unsigned long flags;  	bool rts; @@ -327,15 +329,11 @@ static int opticon_tiocmset(struct tty_struct *tty,  	if (!changed)  		return 0; -	/* Send the new RTS state to the connected device */ -	mutex_lock(&serial->disc_mutex); -	if (!serial->disconnected) -		ret = send_control_msg(port, CONTROL_RTS, !rts); -	else -		ret = -ENODEV; -	mutex_unlock(&serial->disc_mutex); +	ret = send_control_msg(port, CONTROL_RTS, !rts); +	if (ret) +		return usb_translate_errors(ret); -	return ret; +	return 0;  }  static int get_serial_info(struct usb_serial_port *port,  |