Skip to content

Commit

Permalink
ACPICA: ACPI 5.1: Add support for runtime validation of _DSD package.
Browse files Browse the repository at this point in the history
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: Mika Westerberg <mika.westerberg@linux.intel.com>
Signed-off-by: Bob Moore <robert.moore@intel.com>
Signed-off-by: Lv Zheng <lv.zheng@intel.com>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
  • Loading branch information
Mika Westerberg authored and Rafael J. Wysocki committed Sep 1, 2014
1 parent 69e273c commit b1272e1
Showing 1 changed file with 39 additions and 0 deletions.
39 changes: 39 additions & 0 deletions drivers/acpi/acpica/nsprepkg.c
Original file line number Diff line number Diff line change
@@ -316,6 +316,45 @@ acpi_ns_check_package(struct acpi_evaluate_info *info,
acpi_ns_check_package_list(info, package, elements, count);
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:

/* Should not get here if predefined info table is correct */

0 comments on commit b1272e1

Please sign in to comment.