From fc2339cd92650040268fa6bee37b10e0009ad9ff Mon Sep 17 00:00:00 2001 From: vicLin8712 Date: Sun, 30 Nov 2025 16:09:23 +0800 Subject: [PATCH] Fix double freed in remove_self_from_waiters() free() is already invoked in list_remove(). Freeing the same pointer twice can crash the program with an invalid free error or corrupt the heap. Ensure a single memory-release path by removing the outer free() call. close #57 --- kernel/mutex.c | 1 - 1 file changed, 1 deletion(-) diff --git a/kernel/mutex.c b/kernel/mutex.c index 52a16a72..5ff9c8aa 100644 --- a/kernel/mutex.c +++ b/kernel/mutex.c @@ -56,7 +56,6 @@ static bool remove_self_from_waiters(list_t *waiters) while (curr && curr != waiters->tail) { if (curr->data == self) { list_remove(waiters, curr); - free(curr); return true; } curr = curr->next;