From: Christian Brauner Date: Tue, 6 May 2025 11:55:54 +0000 (+0200) Subject: pidfs: detect refcount bugs X-Git-Tag: block-6.16-20250606~48^2 X-Git-Url: https://git.kernel.dk/?a=commitdiff_plain;h=db56723ceaec87aa5cf871e623f464934b266228;p=linux-block.git pidfs: detect refcount bugs Now that we have pidfs_{get,register}_pid() that needs to be paired with pidfs_put_pid() it's possible that someone pairs them with put_pid(). Thus freeing struct pid while it's still used by pidfs. Notice when that happens. I'll also add a scheme to detect invalid uses of pidfs_get_pid() and pidfs_put_pid() later. Link: https://lore.kernel.org/20250506-uferbereich-guttun-7c8b1a0a431f@brauner Signed-off-by: Christian Brauner --- diff --git a/kernel/pid.c b/kernel/pid.c index 26f1e136f017..8317bcbc7cf7 100644 --- a/kernel/pid.c +++ b/kernel/pid.c @@ -100,6 +100,7 @@ void put_pid(struct pid *pid) ns = pid->numbers[pid->level].ns; if (refcount_dec_and_test(&pid->count)) { + WARN_ON_ONCE(pid->stashed); kmem_cache_free(ns->pid_cachep, pid); put_pid_ns(ns); }