ACPI: Enforce stricter checks for address space descriptors
authorJiang Liu <jiang.liu@linux.intel.com>
Mon, 2 Feb 2015 02:42:57 +0000 (10:42 +0800)
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>
Tue, 3 Feb 2015 21:27:21 +0000 (22:27 +0100)
Enforce stricter checks for address space descriptors according to
ACPI spec.

Signed-off-by: Jiang Liu <jiang.liu@linux.intel.com>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
drivers/acpi/resource.c

index 5bf73a9f26d9fb92b4b3229cd2c932e86cbd5f87..57891a621b96d6c4d382a83236267bdcf819672f 100644 (file)
@@ -192,6 +192,15 @@ static bool acpi_decode_space(struct resource *res,
        bool wp = addr->info.mem.write_protect;
        u64 len = attr->address_length;
 
+       /*
+        * Filter out invalid descriptor according to ACPI Spec 5.0, section
+        * 6.4.3.5 Address Space Resource Descriptors.
+        */
+       if ((addr->min_address_fixed != addr->max_address_fixed && len) ||
+           (addr->min_address_fixed && addr->max_address_fixed && !len))
+               pr_debug("ACPI: Invalid address space min_addr_fix %d, max_addr_fix %d, len %llx\n",
+                        addr->min_address_fixed, addr->max_address_fixed, len);
+
        res->start = attr->minimum;
        res->end = attr->maximum;