Re: [PATCH RFC 5/7] Revert "x86: use typedef for SetupData struct"

From: Michael S. Tsirkin
Date: Thu Feb 09 2023 - 02:43:04 EST


On Wed, Feb 08, 2023 at 04:12:51PM -0500, Michael S. Tsirkin wrote:
> This reverts commit eebb38a5633a77f5fa79d6486d5b2fcf8fbe3c07.
>
> Fixes: eebb38a563 ("x86: use typedef for SetupData struct")
> Signed-off-by: Michael S. Tsirkin <mst@xxxxxxxxxx>


This one was actually good, I reverted so other reverts are clean.
Jason I would appreciate it if you can rebase this on top
of the revert.


> ---
> hw/i386/x86.c | 14 +++++++-------
> 1 file changed, 7 insertions(+), 7 deletions(-)
>
> diff --git a/hw/i386/x86.c b/hw/i386/x86.c
> index 32f37ab7c2..76b12108b4 100644
> --- a/hw/i386/x86.c
> +++ b/hw/i386/x86.c
> @@ -657,12 +657,12 @@ DeviceState *ioapic_init_secondary(GSIState *gsi_state)
> return dev;
> }
>
> -typedef struct SetupData {
> +struct setup_data {
> uint64_t next;
> uint32_t type;
> uint32_t len;
> uint8_t data[];
> -} __attribute__((packed)) SetupData;
> +} __attribute__((packed));
>
>
> /*
> @@ -803,7 +803,7 @@ void x86_load_linux(X86MachineState *x86ms,
> FILE *f;
> char *vmode;
> MachineState *machine = MACHINE(x86ms);
> - SetupData *setup_data;
> + struct setup_data *setup_data;
> const char *kernel_filename = machine->kernel_filename;
> const char *initrd_filename = machine->initrd_filename;
> const char *dtb_filename = machine->dtb;
> @@ -1086,11 +1086,11 @@ void x86_load_linux(X86MachineState *x86ms,
> }
>
> setup_data_offset = QEMU_ALIGN_UP(kernel_size, 16);
> - kernel_size = setup_data_offset + sizeof(SetupData) + dtb_size;
> + kernel_size = setup_data_offset + sizeof(struct setup_data) + dtb_size;
> kernel = g_realloc(kernel, kernel_size);
>
>
> - setup_data = (SetupData *)(kernel + setup_data_offset);
> + setup_data = (struct setup_data *)(kernel + setup_data_offset);
> setup_data->next = cpu_to_le64(first_setup_data);
> first_setup_data = prot_addr + setup_data_offset;
> setup_data->type = cpu_to_le32(SETUP_DTB);
> @@ -1101,9 +1101,9 @@ void x86_load_linux(X86MachineState *x86ms,
>
> if (!legacy_no_rng_seed) {
> setup_data_offset = QEMU_ALIGN_UP(kernel_size, 16);
> - kernel_size = setup_data_offset + sizeof(SetupData) + RNG_SEED_LENGTH;
> + kernel_size = setup_data_offset + sizeof(struct setup_data) + RNG_SEED_LENGTH;
> kernel = g_realloc(kernel, kernel_size);
> - setup_data = (SetupData *)(kernel + setup_data_offset);
> + setup_data = (struct setup_data *)(kernel + setup_data_offset);
> setup_data->next = cpu_to_le64(first_setup_data);
> first_setup_data = prot_addr + setup_data_offset;
> setup_data->type = cpu_to_le32(SETUP_RNG_SEED);
> --
> MST
>