aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/platform/x86/acer-wmi.c46
1 files changed, 25 insertions, 21 deletions
diff --git a/drivers/platform/x86/acer-wmi.c b/drivers/platform/x86/acer-wmi.c
index 06f4eb7ab87e..ff0a866791ca 100644
--- a/drivers/platform/x86/acer-wmi.c
+++ b/drivers/platform/x86/acer-wmi.c
@@ -875,7 +875,7 @@ WMI_execute_u32(u32 method_id, u32 in, u32 *out)
875 struct acpi_buffer input = { (acpi_size) sizeof(u32), (void *)(&in) }; 875 struct acpi_buffer input = { (acpi_size) sizeof(u32), (void *)(&in) };
876 struct acpi_buffer result = { ACPI_ALLOCATE_BUFFER, NULL }; 876 struct acpi_buffer result = { ACPI_ALLOCATE_BUFFER, NULL };
877 union acpi_object *obj; 877 union acpi_object *obj;
878 u32 tmp; 878 u32 tmp = 0;
879 acpi_status status; 879 acpi_status status;
880 880
881 status = wmi_evaluate_method(WMID_GUID1, 1, method_id, &input, &result); 881 status = wmi_evaluate_method(WMID_GUID1, 1, method_id, &input, &result);
@@ -884,14 +884,14 @@ WMI_execute_u32(u32 method_id, u32 in, u32 *out)
884 return status; 884 return status;
885 885
886 obj = (union acpi_object *) result.pointer; 886 obj = (union acpi_object *) result.pointer;
887 if (obj && obj->type == ACPI_TYPE_BUFFER && 887 if (obj) {
888 (obj->buffer.length == sizeof(u32) || 888 if (obj->type == ACPI_TYPE_BUFFER &&
889 obj->buffer.length == sizeof(u64))) { 889 (obj->buffer.length == sizeof(u32) ||
890 tmp = *((u32 *) obj->buffer.pointer); 890 obj->buffer.length == sizeof(u64))) {
891 } else if (obj->type == ACPI_TYPE_INTEGER) { 891 tmp = *((u32 *) obj->buffer.pointer);
892 tmp = (u32) obj->integer.value; 892 } else if (obj->type == ACPI_TYPE_INTEGER) {
893 } else { 893 tmp = (u32) obj->integer.value;
894 tmp = 0; 894 }
895 } 895 }
896 896
897 if (out) 897 if (out)
@@ -1193,12 +1193,14 @@ static acpi_status WMID_set_capabilities(void)
1193 return status; 1193 return status;
1194 1194
1195 obj = (union acpi_object *) out.pointer; 1195 obj = (union acpi_object *) out.pointer;
1196 if (obj && obj->type == ACPI_TYPE_BUFFER && 1196 if (obj) {
1197 (obj->buffer.length == sizeof(u32) || 1197 if (obj->type == ACPI_TYPE_BUFFER &&
1198 obj->buffer.length == sizeof(u64))) { 1198 (obj->buffer.length == sizeof(u32) ||
1199 devices = *((u32 *) obj->buffer.pointer); 1199 obj->buffer.length == sizeof(u64))) {
1200 } else if (obj->type == ACPI_TYPE_INTEGER) { 1200 devices = *((u32 *) obj->buffer.pointer);
1201 devices = (u32) obj->integer.value; 1201 } else if (obj->type == ACPI_TYPE_INTEGER) {
1202 devices = (u32) obj->integer.value;
1203 }
1202 } else { 1204 } else {
1203 kfree(out.pointer); 1205 kfree(out.pointer);
1204 return AE_ERROR; 1206 return AE_ERROR;
@@ -1946,12 +1948,14 @@ static u32 get_wmid_devices(void)
1946 return 0; 1948 return 0;
1947 1949
1948 obj = (union acpi_object *) out.pointer; 1950 obj = (union acpi_object *) out.pointer;
1949 if (obj && obj->type == ACPI_TYPE_BUFFER && 1951 if (obj) {
1950 (obj->buffer.length == sizeof(u32) || 1952 if (obj->type == ACPI_TYPE_BUFFER &&
1951 obj->buffer.length == sizeof(u64))) { 1953 (obj->buffer.length == sizeof(u32) ||
1952 devices = *((u32 *) obj->buffer.pointer); 1954 obj->buffer.length == sizeof(u64))) {
1953 } else if (obj->type == ACPI_TYPE_INTEGER) { 1955 devices = *((u32 *) obj->buffer.pointer);
1954 devices = (u32) obj->integer.value; 1956 } else if (obj->type == ACPI_TYPE_INTEGER) {
1957 devices = (u32) obj->integer.value;
1958 }
1955 } 1959 }
1956 1960
1957 kfree(out.pointer); 1961 kfree(out.pointer);