Fix race-condition in process result (memory leak), fix infinite loop in donors_list

This commit is contained in:
2024-11-11 17:35:49 +00:00
parent 7778e05aa4
commit 18c884234d
3 changed files with 7 additions and 2 deletions

View File

@@ -262,11 +262,12 @@ process_exit (void)
struct process_result *, and may be waiting so call sema_up */
else
{
lock_release (&cur->result->lock);
sema_up (&cur->result->sema);
lock_release (&cur->result->lock);
}
}
/* Free child process results or signal parent's death. */
struct list_elem *e;
for (e = list_begin (&cur->child_results);
e != list_end (&cur->child_results); e = list_next (e))
@@ -283,8 +284,8 @@ process_exit (void)
/* Child is still alive, signal via sema that parent has died. */
else
{
lock_release (&result->lock);
sema_up (&result->sema);
lock_release (&result->lock);
}
}