diff options
author | Bob Moore <robert.moore@intel.com> | 2011-11-29 20:35:05 -0500 |
---|---|---|
committer | Len Brown <len.brown@intel.com> | 2012-01-17 03:36:27 -0500 |
commit | ec4636669bf9c6ff157121ab42709650a9e0cc2a (patch) | |
tree | 41b10cf575dde3d9e83beae5b0511ac8d7531f31 /drivers/acpi/acpica/exutils.c | |
parent | 46dfb09c024a1a92ead63b40f6993dcb5eb7d153 (diff) |
ACPICA: Do not abort table load on invalid space ID
Ignore an invalid space ID during a table load. Instead, detect it
if a control method attempts access - then abort the method.
http://www.acpica.org/bugzilla/show_bug.cgi?id=925
Signed-off-by: Bob Moore <robert.moore@intel.com>
Signed-off-by: Lin Ming <ming.m.lin@intel.com>
Signed-off-by: Len Brown <len.brown@intel.com>
Diffstat (limited to 'drivers/acpi/acpica/exutils.c')
-rw-r--r-- | drivers/acpi/acpica/exutils.c | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/drivers/acpi/acpica/exutils.c b/drivers/acpi/acpica/exutils.c index 8ad93146dd32..3993aa5084b6 100644 --- a/drivers/acpi/acpica/exutils.c +++ b/drivers/acpi/acpica/exutils.c | |||
@@ -435,4 +435,29 @@ void acpi_ex_integer_to_string(char *out_string, u64 value) | |||
435 | } | 435 | } |
436 | } | 436 | } |
437 | 437 | ||
438 | /******************************************************************************* | ||
439 | * | ||
440 | * FUNCTION: acpi_is_valid_space_id | ||
441 | * | ||
442 | * PARAMETERS: space_id - ID to be validated | ||
443 | * | ||
444 | * RETURN: TRUE if valid/supported ID. | ||
445 | * | ||
446 | * DESCRIPTION: Validate an operation region space_iD. | ||
447 | * | ||
448 | ******************************************************************************/ | ||
449 | |||
450 | u8 acpi_is_valid_space_id(u8 space_id) | ||
451 | { | ||
452 | |||
453 | if ((space_id >= ACPI_NUM_PREDEFINED_REGIONS) && | ||
454 | (space_id < ACPI_USER_REGION_BEGIN) && | ||
455 | (space_id != ACPI_ADR_SPACE_DATA_TABLE) && | ||
456 | (space_id != ACPI_ADR_SPACE_FIXED_HARDWARE)) { | ||
457 | return (FALSE); | ||
458 | } | ||
459 | |||
460 | return (TRUE); | ||
461 | } | ||
462 | |||
438 | #endif | 463 | #endif |