git://git.onelab.eu
/
linux-2.6.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
fedora core 6 1.2949 + vserver 2.2.0
[linux-2.6.git]
/
drivers
/
acpi
/
utilities
/
utstate.c
diff --git
a/drivers/acpi/utilities/utstate.c
b/drivers/acpi/utilities/utstate.c
index
4b134a7
..
eaa13d0
100644
(file)
--- a/
drivers/acpi/utilities/utstate.c
+++ b/
drivers/acpi/utilities/utstate.c
@@
-96,7
+96,7
@@
void
acpi_ut_push_generic_state(union acpi_generic_state **list_head,
union acpi_generic_state *state)
{
acpi_ut_push_generic_state(union acpi_generic_state **list_head,
union acpi_generic_state *state)
{
- ACPI_FUNCTION_TRACE(
"ut_push_generic_state"
);
+ ACPI_FUNCTION_TRACE(
ut_push_generic_state
);
/* Push the state object onto the front of the list (stack) */
/* Push the state object onto the front of the list (stack) */
@@
-123,12
+123,13
@@
union acpi_generic_state *acpi_ut_pop_generic_state(union acpi_generic_state
{
union acpi_generic_state *state;
{
union acpi_generic_state *state;
- ACPI_FUNCTION_TRACE(
"ut_pop_generic_state"
);
+ ACPI_FUNCTION_TRACE(
ut_pop_generic_state
);
/* Remove the state object at the head of the list (stack) */
state = *list_head;
if (state) {
/* Remove the state object at the head of the list (stack) */
state = *list_head;
if (state) {
+
/* Update the list head */
*list_head = state->common.next;
/* Update the list head */
*list_head = state->common.next;
@@
-158,9
+159,10
@@
union acpi_generic_state *acpi_ut_create_generic_state(void)
state = acpi_os_acquire_object(acpi_gbl_state_cache);
if (state) {
state = acpi_os_acquire_object(acpi_gbl_state_cache);
if (state) {
+
/* Initialize */
memset(state, 0, sizeof(union acpi_generic_state));
/* Initialize */
memset(state, 0, sizeof(union acpi_generic_state));
- state->common.d
ata
_type = ACPI_DESC_TYPE_STATE;
+ state->common.d
escriptor
_type = ACPI_DESC_TYPE_STATE;
}
return (state);
}
return (state);
@@
-183,7
+185,7
@@
struct acpi_thread_state *acpi_ut_create_thread_state(void)
{
union acpi_generic_state *state;
{
union acpi_generic_state *state;
- ACPI_FUNCTION_TRACE(
"ut_create_thread_state"
);
+ ACPI_FUNCTION_TRACE(
ut_create_thread_state
);
/* Create the generic state object */
/* Create the generic state object */
@@
-194,9
+196,16
@@
struct acpi_thread_state *acpi_ut_create_thread_state(void)
/* Init fields specific to the update struct */
/* Init fields specific to the update struct */
- state->common.d
ata
_type = ACPI_DESC_TYPE_STATE_THREAD;
+ state->common.d
escriptor
_type = ACPI_DESC_TYPE_STATE_THREAD;
state->thread.thread_id = acpi_os_get_thread_id();
state->thread.thread_id = acpi_os_get_thread_id();
+ /* Check for invalid thread ID - zero is very bad, it will break things */
+
+ if (!state->thread.thread_id) {
+ ACPI_ERROR((AE_INFO, "Invalid zero ID from AcpiOsGetThreadId"));
+ state->thread.thread_id = (acpi_thread_id) 1;
+ }
+
return_PTR((struct acpi_thread_state *)state);
}
return_PTR((struct acpi_thread_state *)state);
}
@@
-220,7
+229,7
@@
union acpi_generic_state *acpi_ut_create_update_state(union acpi_operand_object
{
union acpi_generic_state *state;
{
union acpi_generic_state *state;
- ACPI_FUNCTION_TRACE_PTR(
"ut_create_update_state"
, object);
+ ACPI_FUNCTION_TRACE_PTR(
ut_create_update_state
, object);
/* Create the generic state object */
/* Create the generic state object */
@@
-231,7
+240,7
@@
union acpi_generic_state *acpi_ut_create_update_state(union acpi_operand_object
/* Init fields specific to the update struct */
/* Init fields specific to the update struct */
- state->common.d
ata
_type = ACPI_DESC_TYPE_STATE_UPDATE;
+ state->common.d
escriptor
_type = ACPI_DESC_TYPE_STATE_UPDATE;
state->update.object = object;
state->update.value = action;
state->update.object = object;
state->update.value = action;
@@
-257,7
+266,7
@@
union acpi_generic_state *acpi_ut_create_pkg_state(void *internal_object,
{
union acpi_generic_state *state;
{
union acpi_generic_state *state;
- ACPI_FUNCTION_TRACE_PTR(
"ut_create_pkg_state"
, internal_object);
+ ACPI_FUNCTION_TRACE_PTR(
ut_create_pkg_state
, internal_object);
/* Create the generic state object */
/* Create the generic state object */
@@
-268,7
+277,7
@@
union acpi_generic_state *acpi_ut_create_pkg_state(void *internal_object,
/* Init fields specific to the update struct */
/* Init fields specific to the update struct */
- state->common.d
ata
_type = ACPI_DESC_TYPE_STATE_PACKAGE;
+ state->common.d
escriptor
_type = ACPI_DESC_TYPE_STATE_PACKAGE;
state->pkg.source_object = (union acpi_operand_object *)internal_object;
state->pkg.dest_object = external_object;
state->pkg.index = index;
state->pkg.source_object = (union acpi_operand_object *)internal_object;
state->pkg.dest_object = external_object;
state->pkg.index = index;
@@
-294,7
+303,7
@@
union acpi_generic_state *acpi_ut_create_control_state(void)
{
union acpi_generic_state *state;
{
union acpi_generic_state *state;
- ACPI_FUNCTION_TRACE(
"ut_create_control_state"
);
+ ACPI_FUNCTION_TRACE(
ut_create_control_state
);
/* Create the generic state object */
/* Create the generic state object */
@@
-305,7
+314,7
@@
union acpi_generic_state *acpi_ut_create_control_state(void)
/* Init fields specific to the control struct */
/* Init fields specific to the control struct */
- state->common.d
ata
_type = ACPI_DESC_TYPE_STATE_CONTROL;
+ state->common.d
escriptor
_type = ACPI_DESC_TYPE_STATE_CONTROL;
state->common.state = ACPI_CONTROL_CONDITIONAL_EXECUTING;
return_PTR(state);
state->common.state = ACPI_CONTROL_CONDITIONAL_EXECUTING;
return_PTR(state);
@@
-319,15
+328,19
@@
union acpi_generic_state *acpi_ut_create_control_state(void)
*
* RETURN: None
*
*
* RETURN: None
*
- * DESCRIPTION:
Put a state object back into the global state cache. The object
- *
is not actually freed at this time
.
+ * DESCRIPTION:
Release a state object to the state cache. NULL state objects
+ *
are ignored
.
*
******************************************************************************/
void acpi_ut_delete_generic_state(union acpi_generic_state *state)
{
*
******************************************************************************/
void acpi_ut_delete_generic_state(union acpi_generic_state *state)
{
- ACPI_FUNCTION_TRACE("ut_delete_generic_state");
+ ACPI_FUNCTION_TRACE(ut_delete_generic_state);
+
+ /* Ignore null state */
- (void)acpi_os_release_object(acpi_gbl_state_cache, state);
+ if (state) {
+ (void)acpi_os_release_object(acpi_gbl_state_cache, state);
+ }
return_VOID;
}
return_VOID;
}