X-Git-Url: https://git.saurik.com/apple/xnu.git/blobdiff_plain/a991bd8d3e7fe02dbca0644054bab73c5b75324a..HEAD:/osfmk/kern/sync_sema.c diff --git a/osfmk/kern/sync_sema.c b/osfmk/kern/sync_sema.c index 31ea5caae..dfa8d1153 100644 --- a/osfmk/kern/sync_sema.c +++ b/osfmk/kern/sync_sema.c @@ -180,6 +180,12 @@ semaphore_create( * the new semaphore to the task's semaphore list. */ task_lock(task); + /* Check for race with task_terminate */ + if (!task->active) { + task_unlock(task); + zfree(semaphore_zone, s); + return KERN_INVALID_TASK; + } enqueue_head(&task->semaphore_list, (queue_entry_t) s); task->semaphores_owned++; task_unlock(task);