Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c648e94e authored by Johan Hovold's avatar Johan Hovold Committed by Greg Kroah-Hartman
Browse files

USB: cypress_m8: fix TIOCMIWAIT and disconnect



Use tty-port modem-status-change wait queue on which processes are woken
up at hangup and disconnect.

Currently a process waiting on modem-status changes will not be woken on
device disconnect.

Signed-off-by: default avatarJohan Hovold <jhovold@gmail.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 493516e3
Loading
Loading
Loading
Loading
+2 −2
Original line number Original line Diff line number Diff line
@@ -861,7 +861,7 @@ static int cypress_tiocmiwait(struct tty_struct *tty, unsigned long arg)
	char diff;
	char diff;


	for (;;) {
	for (;;) {
		interruptible_sleep_on(&port->delta_msr_wait);
		interruptible_sleep_on(&port->port.delta_msr_wait);
		/* see if a signal did it */
		/* see if a signal did it */
		if (signal_pending(current))
		if (signal_pending(current))
			return -ERESTARTSYS;
			return -ERESTARTSYS;
@@ -1176,7 +1176,7 @@ static void cypress_read_int_callback(struct urb *urb)
	if (priv->current_status != priv->prev_status) {
	if (priv->current_status != priv->prev_status) {
		priv->diff_status |= priv->current_status ^
		priv->diff_status |= priv->current_status ^
			priv->prev_status;
			priv->prev_status;
		wake_up_interruptible(&port->delta_msr_wait);
		wake_up_interruptible(&port->port.delta_msr_wait);
		priv->prev_status = priv->current_status;
		priv->prev_status = priv->current_status;
	}
	}
	spin_unlock_irqrestore(&priv->lock, flags);
	spin_unlock_irqrestore(&priv->lock, flags);