diff options
Diffstat (limited to 'namespace/nspredef.c')
-rw-r--r-- | namespace/nspredef.c | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/namespace/nspredef.c b/namespace/nspredef.c index 358c63a85dc61..64ad91c900f4a 100644 --- a/namespace/nspredef.c +++ b/namespace/nspredef.c @@ -665,6 +665,7 @@ AcpiNsCheckPackage ( case ACPI_PTYPE2_FIXED: case ACPI_PTYPE2_MIN: case ACPI_PTYPE2_COUNT: + case ACPI_PTYPE2_FIX_VAR: /* * These types all return a single Package that consists of a @@ -807,6 +808,29 @@ AcpiNsCheckPackageList ( break; + case ACPI_PTYPE2_FIX_VAR: + /* + * Each subpackage has a fixed number of elements and an + * optional element + */ + ExpectedCount = Package->RetInfo.Count1 + Package->RetInfo.Count2; + if (SubPackage->Package.Count < ExpectedCount) + { + goto PackageTooSmall; + } + + Status = AcpiNsCheckPackageElements (Data, SubElements, + Package->RetInfo.ObjectType1, + Package->RetInfo.Count1, + Package->RetInfo.ObjectType2, + SubPackage->Package.Count - Package->RetInfo.Count1, 0); + if (ACPI_FAILURE (Status)) + { + return (Status); + } + break; + + case ACPI_PTYPE2_FIXED: /* Each sub-package has a fixed length */ |