59 lines
2.1 KiB
Diff
59 lines
2.1 KiB
Diff
|
From 67cbc16b3e6d34cf3932f88fd32323878026d6a0 Mon Sep 17 00:00:00 2001
|
||
|
From: Kautuk Consul <kconsul@linux.vnet.ibm.com>
|
||
|
Date: Tue, 29 Aug 2023 10:12:00 +1000
|
||
|
Subject: [PATCH 1/2] virtio-serial: Make read and write methods report failure
|
||
|
|
||
|
RH-Author: Thomas Huth <thuth@redhat.com>
|
||
|
RH-MergeRequest: 1: Fix SLOF crash when only using virtio console (without spapr-vty)
|
||
|
RH-Jira: RHEL-3709
|
||
|
RH-Acked-by: David Gibson (Red Hat) <dgibson@redhat.com>
|
||
|
RH-Acked-by: Laurent Vivier <lvivier@redhat.com>
|
||
|
RH-Commit: [1/2] 7aee41dceade77a47edd794cab43672ff95896d0
|
||
|
|
||
|
The read and write methods return successfully even if the virtio device
|
||
|
is closed (virtiodev is 0) and it is not able to send or receive any
|
||
|
characters.
|
||
|
|
||
|
Make the read and write methods return 0 to indicate they did not
|
||
|
succeed in this case.
|
||
|
|
||
|
This also fixes an invalid stack access in the read method.
|
||
|
|
||
|
Fixes: 8174acd ("virtio-serial: Close device completely")
|
||
|
Signed-off-by: Kautuk Consul <kconsul@linux.vnet.ibm.com>
|
||
|
Signed-off-by: Jordan Niethe <jniethe5@gmail.com>
|
||
|
Reviewed-by: Thomas Huth <thuth@redhat.com>
|
||
|
Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru>
|
||
|
(cherry picked from commit 63b66a5147069bda815989732442cb07790609db)
|
||
|
Jira: https://issues.redhat.com/browse/RHEL-3709
|
||
|
Signed-off-by: Thomas Huth <thuth@redhat.com>
|
||
|
---
|
||
|
board-qemu/slof/virtio-serial.fs | 4 ++--
|
||
|
1 file changed, 2 insertions(+), 2 deletions(-)
|
||
|
|
||
|
diff --git a/board-qemu/slof/virtio-serial.fs b/board-qemu/slof/virtio-serial.fs
|
||
|
index 82868e2..41e2e04 100644
|
||
|
--- a/board-qemu/slof/virtio-serial.fs
|
||
|
+++ b/board-qemu/slof/virtio-serial.fs
|
||
|
@@ -67,7 +67,7 @@ virtiodev virtio-serial-init drop
|
||
|
;
|
||
|
|
||
|
: write ( addr len -- actual )
|
||
|
- virtiodev 0= IF nip EXIT THEN
|
||
|
+ virtiodev 0= IF 2drop 0 EXIT THEN
|
||
|
tuck
|
||
|
0 ?DO
|
||
|
dup c@ virtiodev SWAP virtio-serial-putchar
|
||
|
@@ -78,7 +78,7 @@ virtiodev virtio-serial-init drop
|
||
|
|
||
|
: read ( addr len -- actual )
|
||
|
0= IF drop 0 EXIT THEN
|
||
|
- virtiodev 0= IF nip EXIT THEN
|
||
|
+ virtiodev 0= IF drop 0 EXIT THEN
|
||
|
virtiodev virtio-serial-haschar 0= IF 0 swap c! -2 EXIT THEN
|
||
|
virtiodev virtio-serial-getchar swap c! 1
|
||
|
;
|
||
|
--
|
||
|
2.41.0
|
||
|
|