diff options
| -rw-r--r-- | gdbstub.c | 12 | ||||
| -rw-r--r-- | hw/net/e1000e.c | 4 |
2 files changed, 9 insertions, 7 deletions
diff --git a/gdbstub.c b/gdbstub.c index b9e3710bfe..8155eedf9c 100644 --- a/gdbstub.c +++ b/gdbstub.c @@ -333,7 +333,7 @@ static int get_char(GDBState *s) if (ret < 0) { if (errno == ECONNRESET) s->fd = -1; - if (errno != EINTR && errno != EAGAIN) + if (errno != EINTR) return -1; } else if (ret == 0) { close(s->fd); @@ -394,7 +394,7 @@ static void put_buffer(GDBState *s, const uint8_t *buf, int len) while (len > 0) { ret = send(s->fd, buf, len, 0); if (ret < 0) { - if (errno != EINTR && errno != EAGAIN) + if (errno != EINTR) return; } else { buf += ret; @@ -1543,9 +1543,13 @@ gdb_handlesig(CPUState *cpu, int sig) for (i = 0; i < n; i++) { gdb_read_byte(s, buf[i]); } - } else if (n == 0 || errno != EAGAIN) { + } else { /* XXX: Connection closed. Should probably wait for another connection before continuing. */ + if (n == 0) { + close(s->fd); + } + s->fd = -1; return sig; } } @@ -1600,8 +1604,6 @@ static void gdb_accept(void) gdb_has_xml = false; gdbserver_state = s; - - fcntl(fd, F_SETFL, O_NONBLOCK); } static int gdbserver_open(int port) diff --git a/hw/net/e1000e.c b/hw/net/e1000e.c index 61bcbb6083..692283fdd7 100644 --- a/hw/net/e1000e.c +++ b/hw/net/e1000e.c @@ -133,7 +133,7 @@ static uint64_t e1000e_io_read(void *opaque, hwaddr addr, unsigned size) { E1000EState *s = opaque; - uint32_t idx; + uint32_t idx = 0; uint64_t val; switch (addr) { @@ -158,7 +158,7 @@ e1000e_io_write(void *opaque, hwaddr addr, uint64_t val, unsigned size) { E1000EState *s = opaque; - uint32_t idx; + uint32_t idx = 0; switch (addr) { case E1000_IOADDR: |