Skip to content

Commit 86e4ca6

Browse files
committed
bug.h: Move ratelimit warn interfaces to ratelimit.h
As reported by Ingo Molnar, we still have configuration combinations where use of the WARN_RATELIMIT interfaces break the build because dependencies don't get met. Instead of going down the long road of trying to make it so that ratelimit.h can get included by kernel.h or asm-generic/bug.h, just move the interface into ratelimit.h and make users have to include that. Reported-by: Ingo Molnar <mingo@elte.hu> Signed-off-by: David S. Miller <davem@davemloft.net> Acked-by: Randy Dunlap <randy.dunlap@oracle.com>
1 parent 90e6247 commit 86e4ca6

File tree

3 files changed

+41
-40
lines changed

3 files changed

+41
-40
lines changed

include/asm-generic/bug.h

Lines changed: 0 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -162,46 +162,6 @@ extern void warn_slowpath_null(const char *file, const int line);
162162
unlikely(__ret_warn_once); \
163163
})
164164

165-
#ifdef CONFIG_PRINTK
166-
167-
#define WARN_ON_RATELIMIT(condition, state) \
168-
WARN_ON((condition) && __ratelimit(state))
169-
170-
#define __WARN_RATELIMIT(condition, state, format...) \
171-
({ \
172-
int rtn = 0; \
173-
if (unlikely(__ratelimit(state))) \
174-
rtn = WARN(condition, format); \
175-
rtn; \
176-
})
177-
178-
#define WARN_RATELIMIT(condition, format...) \
179-
({ \
180-
static DEFINE_RATELIMIT_STATE(_rs, \
181-
DEFAULT_RATELIMIT_INTERVAL, \
182-
DEFAULT_RATELIMIT_BURST); \
183-
__WARN_RATELIMIT(condition, &_rs, format); \
184-
})
185-
186-
#else
187-
188-
#define WARN_ON_RATELIMIT(condition, state) \
189-
WARN_ON(condition)
190-
191-
#define __WARN_RATELIMIT(condition, state, format...) \
192-
({ \
193-
int rtn = WARN(condition, format); \
194-
rtn; \
195-
})
196-
197-
#define WARN_RATELIMIT(condition, format...) \
198-
({ \
199-
int rtn = WARN(condition, format); \
200-
rtn; \
201-
})
202-
203-
#endif
204-
205165
/*
206166
* WARN_ON_SMP() is for cases that the warning is either
207167
* meaningless for !SMP or may even cause failures.

include/linux/ratelimit.h

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,4 +41,44 @@ extern struct ratelimit_state printk_ratelimit_state;
4141
extern int ___ratelimit(struct ratelimit_state *rs, const char *func);
4242
#define __ratelimit(state) ___ratelimit(state, __func__)
4343

44+
#ifdef CONFIG_PRINTK
45+
46+
#define WARN_ON_RATELIMIT(condition, state) \
47+
WARN_ON((condition) && __ratelimit(state))
48+
49+
#define __WARN_RATELIMIT(condition, state, format...) \
50+
({ \
51+
int rtn = 0; \
52+
if (unlikely(__ratelimit(state))) \
53+
rtn = WARN(condition, format); \
54+
rtn; \
55+
})
56+
57+
#define WARN_RATELIMIT(condition, format...) \
58+
({ \
59+
static DEFINE_RATELIMIT_STATE(_rs, \
60+
DEFAULT_RATELIMIT_INTERVAL, \
61+
DEFAULT_RATELIMIT_BURST); \
62+
__WARN_RATELIMIT(condition, &_rs, format); \
63+
})
64+
65+
#else
66+
67+
#define WARN_ON_RATELIMIT(condition, state) \
68+
WARN_ON(condition)
69+
70+
#define __WARN_RATELIMIT(condition, state, format...) \
71+
({ \
72+
int rtn = WARN(condition, format); \
73+
rtn; \
74+
})
75+
76+
#define WARN_RATELIMIT(condition, format...) \
77+
({ \
78+
int rtn = WARN(condition, format); \
79+
rtn; \
80+
})
81+
82+
#endif
83+
4484
#endif /* _LINUX_RATELIMIT_H */

net/core/filter.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@
3838
#include <asm/unaligned.h>
3939
#include <linux/filter.h>
4040
#include <linux/reciprocal_div.h>
41+
#include <linux/ratelimit.h>
4142

4243
/* No hurry in this branch */
4344
static void *__load_pointer(const struct sk_buff *skb, int k, unsigned int size)

0 commit comments

Comments
 (0)