diff --git a/plugins/serial2002/serial2002.c b/plugins/serial2002/serial2002.c
index 7de2a8294a486fa9d54e3b78e7f006d2b810f9ae..9187d639006b613a4a53f472518ec82d611ec929 100644
--- a/plugins/serial2002/serial2002.c
+++ b/plugins/serial2002/serial2002.c
@@ -471,7 +471,9 @@ static struct moberg_status device_open(struct moberg_device_context *device)
     }
     device->port.io.fd = fd;
     device->port.io.read.pos = 0;
+    device->port.io.read.count = 0;
     device->port.io.write.pos = 0;
+    device->port.io.write.count = 0;
     struct serial2002_config config;
     result = serial2002_read_config(&device->port.io,
                                     device->port.timeout, &config);
diff --git a/plugins/serial2002/serial2002_lib.c b/plugins/serial2002/serial2002_lib.c
index 56c8668334fe8136e4bf58fb86b9c458340d5d97..da31939855b3338d1856c4c0780ff45c5698c906 100644
--- a/plugins/serial2002/serial2002_lib.c
+++ b/plugins/serial2002/serial2002_lib.c
@@ -300,7 +300,7 @@ static struct moberg_status do_read_config(
   long timeout,
   struct serial2002_config *config)
 {
-  struct serial2002_data data = { 0, 0 };
+  struct serial2002_data data = { 0, 0, 0 };
 
   discard_pending(io);
   memset(config, 0, sizeof(*config));