mirror of
https://github.com/opnsense/src.git
synced 2026-05-28 04:12:45 -04:00
The "pid" field in the LinuxKPI task struct is typically set to the thread ID
and not the process ID. Make sure the linux_task_exiting() function uses tdfind() to lookup the BSD procedure structure pointer by the "pid" field, and only fallback to pfind() when no match is found! This makes linux_task_exiting() in line with the rest of the code. Differential Revision: https://reviews.freebsd.org/D25509 Submitted by: Greg V <greg@unrelenting.technology> MFC after: 1 week Sponsored by: Mellanox Technologies
This commit is contained in:
parent
5d1c042d32
commit
9a4e535b39
1 changed files with 11 additions and 1 deletions
|
|
@ -219,11 +219,21 @@ linux_get_pid_task(pid_t pid)
|
|||
bool
|
||||
linux_task_exiting(struct task_struct *task)
|
||||
{
|
||||
struct thread *td;
|
||||
struct proc *p;
|
||||
bool ret;
|
||||
|
||||
ret = false;
|
||||
p = pfind(task->pid);
|
||||
|
||||
/* try to find corresponding thread */
|
||||
td = tdfind(task->pid, -1);
|
||||
if (td != NULL) {
|
||||
p = td->td_proc;
|
||||
} else {
|
||||
/* try to find corresponding procedure */
|
||||
p = pfind(task->pid);
|
||||
}
|
||||
|
||||
if (p != NULL) {
|
||||
if ((p->p_flag & P_WEXIT) != 0)
|
||||
ret = true;
|
||||
|
|
|
|||
Loading…
Reference in a new issue