From e25f14c9baa5685308f082420a3a419f4b97789e Mon Sep 17 00:00:00 2001 From: Doczom Date: Wed, 10 Aug 2022 11:57:08 +0000 Subject: [PATCH] fixing kernel breakage when futex freezes git-svn-id: svn://kolibrios.org@9869 a494cfbc-eb01-0410-851d-a64ba20cac60 --- kernel/trunk/posix/futex.inc | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/kernel/trunk/posix/futex.inc b/kernel/trunk/posix/futex.inc index 70064d6a15..79e385788f 100644 --- a/kernel/trunk/posix/futex.inc +++ b/kernel/trunk/posix/futex.inc @@ -185,28 +185,31 @@ align 4 lea esi, [ebp + FUTEX.wait_list] list_add_tail esp, esi ;esp= new waiter, esi= list head - + sti .again_timeout: call change_task mov eax, [ebx + APPDATA.wait_param] test eax, eax jz .timeout - + DEBUGF 1, "FUTEX no timeout [ecx]=%x edx=%x\n", [ecx], edx mov eax, edx lock cmpxchg [ecx], edx jz .again_timeout @@: + cli list_del esp + sti add esp, sizeof.MUTEX_WAITER - popfd mov [esp + SYSCALL_STACK.eax], 0 ret .timeout: + cli list_del esp + sti add esp, sizeof.MUTEX_WAITER - + DEBUGF 1, "FUTEX timeout\n" popfd mov [esp + SYSCALL_STACK.eax], -1 ret