summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAnton Ivanov <anton.ivanov@cambridgegreys.com>2018-09-25 08:47:13 +0100
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2019-12-01 09:13:50 +0100
commit63cf63befc46a110697863458047181c0e34aa15 (patch)
tree83d71d7895c243f326d4245b6c73afc32e16e4d6
parent7c8372c6a249cae2b30237198db39ba5ea23cf95 (diff)
um: Make line/tty semantics use true write IRQ
[ Upstream commit 917e2fd2c53eb3c4162f5397555cbd394390d4bc ] This fixes a long standing bug where large amounts of output could freeze the tty (most commonly seen on stdio console). While the bug has always been there it became more pronounced after moving to the new interrupt controller. The line semantics are now changed to have true IRQ write semantics which should further improve the tty/line subsystem stability and performance Signed-off-by: Anton Ivanov <anton.ivanov@cambridgegreys.com> Signed-off-by: Richard Weinberger <richard@nod.at> Signed-off-by: Sasha Levin <sashal@kernel.org>
-rw-r--r--arch/um/drivers/line.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/arch/um/drivers/line.c b/arch/um/drivers/line.c
index 366e57f5e8d6..7e524efed584 100644
--- a/arch/um/drivers/line.c
+++ b/arch/um/drivers/line.c
@@ -261,7 +261,7 @@ static irqreturn_t line_write_interrupt(int irq, void *data)
if (err == 0) {
spin_unlock(&line->lock);
return IRQ_NONE;
- } else if (err < 0) {
+ } else if ((err < 0) && (err != -EAGAIN)) {
line->head = line->buffer;
line->tail = line->buffer;
}