Fix deadlock by release of lock and semaphore in the wrong order
This commit is contained in:
@@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user