Signed-off-by: Vladimir Sementsov-Ogievskiy <[email protected]>
---
 hw/usb/redirect.c | 59 ++++++++++++++++++++++++++---------------------
 1 file changed, 33 insertions(+), 26 deletions(-)

diff --git a/hw/usb/redirect.c b/hw/usb/redirect.c
index dfd9e8bb50c..f4196b944d5 100644
--- a/hw/usb/redirect.c
+++ b/hw/usb/redirect.c
@@ -2267,8 +2267,9 @@ static int usbredir_post_load(void *priv, int version_id)
 }
 
 /* For usbredirparser migration */
-static int usbredir_put_parser(QEMUFile *f, void *priv, size_t unused,
-                               const VMStateField *field, JSONWriter *vmdesc)
+static bool usbredir_save_parser(QEMUFile *f, void *priv, size_t unused,
+                                 const VMStateField *field,
+                                 JSONWriter *vmdesc, Error **errp)
 {
     USBRedirDevice *dev = priv;
     uint8_t *data;
@@ -2276,7 +2277,7 @@ static int usbredir_put_parser(QEMUFile *f, void *priv, 
size_t unused,
 
     if (dev->parser == NULL) {
         qemu_put_be32(f, 0);
-        return 0;
+        return true;
     }
 
     usbredirparser_serialize(dev->parser, &data, &len);
@@ -2290,11 +2291,11 @@ static int usbredir_put_parser(QEMUFile *f, void *priv, 
size_t unused,
 
     free(data);
 
-    return 0;
+    return true;
 }
 
-static int usbredir_get_parser(QEMUFile *f, void *priv, size_t unused,
-                               const VMStateField *field)
+static bool usbredir_load_parser(QEMUFile *f, void *priv, size_t unused,
+                               const VMStateField *field, Error **errp)
 {
     USBRedirDevice *dev = priv;
     uint8_t *data;
@@ -2302,7 +2303,7 @@ static int usbredir_get_parser(QEMUFile *f, void *priv, 
size_t unused,
 
     len = qemu_get_be32(f);
     if (len == 0) {
-        return 0;
+        return true;
     }
 
     /*
@@ -2326,19 +2327,25 @@ static int usbredir_get_parser(QEMUFile *f, void *priv, 
size_t unused,
 
     g_free(data);
 
-    return ret;
+    if (ret) {
+        error_setg(errp, "usbredirparser_unserialize failed");
+        return false;
+    }
+
+    return true;
 }
 
 static const VMStateInfo usbredir_parser_vmstate_info = {
     .name = "usb-redir-parser",
-    .put  = usbredir_put_parser,
-    .get  = usbredir_get_parser,
+    .save = usbredir_save_parser,
+    .load = usbredir_load_parser,
 };
 
 
 /* For buffered packets (iso/irq) queue migration */
-static int usbredir_put_bufpq(QEMUFile *f, void *priv, size_t unused,
-                              const VMStateField *field, JSONWriter *vmdesc)
+static bool usbredir_save_bufpq(QEMUFile *f, void *priv, size_t unused,
+                                const VMStateField *field,
+                                JSONWriter *vmdesc, Error **errp)
 {
     struct endp_data *endp = priv;
     USBRedirDevice *dev = endp->dev;
@@ -2357,11 +2364,11 @@ static int usbredir_put_bufpq(QEMUFile *f, void *priv, 
size_t unused,
     }
     assert(i == endp->bufpq_size);
 
-    return 0;
+    return true;
 }
 
-static int usbredir_get_bufpq(QEMUFile *f, void *priv, size_t unused,
-                              const VMStateField *field)
+static bool usbredir_load_bufpq(QEMUFile *f, void *priv, size_t unused,
+                              const VMStateField *field, Error **errp)
 {
     struct endp_data *endp = priv;
     USBRedirDevice *dev = endp->dev;
@@ -2385,13 +2392,13 @@ static int usbredir_get_bufpq(QEMUFile *f, void *priv, 
size_t unused,
         DPRINTF("get_bufpq %d/%d len %d status %d\n", i + 1, endp->bufpq_size,
                 bufp->len, bufp->status);
     }
-    return 0;
+    return true;
 }
 
 static const VMStateInfo usbredir_ep_bufpq_vmstate_info = {
     .name = "usb-redir-bufpq",
-    .put  = usbredir_put_bufpq,
-    .get  = usbredir_get_bufpq,
+    .save = usbredir_save_bufpq,
+    .load = usbredir_load_bufpq,
 };
 
 
@@ -2468,9 +2475,9 @@ static const VMStateDescription usbredir_ep_vmstate = {
 
 
 /* For PacketIdQueue migration */
-static int usbredir_put_packet_id_q(QEMUFile *f, void *priv, size_t unused,
+static bool usbredir_save_packet_id_q(QEMUFile *f, void *priv, size_t unused,
                                     const VMStateField *field,
-                                    JSONWriter *vmdesc)
+                                    JSONWriter *vmdesc, Error **errp)
 {
     struct PacketIdQueue *q = priv;
     USBRedirDevice *dev = q->dev;
@@ -2485,11 +2492,11 @@ static int usbredir_put_packet_id_q(QEMUFile *f, void 
*priv, size_t unused,
     }
     assert(remain == 0);
 
-    return 0;
+    return true;
 }
 
-static int usbredir_get_packet_id_q(QEMUFile *f, void *priv, size_t unused,
-                                    const VMStateField *field)
+static bool usbredir_load_packet_id_q(QEMUFile *f, void *priv, size_t unused,
+                                    const VMStateField *field, Error **errp)
 {
     struct PacketIdQueue *q = priv;
     USBRedirDevice *dev = q->dev;
@@ -2503,13 +2510,13 @@ static int usbredir_get_packet_id_q(QEMUFile *f, void 
*priv, size_t unused,
         packet_id_queue_add(q, id);
     }
     assert(q->size == size);
-    return 0;
+    return true;
 }
 
 static const VMStateInfo usbredir_ep_packet_id_q_vmstate_info = {
     .name = "usb-redir-packet-id-q",
-    .put  = usbredir_put_packet_id_q,
-    .get  = usbredir_get_packet_id_q,
+    .save = usbredir_save_packet_id_q,
+    .load = usbredir_load_packet_id_q,
 };
 
 static const VMStateDescription usbredir_ep_packet_id_queue_vmstate = {
-- 
2.43.0


Reply via email to