aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKautuk Consul <kconsul@linux.vnet.ibm.com>2023-08-29 10:12:00 +1000
committerAlexey Kardashevskiy <aik@ozlabs.ru>2023-09-18 18:20:45 +1000
commit63b66a5147069bda815989732442cb07790609db (patch)
tree6bdfa18c90b2248480a05fb2fc2a1403752580a9
parentadc561044f17d21c4d164cbe07068a3851450f8f (diff)
downloadSLOF-63b66a5147069bda815989732442cb07790609db.zip
SLOF-63b66a5147069bda815989732442cb07790609db.tar.gz
SLOF-63b66a5147069bda815989732442cb07790609db.tar.bz2
virtio-serial: Make read and write methods report failure
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>
-rw-r--r--board-qemu/slof/virtio-serial.fs4
1 files 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
;