um: ubd: Retry buffer read on any kind of error
authorGabriel Krisman Bertazi <krisman@collabora.com>
Tue, 17 Mar 2020 00:45:07 +0000 (20:45 -0400)
committerRichard Weinberger <richard@nod.at>
Sun, 29 Mar 2020 21:21:37 +0000 (23:21 +0200)
Should bulk_req_safe_read return an error, we want to retry the read,
otherwise, even though no IO will be done, os_write_file might still end
up writing garbage to the pipe.

Cc: Martyn Welch <martyn.welch@collabora.com>
Signed-off-by: Gabriel Krisman Bertazi <krisman@collabora.com>
Signed-off-by: Richard Weinberger <richard@nod.at>
arch/um/drivers/ubd_kern.c

index eca45ad..eae8c83 100644 (file)
@@ -1592,11 +1592,11 @@ int io_thread(void *arg)
                        &io_remainder_size,
                        UBD_REQ_BUFFER_SIZE
                );
-               if (n < 0) {
-                       if (n == -EAGAIN) {
+               if (n <= 0) {
+                       if (n == -EAGAIN)
                                ubd_read_poll(-1);
-                               continue;
-                       }
+
+                       continue;
                }
 
                for (count = 0; count < n/sizeof(struct io_thread_req *); count++) {