aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/acpi/acpica
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/acpi/acpica')
-rw-r--r--drivers/acpi/acpica/exconfig.c13
-rw-r--r--drivers/acpi/acpica/hwgpe.c6
-rw-r--r--drivers/acpi/acpica/nspredef.c24
-rw-r--r--drivers/acpi/acpica/nsrepair2.c24
-rw-r--r--drivers/acpi/acpica/utmutex.c16
5 files changed, 30 insertions, 53 deletions
diff --git a/drivers/acpi/acpica/exconfig.c b/drivers/acpi/acpica/exconfig.c
index 46adfa541cbc..2ea8daccba1c 100644
--- a/drivers/acpi/acpica/exconfig.c
+++ b/drivers/acpi/acpica/exconfig.c
@@ -490,7 +490,11 @@ acpi_ex_load_op(union acpi_operand_object *obj_desc,
490 490
491 status = acpi_tb_add_table(&table_desc, &table_index); 491 status = acpi_tb_add_table(&table_desc, &table_index);
492 if (ACPI_FAILURE(status)) { 492 if (ACPI_FAILURE(status)) {
493 goto cleanup; 493
494 /* Delete allocated table buffer */
495
496 acpi_tb_delete_table(&table_desc);
497 return_ACPI_STATUS(status);
494 } 498 }
495 499
496 /* 500 /*
@@ -533,13 +537,6 @@ acpi_ex_load_op(union acpi_operand_object *obj_desc,
533 acpi_gbl_table_handler_context); 537 acpi_gbl_table_handler_context);
534 } 538 }
535 539
536 cleanup:
537 if (ACPI_FAILURE(status)) {
538
539 /* Delete allocated table buffer */
540
541 acpi_tb_delete_table(&table_desc);
542 }
543 return_ACPI_STATUS(status); 540 return_ACPI_STATUS(status);
544} 541}
545 542
diff --git a/drivers/acpi/acpica/hwgpe.c b/drivers/acpi/acpica/hwgpe.c
index c28c41b3180b..55c4507957bb 100644
--- a/drivers/acpi/acpica/hwgpe.c
+++ b/drivers/acpi/acpica/hwgpe.c
@@ -224,7 +224,7 @@ acpi_hw_get_gpe_status(struct acpi_gpe_event_info * gpe_event_info,
224 224
225 status = acpi_hw_read(&in_byte, &gpe_register_info->status_address); 225 status = acpi_hw_read(&in_byte, &gpe_register_info->status_address);
226 if (ACPI_FAILURE(status)) { 226 if (ACPI_FAILURE(status)) {
227 goto unlock_and_exit; 227 return (status);
228 } 228 }
229 229
230 if (register_bit & in_byte) { 230 if (register_bit & in_byte) {
@@ -234,9 +234,7 @@ acpi_hw_get_gpe_status(struct acpi_gpe_event_info * gpe_event_info,
234 /* Set return value */ 234 /* Set return value */
235 235
236 (*event_status) = local_event_status; 236 (*event_status) = local_event_status;
237 237 return (AE_OK);
238 unlock_and_exit:
239 return (status);
240} 238}
241 239
242/****************************************************************************** 240/******************************************************************************
diff --git a/drivers/acpi/acpica/nspredef.c b/drivers/acpi/acpica/nspredef.c
index d34fa59548f7..309586f5809c 100644
--- a/drivers/acpi/acpica/nspredef.c
+++ b/drivers/acpi/acpica/nspredef.c
@@ -1000,27 +1000,25 @@ acpi_ns_check_object_type(struct acpi_predefined_data *data,
1000 1000
1001 /* Is the object one of the expected types? */ 1001 /* Is the object one of the expected types? */
1002 1002
1003 if (!(return_btype & expected_btypes)) { 1003 if (return_btype & expected_btypes) {
1004 1004
1005 /* Type mismatch -- attempt repair of the returned object */ 1005 /* For reference objects, check that the reference type is correct */
1006 1006
1007 status = acpi_ns_repair_object(data, expected_btypes, 1007 if (return_object->common.type == ACPI_TYPE_LOCAL_REFERENCE) {
1008 package_index, 1008 status = acpi_ns_check_reference(data, return_object);
1009 return_object_ptr);
1010 if (ACPI_SUCCESS(status)) {
1011 return (AE_OK); /* Repair was successful */
1012 } 1009 }
1013 goto type_error_exit; 1010
1011 return (status);
1014 } 1012 }
1015 1013
1016 /* For reference objects, check that the reference type is correct */ 1014 /* Type mismatch -- attempt repair of the returned object */
1017 1015
1018 if (return_object->common.type == ACPI_TYPE_LOCAL_REFERENCE) { 1016 status = acpi_ns_repair_object(data, expected_btypes,
1019 status = acpi_ns_check_reference(data, return_object); 1017 package_index, return_object_ptr);
1018 if (ACPI_SUCCESS(status)) {
1019 return (AE_OK); /* Repair was successful */
1020 } 1020 }
1021 1021
1022 return (status);
1023
1024 type_error_exit: 1022 type_error_exit:
1025 1023
1026 /* Create a string with all expected types for this predefined object */ 1024 /* Create a string with all expected types for this predefined object */
diff --git a/drivers/acpi/acpica/nsrepair2.c b/drivers/acpi/acpica/nsrepair2.c
index f13691c1cca5..6d6926466a08 100644
--- a/drivers/acpi/acpica/nsrepair2.c
+++ b/drivers/acpi/acpica/nsrepair2.c
@@ -93,7 +93,7 @@ acpi_ns_check_sorted_list(struct acpi_predefined_data *data,
93 u32 sort_index, 93 u32 sort_index,
94 u8 sort_direction, char *sort_key_name); 94 u8 sort_direction, char *sort_key_name);
95 95
96static acpi_status 96static void
97acpi_ns_sort_list(union acpi_operand_object **elements, 97acpi_ns_sort_list(union acpi_operand_object **elements,
98 u32 count, u32 index, u8 sort_direction); 98 u32 count, u32 index, u8 sort_direction);
99 99
@@ -443,7 +443,6 @@ acpi_ns_check_sorted_list(struct acpi_predefined_data *data,
443 union acpi_operand_object *obj_desc; 443 union acpi_operand_object *obj_desc;
444 u32 i; 444 u32 i;
445 u32 previous_value; 445 u32 previous_value;
446 acpi_status status;
447 446
448 ACPI_FUNCTION_NAME(ns_check_sorted_list); 447 ACPI_FUNCTION_NAME(ns_check_sorted_list);
449 448
@@ -494,19 +493,15 @@ acpi_ns_check_sorted_list(struct acpi_predefined_data *data,
494 493
495 /* 494 /*
496 * The list must be sorted in the specified order. If we detect a 495 * The list must be sorted in the specified order. If we detect a
497 * discrepancy, issue a warning and sort the entire list 496 * discrepancy, sort the entire list.
498 */ 497 */
499 if (((sort_direction == ACPI_SORT_ASCENDING) && 498 if (((sort_direction == ACPI_SORT_ASCENDING) &&
500 (obj_desc->integer.value < previous_value)) || 499 (obj_desc->integer.value < previous_value)) ||
501 ((sort_direction == ACPI_SORT_DESCENDING) && 500 ((sort_direction == ACPI_SORT_DESCENDING) &&
502 (obj_desc->integer.value > previous_value))) { 501 (obj_desc->integer.value > previous_value))) {
503 status = 502 acpi_ns_sort_list(return_object->package.elements,
504 acpi_ns_sort_list(return_object->package.elements, 503 outer_element_count, sort_index,
505 outer_element_count, sort_index, 504 sort_direction);
506 sort_direction);
507 if (ACPI_FAILURE(status)) {
508 return (status);
509 }
510 505
511 data->flags |= ACPI_OBJECT_REPAIRED; 506 data->flags |= ACPI_OBJECT_REPAIRED;
512 507
@@ -615,15 +610,16 @@ acpi_ns_remove_null_elements(struct acpi_predefined_data *data,
615 * Index - Sort by which package element 610 * Index - Sort by which package element
616 * sort_direction - Ascending or Descending sort 611 * sort_direction - Ascending or Descending sort
617 * 612 *
618 * RETURN: Status 613 * RETURN: None
619 * 614 *
620 * DESCRIPTION: Sort the objects that are in a package element list. 615 * DESCRIPTION: Sort the objects that are in a package element list.
621 * 616 *
622 * NOTE: Assumes that all NULL elements have been removed from the package. 617 * NOTE: Assumes that all NULL elements have been removed from the package,
618 * and that all elements have been verified to be of type Integer.
623 * 619 *
624 *****************************************************************************/ 620 *****************************************************************************/
625 621
626static acpi_status 622static void
627acpi_ns_sort_list(union acpi_operand_object **elements, 623acpi_ns_sort_list(union acpi_operand_object **elements,
628 u32 count, u32 index, u8 sort_direction) 624 u32 count, u32 index, u8 sort_direction)
629{ 625{
@@ -652,6 +648,4 @@ acpi_ns_sort_list(union acpi_operand_object **elements,
652 } 648 }
653 } 649 }
654 } 650 }
655
656 return (AE_OK);
657} 651}
diff --git a/drivers/acpi/acpica/utmutex.c b/drivers/acpi/acpica/utmutex.c
index 80bb65154117..1f58a8824146 100644
--- a/drivers/acpi/acpica/utmutex.c
+++ b/drivers/acpi/acpica/utmutex.c
@@ -50,7 +50,7 @@ ACPI_MODULE_NAME("utmutex")
50/* Local prototypes */ 50/* Local prototypes */
51static acpi_status acpi_ut_create_mutex(acpi_mutex_handle mutex_id); 51static acpi_status acpi_ut_create_mutex(acpi_mutex_handle mutex_id);
52 52
53static acpi_status acpi_ut_delete_mutex(acpi_mutex_handle mutex_id); 53static void acpi_ut_delete_mutex(acpi_mutex_handle mutex_id);
54 54
55/******************************************************************************* 55/*******************************************************************************
56 * 56 *
@@ -114,7 +114,7 @@ void acpi_ut_mutex_terminate(void)
114 /* Delete each predefined mutex object */ 114 /* Delete each predefined mutex object */
115 115
116 for (i = 0; i < ACPI_NUM_MUTEX; i++) { 116 for (i = 0; i < ACPI_NUM_MUTEX; i++) {
117 (void)acpi_ut_delete_mutex(i); 117 acpi_ut_delete_mutex(i);
118 } 118 }
119 119
120 /* Delete the spinlocks */ 120 /* Delete the spinlocks */
@@ -146,10 +146,6 @@ static acpi_status acpi_ut_create_mutex(acpi_mutex_handle mutex_id)
146 146
147 ACPI_FUNCTION_TRACE_U32(ut_create_mutex, mutex_id); 147 ACPI_FUNCTION_TRACE_U32(ut_create_mutex, mutex_id);
148 148
149 if (mutex_id > ACPI_MAX_MUTEX) {
150 return_ACPI_STATUS(AE_BAD_PARAMETER);
151 }
152
153 if (!acpi_gbl_mutex_info[mutex_id].mutex) { 149 if (!acpi_gbl_mutex_info[mutex_id].mutex) {
154 status = 150 status =
155 acpi_os_create_mutex(&acpi_gbl_mutex_info[mutex_id].mutex); 151 acpi_os_create_mutex(&acpi_gbl_mutex_info[mutex_id].mutex);
@@ -173,21 +169,15 @@ static acpi_status acpi_ut_create_mutex(acpi_mutex_handle mutex_id)
173 * 169 *
174 ******************************************************************************/ 170 ******************************************************************************/
175 171
176static acpi_status acpi_ut_delete_mutex(acpi_mutex_handle mutex_id) 172static void acpi_ut_delete_mutex(acpi_mutex_handle mutex_id)
177{ 173{
178 174
179 ACPI_FUNCTION_TRACE_U32(ut_delete_mutex, mutex_id); 175 ACPI_FUNCTION_TRACE_U32(ut_delete_mutex, mutex_id);
180 176
181 if (mutex_id > ACPI_MAX_MUTEX) {
182 return_ACPI_STATUS(AE_BAD_PARAMETER);
183 }
184
185 acpi_os_delete_mutex(acpi_gbl_mutex_info[mutex_id].mutex); 177 acpi_os_delete_mutex(acpi_gbl_mutex_info[mutex_id].mutex);
186 178
187 acpi_gbl_mutex_info[mutex_id].mutex = NULL; 179 acpi_gbl_mutex_info[mutex_id].mutex = NULL;
188 acpi_gbl_mutex_info[mutex_id].thread_id = ACPI_MUTEX_NOT_ACQUIRED; 180 acpi_gbl_mutex_info[mutex_id].thread_id = ACPI_MUTEX_NOT_ACQUIRED;
189
190 return_ACPI_STATUS(AE_OK);
191} 181}
192 182
193/******************************************************************************* 183/*******************************************************************************