You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
59 lines
2.1 KiB
59 lines
2.1 KiB
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
|
|
|