summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--gdbstub.c12
-rw-r--r--hw/net/e1000e.c4
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: