diff options
author | Ben Widawsky <ben.widawsky@intel.com> | 2020-10-26 12:39:23 -0700 |
---|---|---|
committer | Michael S. Tsirkin <mst@redhat.com> | 2020-10-30 04:29:13 -0400 |
commit | acab9d8a9e31cc85ec95e5432500575680e7f07b (patch) | |
tree | 04e789531c8589f6c416d4a4fb046906c71085e3 | |
parent | 384c2561bddfa00cd3eaf9edbc1af6c7c120511f (diff) |
acpi/crs: Prevent bad ranges for host bridges
Prevent _CRS resources being quietly chopped off and instead throw an
assertion. _CRS is used by host bridges to declare regions of io and/or
memory that they consume. On some (all?) platforms the host bridge
doesn't have PCI header space and so they need some way to convey the
information.
Signed-off-by: Ben Widawsky <ben.widawsky@intel.com>
Message-Id: <20201026193924.985014-1-ben.widawsky@intel.com>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Acked-by: Igor Mammedov <imammedo@redhat.com>
-rw-r--r-- | hw/i386/acpi-build.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/hw/i386/acpi-build.c b/hw/i386/acpi-build.c index e3a4bc206c..98ff9f5cef 100644 --- a/hw/i386/acpi-build.c +++ b/hw/i386/acpi-build.c @@ -866,6 +866,8 @@ static Aml *build_crs(PCIHostState *host, CrsRangeSet *range_set) crs_range_merge(temp_range_set.mem_ranges); for (i = 0; i < temp_range_set.mem_ranges->len; i++) { entry = g_ptr_array_index(temp_range_set.mem_ranges, i); + assert(entry->limit <= UINT32_MAX && + (entry->limit - entry->base + 1) <= UINT32_MAX); aml_append(crs, aml_dword_memory(AML_POS_DECODE, AML_MIN_FIXED, AML_MAX_FIXED, AML_NON_CACHEABLE, |