]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
ACPICA: haiku: Fix invalid value used for semaphores
authorAdrien Destugues <adrien.destugues@opensource.viveris.fr>
Tue, 12 Dec 2023 11:28:17 +0000 (12:28 +0100)
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>
Thu, 29 Aug 2024 15:26:51 +0000 (17:26 +0200)
ACPICA commit 49fe4f25483feec2f685b204ef19e28d92979e95

In Haiku, semaphores are represented by integers, not pointers.
So, we can't use NULL as the invalid/destroyed value, the correct value
is -1. Introduce a platform overridable define to allow this.

Fixes #162 (which was closed after coming to the conclusion that this
should be done, but the change was never done).

Link: https://github.com/acpica/acpica/commit/49fe4f25
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
drivers/acpi/acpica/utdelete.c
drivers/acpi/acpica/utinit.c
include/acpi/platform/acenv.h

index 8d7736d2d2699c8b1a80598b2294be73b29f4210..c85bfa13ac1e2eb9836a0ae6b6b61662f1ad7610 100644 (file)
@@ -140,7 +140,7 @@ static void acpi_ut_delete_internal_obj(union acpi_operand_object *object)
                        (void)
                            acpi_os_delete_semaphore
                            (acpi_gbl_global_lock_semaphore);
-                       acpi_gbl_global_lock_semaphore = NULL;
+                       acpi_gbl_global_lock_semaphore = ACPI_SEMAPHORE_NULL;
 
                        acpi_os_delete_mutex(object->mutex.os_mutex);
                        acpi_gbl_global_lock_mutex = NULL;
@@ -157,7 +157,7 @@ static void acpi_ut_delete_internal_obj(union acpi_operand_object *object)
                                  object, object->event.os_semaphore));
 
                (void)acpi_os_delete_semaphore(object->event.os_semaphore);
-               object->event.os_semaphore = NULL;
+               object->event.os_semaphore = ACPI_SEMAPHORE_NULL;
                break;
 
        case ACPI_TYPE_METHOD:
index 92fbaef161a73f2a5dba00f000e6801ee4947d0e..6d78504e9fbc7d014b32d175f74a56c93af76500 100644 (file)
@@ -154,7 +154,7 @@ acpi_status acpi_ut_init_globals(void)
 
        /* Global Lock support */
 
-       acpi_gbl_global_lock_semaphore = NULL;
+       acpi_gbl_global_lock_semaphore = ACPI_SEMAPHORE_NULL;
        acpi_gbl_global_lock_mutex = NULL;
        acpi_gbl_global_lock_acquired = FALSE;
        acpi_gbl_global_lock_handle = 0;
index 337ffa931ee82334b95c9dddca1791b7432943f8..3f31df09a9d63f7dbf90bff1db1e542a369bf87f 100644 (file)
 #define ACPI_RELEASE_GLOBAL_LOCK(Glptr, pending) pending = 0
 #endif
 
+/* NULL/invalid value to use for destroyed or not-yet-created semaphores. */
+
+#ifndef ACPI_SEMAPHORE_NULL
+#define ACPI_SEMAPHORE_NULL NULL
+#endif
+
 /* Flush CPU cache - used when going to sleep. Wbinvd or similar. */
 
 #ifndef ACPI_FLUSH_CPU_CACHE