Some BIOSes report incorrect length for ACPI address space descriptors,
so relax the checks to avoid regressions. This issue has appeared several
times as:
dd83138e06eb ("PNPACPI: truncate _CRS windows with _LEN > _MAX - _MIN + 1")
4ce24ced950a ("x86/PCI: truncate _CRS windows with _LEN > _MAX - _MIN + 1")
f1bd00a03954 ("PNPACPI: compute Address Space length rather than using _LEN")
3b27b78a00fe ("x86/PCI: compute Address Space length rather than using _LEN")
Please refer to https://bugzilla.kernel.org/show_bug.cgi?id=94221
for more details and example malformed ACPI resource descriptors.
Link: https://bugzilla.kernel.org/show_bug.cgi?id=94221
Fixes: e9b3f0bfc29d (x86/PCI/ACPI: Use common ACPI resource interfaces ...)
Signed-off-by: Jiang Liu <jiang.liu@linux.intel.com>
Tested-by: Dave Airlie <airlied@redhat.com>
Tested-by: Prakash Punnoor <prakash@punnoor.de>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
* CHECKME: len might be required to check versus a minimum
* length as well. 1 for io is fine, but for memory it does
* not make any sense at all.
+ * Note: some BIOSes report incorrect length for ACPI address space
+ * descriptor, so remove check of 'reslen == len' to avoid regression.
*/
- if (len && reslen && reslen == len && start <= end)
+ if (len && reslen && start <= end)
return true;
pr_debug("ACPI: invalid or unassigned resource %s [%016llx - %016llx] length [%016llx]\n",