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

Commit 44a0c019 authored by Jon Povey's avatar Jon Povey Committed by Greg Kroah-Hartman
Browse files

USB: g_serial: don't set low_latency flag



No longer set low_latency flag as it causes this warning backtrace:

  WARNING: at kernel/mutex.c:207 __mutex_lock_slowpath+0x6c/0x288()

Fix associated locking and wakeups.

Signed-off-by: default avatarJon Povey <jon.povey@racelogic.co.uk>
Cc: Maulik Mankad <x0082077@ti.com>
Cc: stable <stable@kernel.org>
Acked-by: default avatarDavid Brownell <dbrownell@users.sourceforge.net>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
parent 93416253
Loading
Loading
Loading
Loading
+2 −13
Original line number Diff line number Diff line
@@ -536,17 +536,11 @@ static void gs_rx_push(unsigned long _port)
		list_move(&req->list, &port->read_pool);
	}

	/* Push from tty to ldisc; this is immediate with low_latency, and
	 * may trigger callbacks to this driver ... so drop the spinlock.
	/* Push from tty to ldisc; without low_latency set this is handled by
	 * a workqueue, so we won't get callbacks and can hold port_lock
	 */
	if (tty && do_push) {
		spin_unlock_irq(&port->port_lock);
		tty_flip_buffer_push(tty);
		wake_up_interruptible(&tty->read_wait);
		spin_lock_irq(&port->port_lock);

		/* tty may have been closed */
		tty = port->port_tty;
	}


@@ -784,11 +778,6 @@ static int gs_open(struct tty_struct *tty, struct file *file)
	port->open_count = 1;
	port->openclose = false;

	/* low_latency means ldiscs work in tasklet context, without
	 * needing a workqueue schedule ... easier to keep up.
	 */
	tty->low_latency = 1;

	/* if connected, start the I/O stream */
	if (port->port_usb) {
		struct gserial	*gser = port->port_usb;