13
13
#include "hw/vfio/vfio-common.h"
14
14
#include "migration/misc.h"
15
15
#include "qapi/error.h"
16
+ #include "qemu/bswap.h"
16
17
#include "qemu/error-report.h"
17
18
#include "qemu/lockable.h"
18
19
#include "qemu/main-loop.h"
@@ -155,12 +156,16 @@ bool vfio_multifd_load_state_buffer(void *opaque, char *data, size_t data_size,
155
156
return false;
156
157
}
157
158
159
+ packet -> version = be32_to_cpu (packet -> version );
158
160
if (packet -> version != VFIO_DEVICE_STATE_PACKET_VER_CURRENT ) {
159
161
error_setg (errp , "%s: packet has unknown version %" PRIu32 ,
160
162
vbasedev -> name , packet -> version );
161
163
return false;
162
164
}
163
165
166
+ packet -> idx = be32_to_cpu (packet -> idx );
167
+ packet -> flags = be32_to_cpu (packet -> flags );
168
+
164
169
if (packet -> idx == UINT32_MAX ) {
165
170
error_setg (errp , "%s: packet index is invalid" , vbasedev -> name );
166
171
return false;
@@ -558,9 +563,9 @@ vfio_save_complete_precopy_thread_config_state(VFIODevice *vbasedev,
558
563
559
564
packet_len = sizeof (* packet ) + bioc -> usage ;
560
565
packet = g_malloc0 (packet_len );
561
- packet -> version = VFIO_DEVICE_STATE_PACKET_VER_CURRENT ;
562
- packet -> idx = idx ;
563
- packet -> flags = VFIO_DEVICE_STATE_CONFIG_STATE ;
566
+ packet -> version = cpu_to_be32 ( VFIO_DEVICE_STATE_PACKET_VER_CURRENT ) ;
567
+ packet -> idx = cpu_to_be32 ( idx ) ;
568
+ packet -> flags = cpu_to_be32 ( VFIO_DEVICE_STATE_CONFIG_STATE ) ;
564
569
memcpy (& packet -> data , bioc -> data , bioc -> usage );
565
570
566
571
if (!multifd_queue_device_state (idstr , instance_id ,
@@ -610,7 +615,7 @@ vfio_multifd_save_complete_precopy_thread(SaveLiveCompletePrecopyThreadData *d,
610
615
}
611
616
612
617
packet = g_malloc0 (sizeof (* packet ) + migration -> data_buffer_size );
613
- packet -> version = VFIO_DEVICE_STATE_PACKET_VER_CURRENT ;
618
+ packet -> version = cpu_to_be32 ( VFIO_DEVICE_STATE_PACKET_VER_CURRENT ) ;
614
619
615
620
for (idx = 0 ; ; idx ++ ) {
616
621
ssize_t data_size ;
@@ -631,7 +636,7 @@ vfio_multifd_save_complete_precopy_thread(SaveLiveCompletePrecopyThreadData *d,
631
636
break ;
632
637
}
633
638
634
- packet -> idx = idx ;
639
+ packet -> idx = cpu_to_be32 ( idx ) ;
635
640
packet_size = sizeof (* packet ) + data_size ;
636
641
637
642
if (!multifd_queue_device_state (d -> idstr , d -> instance_id ,
0 commit comments