diff options
author | Joel Fernandes (Google) <joel@joelfernandes.org> | 2019-07-24 12:48:16 -0400 |
---|---|---|
committer | Christian Brauner <christian@brauner.io> | 2019-07-29 17:20:19 +0200 |
commit | 1caf7d50f46bd0388e38e653b146aa81700e8eb8 (patch) | |
tree | f98d18c6f5c7a5233bcba6d4e9969cffa4e82f4c /kernel/signal.c | |
parent | 3884ae44f41247e0ae41952d4fad46db86d2e0a8 (diff) | |
download | lwn-1caf7d50f46bd0388e38e653b146aa81700e8eb8.tar.gz lwn-1caf7d50f46bd0388e38e653b146aa81700e8eb8.zip |
pidfd: Add warning if exit_state is 0 during notification
Previously a condition got missed where the pidfd waiters are awakened
before the exit_state gets set. This can result in a missed notification
[1] and the polling thread waiting forever.
It is fixed now, however it would be nice to avoid this kind of issue
going unnoticed in the future. So just add a warning to catch it in the
future.
/* References */
[1]: https://lore.kernel.org/lkml/20190717172100.261204-1-joel@joelfernandes.org/
Signed-off-by: Joel Fernandes (Google) <joel@joelfernandes.org>
Link: https://lore.kernel.org/r/20190724164816.201099-1-joel@joelfernandes.org
Signed-off-by: Christian Brauner <christian@brauner.io>
Diffstat (limited to 'kernel/signal.c')
-rw-r--r-- | kernel/signal.c | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/kernel/signal.c b/kernel/signal.c index 91b789dd6e72..349f5a67f100 100644 --- a/kernel/signal.c +++ b/kernel/signal.c @@ -1885,6 +1885,7 @@ static void do_notify_pidfd(struct task_struct *task) { struct pid *pid; + WARN_ON(task->exit_state == 0); pid = task_pid(task); wake_up_all(&pid->wait_pidfd); } |