percpu-refcount: Add a WARN() for ref going negative
AIO had a missing get, which led to an ioctx leak - after percpu_ref_kill() the ref was 0 so percpu_ref_put() never saw it hit 0. This wasn't noticed at the time because it all happened completely silently, this adds a WARN() which would've caught the aio bug. tj: Used WARN_ONCE() instead of WARN(). Signed-off-by: Kent Overstreet <kmo@daterainc.com> Signed-off-by: Tejun Heo <tj@kernel.org>
This commit is contained in:
parent
6ce4eac1f6
commit
687b0ad275
|
@ -120,6 +120,9 @@ static void percpu_ref_kill_rcu(struct rcu_head *rcu)
|
|||
|
||||
atomic_add((int) count - PCPU_COUNT_BIAS, &ref->count);
|
||||
|
||||
WARN_ONCE(atomic_read(&ref->count) <= 0, "percpu ref <= 0 (%i)",
|
||||
atomic_read(&ref->count));
|
||||
|
||||
/* @ref is viewed as dead on all CPUs, send out kill confirmation */
|
||||
if (ref->confirm_kill)
|
||||
ref->confirm_kill(ref);
|
||||
|
|
Loading…
Reference in New Issue