diff --git a/include/linux/pid.h b/include/linux/pid.h
index b91f4732dc1b7f4b883e155ed1c4e7defbce8502..f84d532b5d23e543bf21481b1c4521ccc8c5f660 100644
--- a/include/linux/pid.h
+++ b/include/linux/pid.h
@@ -152,7 +152,13 @@ pid_t pid_vnr(struct pid *pid);
 			hlist_for_each_entry_rcu((task), pos___,	\
 				&pid->tasks[type], pids[type].node) {
 
+			/*
+			 * Both old and new leaders may be attached to
+			 * the same pid in the middle of de_thread().
+			 */
 #define while_each_pid_task(pid, type, task)				\
+				if (type == PIDTYPE_PID)		\
+					break;				\
 			}						\
 	} while (0)