mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-07-27 20:33:54 -06:00
hw/pci-bridge/cxl_upstream: Fix problem with g_steal_pointer()
When setting GLIB_VERSION_MAX_ALLOWED to GLIB_VERSION_2_58 or higher, glib adds type safety checks to the g_steal_pointer() macro. This triggers errors in the build_cdat_table() function which uses the g_steal_pointer() for type-casting from one pointer type to the other (which also looks quite weird since the local pointers have all been declared with g_autofree though they are never freed here). Let's fix it by using a proper typecast instead. For making this possible, we have to remove the QEMU_PACKED attribute from some structs since GCC otherwise complains that the source and destination pointer might have different alignment restrictions. Removing the QEMU_PACKED should be fine here since the structs are already naturally aligned. Anyway, add some QEMU_BUILD_BUG_ON() statements to make sure that we've got the right sizes (without padding in the structs). Signed-off-by: Thomas Huth <thuth@redhat.com> Reviewed-by: Jonathan Cameron <Jonathan.Cameron@huawei.com> Reviewed-by: Michael Tokarev <mjt@tls.msk.ru> Signed-off-by: Michael Tokarev <mjt@tls.msk.ru>
This commit is contained in:
parent
c4e898d502
commit
c68f81fec8
2 changed files with 9 additions and 7 deletions
|
@ -130,7 +130,8 @@ typedef struct CDATSslbisHeader {
|
|||
uint8_t data_type;
|
||||
uint8_t reserved[3];
|
||||
uint64_t entry_base_unit;
|
||||
} QEMU_PACKED CDATSslbisHeader;
|
||||
} CDATSslbisHeader;
|
||||
QEMU_BUILD_BUG_ON(sizeof(CDATSslbisHeader) != 16);
|
||||
|
||||
#define CDAT_PORT_ID_USP 0x100
|
||||
/* Switch Scoped Latency and Bandwidth Entry - CDAT Table 10 */
|
||||
|
@ -139,12 +140,13 @@ typedef struct CDATSslbe {
|
|||
uint16_t port_y_id;
|
||||
uint16_t latency_bandwidth;
|
||||
uint16_t reserved;
|
||||
} QEMU_PACKED CDATSslbe;
|
||||
} CDATSslbe;
|
||||
QEMU_BUILD_BUG_ON(sizeof(CDATSslbe) != 8);
|
||||
|
||||
typedef struct CDATSslbis {
|
||||
CDATSslbisHeader sslbis_header;
|
||||
CDATSslbe sslbe[];
|
||||
} QEMU_PACKED CDATSslbis;
|
||||
} CDATSslbis;
|
||||
|
||||
typedef struct CDATEntry {
|
||||
void *base;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue