In the Linux kernel, the following vulnerability has been resolved:
vhost: Take a reference on the task in struct vhost_task.
vhosttaskcreate() creates a task and keeps a reference to its taskstruct. That task may exit early via a signal and its taskstruct will be released. A pending vhosttaskwake() will then attempt to wake the task and access a task_struct which is no longer there.
Acquire a reference on the taskstruct while creating the thread and release the reference while the struct vhosttask itself is removed. If the task exits early due to a signal, then the vhosttaskwake() will still access a valid task_struct. The wake is safe and will be skipped in this case.