summaryrefslogtreecommitdiffstats
path: root/hw/i386
diff options
context:
space:
mode:
authorBen Widawsky2020-10-26 20:39:23 +0100
committerMichael S. Tsirkin2020-10-30 09:29:13 +0100
commitacab9d8a9e31cc85ec95e5432500575680e7f07b (patch)
tree04e789531c8589f6c416d4a4fb046906c71085e3 /hw/i386
parentvhost-vsock: set vhostfd to non-blocking mode (diff)
downloadqemu-acab9d8a9e31cc85ec95e5432500575680e7f07b.tar.gz
qemu-acab9d8a9e31cc85ec95e5432500575680e7f07b.tar.xz
qemu-acab9d8a9e31cc85ec95e5432500575680e7f07b.zip
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>
Diffstat (limited to 'hw/i386')
-rw-r--r--hw/i386/acpi-build.c2
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,