diff options
| author | Jung-uk Kim <jkim@FreeBSD.org> | 2013-04-19 05:49:53 +0000 |
|---|---|---|
| committer | Jung-uk Kim <jkim@FreeBSD.org> | 2013-04-19 05:49:53 +0000 |
| commit | a95efc1a1522251892a7baebcb0569741ad7c6ca (patch) | |
| tree | 123ed5e9ad0bad1d892c0637e33953142b50843f /source/components/executer | |
| parent | 9b7735bafd2eb5079bc7f216ba350dbf8f268683 (diff) | |
Notes
Diffstat (limited to 'source/components/executer')
| -rw-r--r-- | source/components/executer/exconfig.c | 2 | ||||
| -rw-r--r-- | source/components/executer/exfldio.c | 13 |
2 files changed, 13 insertions, 2 deletions
diff --git a/source/components/executer/exconfig.c b/source/components/executer/exconfig.c index 4f1962b791d8..7d72a5f884aa 100644 --- a/source/components/executer/exconfig.c +++ b/source/components/executer/exconfig.c @@ -643,7 +643,7 @@ AcpiExUnloadTable ( (DdbHandle->Common.Type != ACPI_TYPE_LOCAL_REFERENCE) || (!(DdbHandle->Common.Flags & AOPOBJ_DATA_VALID))) { - return_ACPI_STATUS (AE_BAD_PARAMETER); + return_ACPI_STATUS (AE_AML_OPERAND_TYPE); } /* Get the table index from the DdbHandle */ diff --git a/source/components/executer/exfldio.c b/source/components/executer/exfldio.c index 24636ab3e0fc..85da123903da 100644 --- a/source/components/executer/exfldio.c +++ b/source/components/executer/exfldio.c @@ -766,7 +766,18 @@ AcpiExExtractFromField ( if ((ObjDesc->CommonField.StartFieldBitOffset == 0) && (ObjDesc->CommonField.BitLength == AccessBitWidth)) { - Status = AcpiExFieldDatumIo (ObjDesc, 0, Buffer, ACPI_READ); + if (BufferLength >= sizeof (UINT64)) + { + Status = AcpiExFieldDatumIo (ObjDesc, 0, Buffer, ACPI_READ); + } + else + { + /* Use RawDatum (UINT64) to handle buffers < 64 bits */ + + Status = AcpiExFieldDatumIo (ObjDesc, 0, &RawDatum, ACPI_READ); + ACPI_MEMCPY (Buffer, &RawDatum, BufferLength); + } + return_ACPI_STATUS (Status); } |
