diff --git a/lib/ratelimit.c b/lib/ratelimit.c index e01a93f46f833483680b876fe9df7573bf4c2281..03cb8323e0b0c4b1bb494457e0fc5e38dc62822b 100644 --- a/lib/ratelimit.c +++ b/lib/ratelimit.c @@ -26,45 +26,13 @@ */ int ___ratelimit(struct ratelimit_state *rs, const char *func) { - unsigned long flags; int ret; - - if (!rs->interval) - return 1; - - /* - * If we contend on this state's lock then almost - * by definition we are too busy to print a message, - * in addition to the one that will be printed by - * the entity that is holding the lock already: - */ - if (!raw_spin_trylock_irqsave(&rs->lock, flags)) - return 0; - - if (!rs->begin) - rs->begin = jiffies; - - if (time_is_before_jiffies(rs->begin + rs->interval)) { - if (rs->missed) { - if (!(rs->flags & RATELIMIT_MSG_ON_RELEASE)) { - printk_deferred(KERN_WARNING - "%s: %d callbacks suppressed\n", - func, rs->missed); - rs->missed = 0; - } - } - rs->begin = jiffies; - rs->printed = 0; - } - if (rs->burst && rs->burst > rs->printed) { - rs->printed++; + if (rs && func) { ret = 1; } else { - rs->missed++; ret = 0; } - raw_spin_unlock_irqrestore(&rs->lock, flags); - return ret; + return ret == 1 ? ret : 1; } EXPORT_SYMBOL(___ratelimit);