mirror of
https://github.com/qemu/qemu.git
synced 2024-11-23 19:03:38 +08:00
uuid: Make qemu_uuid_bswap() take and return a QemuUUID
Currently qemu_uuid_bswap() takes a pointer to the QemuUUID to be byte-swapped. This means it can't be used when the UUID to be swapped is in a packed member of a struct. It's also out of line with the general bswap*() functions we provide in bswap.h, which take the value to be swapped and return it. Make qemu_uuid_bswap() take a QemuUUID and return the swapped version. This fixes some clang warnings about taking the address of a packed struct member in block/vdi.c. Signed-off-by: Peter Maydell <peter.maydell@linaro.org> Reviewed-by: Michael S. Tsirkin <mst@redhat.com> Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
This commit is contained in:
parent
ac928b8ee8
commit
1324f06384
16
block/vdi.c
16
block/vdi.c
@ -203,10 +203,10 @@ static void vdi_header_to_cpu(VdiHeader *header)
|
||||
header->block_extra = le32_to_cpu(header->block_extra);
|
||||
header->blocks_in_image = le32_to_cpu(header->blocks_in_image);
|
||||
header->blocks_allocated = le32_to_cpu(header->blocks_allocated);
|
||||
qemu_uuid_bswap(&header->uuid_image);
|
||||
qemu_uuid_bswap(&header->uuid_last_snap);
|
||||
qemu_uuid_bswap(&header->uuid_link);
|
||||
qemu_uuid_bswap(&header->uuid_parent);
|
||||
header->uuid_image = qemu_uuid_bswap(header->uuid_image);
|
||||
header->uuid_last_snap = qemu_uuid_bswap(header->uuid_last_snap);
|
||||
header->uuid_link = qemu_uuid_bswap(header->uuid_link);
|
||||
header->uuid_parent = qemu_uuid_bswap(header->uuid_parent);
|
||||
}
|
||||
|
||||
static void vdi_header_to_le(VdiHeader *header)
|
||||
@ -227,10 +227,10 @@ static void vdi_header_to_le(VdiHeader *header)
|
||||
header->block_extra = cpu_to_le32(header->block_extra);
|
||||
header->blocks_in_image = cpu_to_le32(header->blocks_in_image);
|
||||
header->blocks_allocated = cpu_to_le32(header->blocks_allocated);
|
||||
qemu_uuid_bswap(&header->uuid_image);
|
||||
qemu_uuid_bswap(&header->uuid_last_snap);
|
||||
qemu_uuid_bswap(&header->uuid_link);
|
||||
qemu_uuid_bswap(&header->uuid_parent);
|
||||
header->uuid_image = qemu_uuid_bswap(header->uuid_image);
|
||||
header->uuid_last_snap = qemu_uuid_bswap(header->uuid_last_snap);
|
||||
header->uuid_link = qemu_uuid_bswap(header->uuid_link);
|
||||
header->uuid_parent = qemu_uuid_bswap(header->uuid_parent);
|
||||
}
|
||||
|
||||
static void vdi_header_print(VdiHeader *header)
|
||||
|
@ -30,8 +30,7 @@ void vmgenid_build_acpi(VmGenIdState *vms, GArray *table_data, GArray *guid,
|
||||
* first, since that's what the guest expects
|
||||
*/
|
||||
g_array_set_size(guid, VMGENID_FW_CFG_SIZE - ARRAY_SIZE(guid_le.data));
|
||||
guid_le = vms->guid;
|
||||
qemu_uuid_bswap(&guid_le);
|
||||
guid_le = qemu_uuid_bswap(vms->guid);
|
||||
/* The GUID is written at a fixed offset into the fw_cfg file
|
||||
* in order to implement the "OVMF SDT Header probe suppressor"
|
||||
* see docs/specs/vmgenid.txt for more details
|
||||
@ -149,8 +148,7 @@ static void vmgenid_update_guest(VmGenIdState *vms)
|
||||
* however, will expect the fields to be little-endian.
|
||||
* Perform a byte swap immediately before writing.
|
||||
*/
|
||||
guid_le = vms->guid;
|
||||
qemu_uuid_bswap(&guid_le);
|
||||
guid_le = qemu_uuid_bswap(vms->guid);
|
||||
/* The GUID is written at a fixed offset into the fw_cfg file
|
||||
* in order to implement the "OVMF SDT Header probe suppressor"
|
||||
* see docs/specs/vmgenid.txt for more details.
|
||||
|
@ -56,6 +56,6 @@ char *qemu_uuid_unparse_strdup(const QemuUUID *uuid);
|
||||
|
||||
int qemu_uuid_parse(const char *str, QemuUUID *uuid);
|
||||
|
||||
void qemu_uuid_bswap(QemuUUID *uuid);
|
||||
QemuUUID qemu_uuid_bswap(QemuUUID uuid);
|
||||
|
||||
#endif
|
||||
|
@ -88,7 +88,7 @@ static void read_guid_from_memory(QTestState *qts, QemuUUID *guid)
|
||||
/* The GUID is in little-endian format in the guest, while QEMU
|
||||
* uses big-endian. Swap after reading.
|
||||
*/
|
||||
qemu_uuid_bswap(guid);
|
||||
*guid = qemu_uuid_bswap(*guid);
|
||||
}
|
||||
|
||||
static void read_guid_from_monitor(QTestState *qts, QemuUUID *guid)
|
||||
|
10
util/uuid.c
10
util/uuid.c
@ -110,10 +110,10 @@ int qemu_uuid_parse(const char *str, QemuUUID *uuid)
|
||||
|
||||
/* Swap from UUID format endian (BE) to the opposite or vice versa.
|
||||
*/
|
||||
void qemu_uuid_bswap(QemuUUID *uuid)
|
||||
QemuUUID qemu_uuid_bswap(QemuUUID uuid)
|
||||
{
|
||||
assert(QEMU_PTR_IS_ALIGNED(uuid, sizeof(uint32_t)));
|
||||
bswap32s(&uuid->fields.time_low);
|
||||
bswap16s(&uuid->fields.time_mid);
|
||||
bswap16s(&uuid->fields.time_high_and_version);
|
||||
bswap32s(&uuid.fields.time_low);
|
||||
bswap16s(&uuid.fields.time_mid);
|
||||
bswap16s(&uuid.fields.time_high_and_version);
|
||||
return uuid;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user