Patrick Rudolph (siro@das-labor.org) just uploaded a new patch set to gerrit, which you can find at https://review.coreboot.org/14508
-gerrit
commit b7996cdb2291af87a0b72de3a13afb924e152a67 Author: Patrick Rudolph siro@das-labor.org Date: Mon Apr 25 12:19:39 2016 +0200
qemu-0.15.x/serialice-com: Return I/O errors
Return I/O erros to calling function. Return -1 in serialice_write and serialice_read.
Change-Id: I168093eaad897f2998c055e46acd88fe6a263947 Signed-off-by: Patrick Rudolph siro@das-labor.org --- qemu-0.15.x/serialice-com.c | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-)
diff --git a/qemu-0.15.x/serialice-com.c b/qemu-0.15.x/serialice-com.c index ee539f4..c9a8e8b 100644 --- a/qemu-0.15.x/serialice-com.c +++ b/qemu-0.15.x/serialice-com.c @@ -79,7 +79,8 @@ static int serialice_read(SerialICEState * state, void *buf, size_t nbyte) while (1) { #ifdef WIN32 int ret = 0; - ReadFile(state->fd, buf, nbyte - bytes_read, &ret, NULL); + if (!ReadFile(state->fd, buf, nbyte - bytes_read, &ret, NULL)) + return -1; if (!ret) { break; } @@ -91,7 +92,7 @@ static int serialice_read(SerialICEState * state, void *buf, size_t nbyte) }
if (ret == -1) { - break; + return -1; } #endif
@@ -116,16 +117,17 @@ static int serialice_write(SerialICEState * state, const void *buf, for (i = 0; i < (int)nbyte; i++) { #ifdef WIN32 int ret = 0; - while (ret == 0) { - WriteFile(state->fd, buffer + i, 1, &ret, NULL); - } + if (!WriteFile(state->fd, buffer + i, 1, &ret, NULL)) + return -1; + ret = 0; - while (ret == 0) { - ReadFile(state->fd, &c, 1, &ret, NULL); - } + if (!ReadFile(state->fd, &c, 1, &ret, NULL)) + return -1; #else - while (write(state->fd, buffer + i, 1) != 1) ; - while (read(state->fd, &c, 1) != 1) ; + if (write(state->fd, buffer + i, 1) != 1) + return -1; + if (read(state->fd, &c, 1) != 1) + return -1; #endif if (c != buffer[i] && !handshake_mode) { printf("Readback error! %x/%x\n", c, buffer[i]);