diff options
Diffstat (limited to 'include/linux/ratelimit.h')
| -rw-r--r-- | include/linux/ratelimit.h | 27 | 
1 files changed, 9 insertions, 18 deletions
diff --git a/include/linux/ratelimit.h b/include/linux/ratelimit.h index e11ccb4cf48d..0a260d8a18bf 100644 --- a/include/linux/ratelimit.h +++ b/include/linux/ratelimit.h @@ -46,20 +46,17 @@ extern int ___ratelimit(struct ratelimit_state *rs, const char *func);  #define WARN_ON_RATELIMIT(condition, state)			\  		WARN_ON((condition) && __ratelimit(state)) -#define __WARN_RATELIMIT(condition, state, format...)		\ -({								\ -	int rtn = 0;						\ -	if (unlikely(__ratelimit(state)))			\ -		rtn = WARN(condition, format);			\ -	rtn;							\ -}) - -#define WARN_RATELIMIT(condition, format...)			\ +#define WARN_RATELIMIT(condition, format, ...)			\  ({								\  	static DEFINE_RATELIMIT_STATE(_rs,			\  				      DEFAULT_RATELIMIT_INTERVAL,	\  				      DEFAULT_RATELIMIT_BURST);	\ -	__WARN_RATELIMIT(condition, &_rs, format);		\ +	int rtn = !!(condition);				\ +								\ +	if (unlikely(rtn && __ratelimit(&_rs)))			\ +		WARN(rtn, format, ##__VA_ARGS__);		\ +								\ +	rtn;							\  })  #else @@ -67,15 +64,9 @@ extern int ___ratelimit(struct ratelimit_state *rs, const char *func);  #define WARN_ON_RATELIMIT(condition, state)			\  	WARN_ON(condition) -#define __WARN_RATELIMIT(condition, state, format...)		\ -({								\ -	int rtn = WARN(condition, format);			\ -	rtn;							\ -}) - -#define WARN_RATELIMIT(condition, format...)			\ +#define WARN_RATELIMIT(condition, format, ...)			\  ({								\ -	int rtn = WARN(condition, format);			\ +	int rtn = WARN(condition, format, ##__VA_ARGS__);	\  	rtn;							\  })  | 
