diff options
-rw-r--r-- | lib/ratelimit.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/lib/ratelimit.c b/lib/ratelimit.c index 4e520d029d28..a7aaebb7a718 100644 --- a/lib/ratelimit.c +++ b/lib/ratelimit.c @@ -65,8 +65,10 @@ int ___ratelimit(struct ratelimit_state *rs, const char *func) unsigned int rs_flags = READ_ONCE(rs->flags); if (rs_flags & RATELIMIT_INITIALIZED && burst) { - int n_left; + int n_left = atomic_read(&rs->rs_n_left); + if (n_left <= 0) + return 0; n_left = atomic_dec_return(&rs->rs_n_left); if (n_left >= 0) return 1; |