diff options
author | Kautuk Consul <kconsul@linux.vnet.ibm.com> | 2023-08-29 10:12:00 +1000 |
---|---|---|
committer | Alexey Kardashevskiy <aik@ozlabs.ru> | 2023-09-18 18:20:45 +1000 |
commit | 63b66a5147069bda815989732442cb07790609db (patch) | |
tree | 6bdfa18c90b2248480a05fb2fc2a1403752580a9 | |
parent | adc561044f17d21c4d164cbe07068a3851450f8f (diff) | |
download | SLOF-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.fs | 4 |
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 ; |