diff --git a/include/linux/sched/signal.h b/include/linux/sched/signal.h
index cffc882d367f5c39329602fd8a3d666605ae1b32..d7fa3ca2fa5326ebd6cf2322b49256ba35fbdc5e 100644
--- a/include/linux/sched/signal.h
+++ b/include/linux/sched/signal.h
@@ -733,7 +733,8 @@ static inline struct task_struct *next_thread(struct task_struct *p)
 
 static inline int thread_group_empty(struct task_struct *p)
 {
-	return list_empty(&p->thread_group);
+	return thread_group_leader(p) &&
+	       list_is_last(&p->thread_node, &p->signal->thread_head);
 }
 
 #define delay_group_leader(p) \