} else {
thread->acquired_mutex_list = obj_desc->mutex.next;
}
- return;
}
/*******************************************************************************
return (AE_NOT_ACQUIRED);
}
- /* No obj_desc->Mutex.owner_thread for Global Lock */
-
- /*
- * Mutex to be released must be at the head of acquired list to prevent
- * deadlock. (The head of the list is the last mutex acquired.)
- */
- if (obj_desc->mutex.owner_thread &&
- (obj_desc != obj_desc->mutex.owner_thread->acquired_mutex_list)) {
- return (AE_AML_MUTEX_ORDER);
- }
-
/* Match multiple Acquires with multiple Releases */
obj_desc->mutex.acquisition_depth--;
}
status = acpi_ex_release_mutex_object(obj_desc);
- if (ACPI_FAILURE(status)) {
- return_ACPI_STATUS(status);
- }
if (obj_desc->mutex.acquisition_depth == 0) {
walk_state->thread->current_sync_level =
obj_desc->mutex.original_sync_level;
}
-
return_ACPI_STATUS(status);
}