diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/ratelimiter.c | 2 | ||||
-rw-r--r-- | src/selftest/ratelimiter.h | 2 |
2 files changed, 3 insertions, 1 deletions
diff --git a/src/ratelimiter.c b/src/ratelimiter.c index 78096cc..2107c8e 100644 --- a/src/ratelimiter.c +++ b/src/ratelimiter.c @@ -183,7 +183,7 @@ err: void ratelimiter_uninit(void) { - if (atomic64_dec_return(&refcnt)) + if (atomic64_dec_if_positive(&refcnt)) return; cancel_delayed_work_sync(&gc_work); diff --git a/src/selftest/ratelimiter.h b/src/selftest/ratelimiter.h index 7e017ce..0bdff1e 100644 --- a/src/selftest/ratelimiter.h +++ b/src/selftest/ratelimiter.h @@ -146,6 +146,8 @@ err_nofree: ratelimiter_uninit(); ratelimiter_uninit(); ratelimiter_uninit(); + /* Uninit one extra time to check underflow detection. */ + ratelimiter_uninit(); out: if (ret) pr_info("ratelimiter self-tests: pass\n"); |