On Fri, Sep 06, 2013 at 10:59:30AM -0600, al.stone@linaro.org wrote:
From: Al Stone ahs3@redhat.com
The current version requires one to know the size of the package a priori; this is almost impossible if the package is composed of strings of variable length. This change allows the utility to allocate a buffer of the proper size if asked.
Signed-off-by: Al Stone al.stone@linaro.org
drivers/acpi/utils.c | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-)
diff --git a/drivers/acpi/utils.c b/drivers/acpi/utils.c index 74437130..bcb78f1 100644 --- a/drivers/acpi/utils.c +++ b/drivers/acpi/utils.c @@ -169,11 +169,20 @@ acpi_extract_package(union acpi_object *package, /* * Validate output buffer. */
- if (buffer->length < size_required) {
- if (buffer->length == ACPI_ALLOCATE_BUFFER) {
buffer->pointer = ACPI_ALLOCATE(size_required);
This worries me as its an API change, who is responsible for freeing this memory?
if (!buffer->pointer)
buffer->length = size_required;return AE_NO_MEMORY;
return AE_BUFFER_OVERFLOW;
- } else if (buffer->length != size_required || !buffer->pointer) {
return AE_BAD_PARAMETER;
memset(buffer->pointer, 0, size_required);
- } else {
if (buffer->length < size_required) {
buffer->length = size_required;
return AE_BUFFER_OVERFLOW;
} else if (buffer->length != size_required ||
!buffer->pointer) {
return AE_BAD_PARAMETER;
}}
head = buffer->pointer; -- 1.8.3.1
Linaro-acpi mailing list Linaro-acpi@lists.linaro.org http://lists.linaro.org/mailman/listinfo/linaro-acpi