On Thu, 4 Mar 2021 11:55:54 +0100 David Hildenbrand <[email protected]> wrote:
> Let's also set a maximum size for "etc/acpi/rsdp", so the maximum > size doesn't get implicitly set based on the initial table size. In my > experiments, the table size was in the range of 22 bytes, so a single > page (== what we used until now) seems to be good enough. > > Now that we have defined maximum sizes for all currently used table types, > let's assert that we catch usage with new tables that need a proper maximum > size definition. > > Also assert that our initial size does not exceed the maximum size; while > qemu_ram_alloc_internal() properly asserts that the initial RAMBlock size > is <= its maximum size, the result might differ when the host page size > is bigger than 4k. > > Suggested-by: Laszlo Ersek <[email protected]> > Cc: Alistair Francis <[email protected]> > Cc: Paolo Bonzini <[email protected]> > Cc: "Michael S. Tsirkin" <[email protected]> > Cc: Igor Mammedov <[email protected]> > Cc: Peter Maydell <[email protected]> > Cc: Shannon Zhao <[email protected]> > Cc: Marcel Apfelbaum <[email protected]> > Cc: Paolo Bonzini <[email protected]> > Cc: Richard Henderson <[email protected]> > Cc: Laszlo Ersek <[email protected]> > Signed-off-by: David Hildenbrand <[email protected]> > --- > hw/acpi/utils.c | 7 ++++++- > 1 file changed, 6 insertions(+), 1 deletion(-) > > diff --git a/hw/acpi/utils.c b/hw/acpi/utils.c > index f2d69a6d92..0c486ea29f 100644 > --- a/hw/acpi/utils.c > +++ b/hw/acpi/utils.c > @@ -29,14 +29,19 @@ > MemoryRegion *acpi_add_rom_blob(FWCfgCallback update, void *opaque, > GArray *blob, const char *name) > { > - uint64_t max_size = 0; > + uint64_t max_size; [...] > + } else { > + g_assert_not_reached(); > } > + g_assert(acpi_data_len(blob) <= max_size); though it's correct, but theoretically compiler might get unhappy about uninitialized max_size here though if it compiles fine with our current CI it should be good enough > > return rom_add_blob(name, blob->data, acpi_data_len(blob), max_size, -1, > name, update, opaque, NULL, true);
