drivers/tty/hvc/hvc_console.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-)
After hvc_write completes, call hvc_kick also in the case the output
buffer has been drained, to ensure tty_wakeup gets called.
This fixes that functions which wait for a drained buffer got stuck
occasionally.
Cc: stable@vger.kernel.org
Closes: https://bugzilla.opensuse.org/show_bug.cgi?id=1230062
Signed-off-by: Fabian Vogt <fvogt@suse.de>
---
drivers/tty/hvc/hvc_console.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/drivers/tty/hvc/hvc_console.c b/drivers/tty/hvc/hvc_console.c
index cd1f657f782d..13c663a154c4 100644
--- a/drivers/tty/hvc/hvc_console.c
+++ b/drivers/tty/hvc/hvc_console.c
@@ -543,10 +543,10 @@ static ssize_t hvc_write(struct tty_struct *tty, const u8 *buf, size_t count)
}
/*
- * Racy, but harmless, kick thread if there is still pending data.
+ * Kick thread to flush if there's still pending data
+ * or to wakeup the write queue.
*/
- if (hp->n_outbuf)
- hvc_kick();
+ hvc_kick();
return written;
}
--
2.50.1
On 15. 08. 25, 13:33, Fabian Vogt wrote: > After hvc_write completes, call hvc_kick also in the case the output > buffer has been drained, to ensure tty_wakeup gets called. > > This fixes that functions which wait for a drained buffer got stuck > occasionally. > > Cc: stable@vger.kernel.org > Closes: https://bugzilla.opensuse.org/show_bug.cgi?id=1230062 > Signed-off-by: Fabian Vogt <fvogt@suse.de> It's hard to tell if it the right thing™ as HVC is a mess. But on the basic code level, LGTM. Let's see if something pops up. Reviewed-by: Jiri Slaby <jirislaby@kernel.org> > --- > drivers/tty/hvc/hvc_console.c | 6 +++--- > 1 file changed, 3 insertions(+), 3 deletions(-) > > diff --git a/drivers/tty/hvc/hvc_console.c b/drivers/tty/hvc/hvc_console.c > index cd1f657f782d..13c663a154c4 100644 > --- a/drivers/tty/hvc/hvc_console.c > +++ b/drivers/tty/hvc/hvc_console.c > @@ -543,10 +543,10 @@ static ssize_t hvc_write(struct tty_struct *tty, const u8 *buf, size_t count) > } > > /* > - * Racy, but harmless, kick thread if there is still pending data. > + * Kick thread to flush if there's still pending data > + * or to wakeup the write queue. > */ > - if (hp->n_outbuf) > - hvc_kick(); > + hvc_kick(); > > return written; > } -- js suse labs
© 2016 - 2025 Red Hat, Inc.