Commit b1272e1f authored by Mika Westerberg's avatar Mika Westerberg Committed by Rafael J. Wysocki

ACPICA: ACPI 5.1: Add support for runtime validation of _DSD package.

Adds ACPICA kernel runtime support to validate contents/format
of the _DSD package, similar to the iASL support. Ported by
Mika Westerberg.
Signed-off-by: default avatarMika Westerberg <mika.westerberg@linux.intel.com>
Signed-off-by: default avatarBob Moore <robert.moore@intel.com>
Signed-off-by: default avatarLv Zheng <lv.zheng@intel.com>
Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
parent 69e273c0
...@@ -316,6 +316,45 @@ acpi_ns_check_package(struct acpi_evaluate_info *info, ...@@ -316,6 +316,45 @@ acpi_ns_check_package(struct acpi_evaluate_info *info,
acpi_ns_check_package_list(info, package, elements, count); acpi_ns_check_package_list(info, package, elements, count);
break; break;
case ACPI_PTYPE2_UUID_PAIR:
/* The package must contain pairs of (UUID + type) */
if (count & 1) {
expected_count = count + 1;
goto package_too_small;
}
while (count > 0) {
status = acpi_ns_check_object_type(info, elements,
package->ret_info.
object_type1, 0);
if (ACPI_FAILURE(status)) {
return (status);
}
/* Validate length of the UUID buffer */
if ((*elements)->buffer.length != 16) {
ACPI_WARN_PREDEFINED((AE_INFO,
info->full_pathname,
info->node_flags,
"Invalid length for UUID Buffer"));
return (AE_AML_OPERAND_VALUE);
}
status = acpi_ns_check_object_type(info, elements + 1,
package->ret_info.
object_type2, 0);
if (ACPI_FAILURE(status)) {
return (status);
}
elements += 2;
count -= 2;
}
break;
default: default:
/* Should not get here if predefined info table is correct */ /* Should not get here if predefined info table is correct */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment