diff --git a/sys/contrib/dev/acpica/components/utilities/utdelete.c b/sys/contrib/dev/acpica/components/utilities/utdelete.c index 9b3b7d3..a6750ed 100644 --- a/sys/contrib/dev/acpica/components/utilities/utdelete.c +++ b/sys/contrib/dev/acpica/components/utilities/utdelete.c @@ -415,6 +415,8 @@ AcpiUtUpdateRefCount ( return; } + (void) AcpiUtAcquireMutex (ACPI_MTX_REFCOUNTS); + Count = Object->Common.ReferenceCount; NewCount = Count; @@ -427,6 +429,7 @@ AcpiUtUpdateRefCount ( NewCount++; Object->Common.ReferenceCount = NewCount; + (void) AcpiUtReleaseMutex (ACPI_MTX_REFCOUNTS); ACPI_DEBUG_PRINT ((ACPI_DB_ALLOCATIONS, "Obj %p Refs=%X, [Incremented]\n", @@ -437,11 +440,11 @@ AcpiUtUpdateRefCount ( if (Count < 1) { - ACPI_DEBUG_PRINT ((ACPI_DB_ALLOCATIONS, + ACPI_ERROR ((AE_INFO, "Obj %p Refs=%X, can't decrement! (Set to 0)\n", Object, NewCount)); - - NewCount = 0; + (void) AcpiUtReleaseMutex (ACPI_MTX_REFCOUNTS); + break; } else { @@ -459,6 +462,7 @@ AcpiUtUpdateRefCount ( } Object->Common.ReferenceCount = NewCount; + (void) AcpiUtReleaseMutex (ACPI_MTX_REFCOUNTS); if (NewCount == 0) { AcpiUtDeleteInternalObj (Object); @@ -467,16 +471,18 @@ AcpiUtUpdateRefCount ( case REF_FORCE_DELETE: - ACPI_DEBUG_PRINT ((ACPI_DB_ALLOCATIONS, + ACPI_ERROR ((AE_INFO, "Obj %p Refs=%X, Force delete! (Set to 0)\n", Object, Count)); NewCount = 0; Object->Common.ReferenceCount = NewCount; + (void) AcpiUtReleaseMutex (ACPI_MTX_REFCOUNTS); AcpiUtDeleteInternalObj (Object); break; default: + (void) AcpiUtReleaseMutex (ACPI_MTX_REFCOUNTS); ACPI_ERROR ((AE_INFO, "Unknown action (0x%X)", Action)); break; } diff --git a/sys/contrib/dev/acpica/include/aclocal.h b/sys/contrib/dev/acpica/include/aclocal.h index 8a35147..1c4d0ec 100644 --- a/sys/contrib/dev/acpica/include/aclocal.h +++ b/sys/contrib/dev/acpica/include/aclocal.h @@ -89,8 +89,9 @@ union acpi_parse_object; #define ACPI_MTX_MEMORY 5 /* Debug memory tracking lists */ #define ACPI_MTX_DEBUG_CMD_COMPLETE 6 /* AML debugger */ #define ACPI_MTX_DEBUG_CMD_READY 7 /* AML debugger */ +#define ACPI_MTX_REFCOUNTS 8 /* ACPI object reference counts */ -#define ACPI_MAX_MUTEX 7 +#define ACPI_MAX_MUTEX 8 #define ACPI_NUM_MUTEX ACPI_MAX_MUTEX+1