Fix deadlock by release of lock and semaphore in the wrong order

This commit is contained in:
2024-11-09 11:06:36 +00:00
parent 6ed1ccd21e
commit 7778e05aa4

View File

@@ -262,8 +262,8 @@ process_exit (void)
struct process_result *, and may be waiting so call sema_up */ struct process_result *, and may be waiting so call sema_up */
else else
{ {
sema_up (&cur->result->sema);
lock_release (&cur->result->lock); lock_release (&cur->result->lock);
sema_up (&cur->result->sema);
} }
} }
@@ -283,8 +283,8 @@ process_exit (void)
/* Child is still alive, signal via sema that parent has died. */ /* Child is still alive, signal via sema that parent has died. */
else else
{ {
sema_up (&result->sema);
lock_release (&result->lock); lock_release (&result->lock);
sema_up (&result->sema);
} }
} }