mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
synced 2025-01-07 14:32:23 +00:00
pidfd: exit: kill the no longer used thread_group_exited()
It was used by pidfd_poll() but now it has no callers.
If it finally finds a modular user we can revert this change, but note
that the comment above this helper and the changelog in 38fd525a4c
("exit: Factor thread_group_exited out of pidfd_poll") are not accurate,
thread_group_exited() won't return true if all other threads have passed
exit_notify() and are zombies, it returns true only when all other threads
are completely gone. Not to mention that it can only work if the task
identified by @pid is a thread-group leader.
Signed-off-by: Oleg Nesterov <oleg@redhat.com>
Link: https://lore.kernel.org/r/20240205174347.GA31461@redhat.com
Reviewed-by: Tycho Andersen <tandersen@netflix.com>
Signed-off-by: Christian Brauner <brauner@kernel.org>
This commit is contained in:
parent
9ed52108f6
commit
e2e8a142fb
@ -735,8 +735,6 @@ static inline int thread_group_empty(struct task_struct *p)
|
||||
#define delay_group_leader(p) \
|
||||
(thread_group_leader(p) && !thread_group_empty(p))
|
||||
|
||||
extern bool thread_group_exited(struct pid *pid);
|
||||
|
||||
extern struct sighand_struct *__lock_task_sighand(struct task_struct *task,
|
||||
unsigned long *flags);
|
||||
|
||||
|
@ -1900,30 +1900,6 @@ COMPAT_SYSCALL_DEFINE5(waitid,
|
||||
}
|
||||
#endif
|
||||
|
||||
/**
|
||||
* thread_group_exited - check that a thread group has exited
|
||||
* @pid: tgid of thread group to be checked.
|
||||
*
|
||||
* Test if the thread group represented by tgid has exited (all
|
||||
* threads are zombies, dead or completely gone).
|
||||
*
|
||||
* Return: true if the thread group has exited. false otherwise.
|
||||
*/
|
||||
bool thread_group_exited(struct pid *pid)
|
||||
{
|
||||
struct task_struct *task;
|
||||
bool exited;
|
||||
|
||||
rcu_read_lock();
|
||||
task = pid_task(pid, PIDTYPE_PID);
|
||||
exited = !task ||
|
||||
(READ_ONCE(task->exit_state) && thread_group_empty(task));
|
||||
rcu_read_unlock();
|
||||
|
||||
return exited;
|
||||
}
|
||||
EXPORT_SYMBOL(thread_group_exited);
|
||||
|
||||
/*
|
||||
* This needs to be __function_aligned as GCC implicitly makes any
|
||||
* implementation of abort() cold and drops alignment specified by
|
||||
|
Loading…
Reference in New Issue
Block a user