lkml.org 
[lkml]   [2011]   [May]   [26]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    SubjectRe: [patch] net/core/filter.c: Fix build error
    From
    From: Joe Perches <joe@perches.com>
    Date: Thu, 26 May 2011 08:31:06 -0700

    > My suggestion would be to see about again adding
    > #include <linux/ratelimit.h> somehow
    > back to kernel.h which commit 3fff4c42bd0a removed
    > in 2009 because of the spinlock issues.
    >
    > Any suggestion on how best to fix it generically?

    I don't think we want spinlock_t's definition being sucked
    into kernel.h's dependency food chain.

    Even if desirable, I think it'd be quite a bit of surgery,
    too much to do at this stage.

    So for now how about we make the ratelimit warn interfaces be a true,
    instead of a pseudo, dependency on ratelimit.h by moving those
    definitions into ratelimit.h?

    diff --git a/include/asm-generic/bug.h b/include/asm-generic/bug.h
    index 9178484..dfb0ec6 100644
    --- a/include/asm-generic/bug.h
    +++ b/include/asm-generic/bug.h
    @@ -162,46 +162,6 @@ extern void warn_slowpath_null(const char *file, const int line);
    unlikely(__ret_warn_once); \
    })

    -#ifdef CONFIG_PRINTK
    -
    -#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...) \
    -({ \
    - static DEFINE_RATELIMIT_STATE(_rs, \
    - DEFAULT_RATELIMIT_INTERVAL, \
    - DEFAULT_RATELIMIT_BURST); \
    - __WARN_RATELIMIT(condition, &_rs, format); \
    -})
    -
    -#else
    -
    -#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...) \
    -({ \
    - int rtn = WARN(condition, format); \
    - rtn; \
    -})
    -
    -#endif
    -
    /*
    * WARN_ON_SMP() is for cases that the warning is either
    * meaningless for !SMP or may even cause failures.
    diff --git a/include/linux/ratelimit.h b/include/linux/ratelimit.h
    index 03ff67b..2f00715 100644
    --- a/include/linux/ratelimit.h
    +++ b/include/linux/ratelimit.h
    @@ -41,4 +41,44 @@ extern struct ratelimit_state printk_ratelimit_state;
    extern int ___ratelimit(struct ratelimit_state *rs, const char *func);
    #define __ratelimit(state) ___ratelimit(state, __func__)

    +#ifdef CONFIG_PRINTK
    +
    +#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...) \
    +({ \
    + static DEFINE_RATELIMIT_STATE(_rs, \
    + DEFAULT_RATELIMIT_INTERVAL, \
    + DEFAULT_RATELIMIT_BURST); \
    + __WARN_RATELIMIT(condition, &_rs, format); \
    +})
    +
    +#else
    +
    +#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...) \
    +({ \
    + int rtn = WARN(condition, format); \
    + rtn; \
    +})
    +
    +#endif
    +
    #endif /* _LINUX_RATELIMIT_H */
    diff --git a/net/core/filter.c b/net/core/filter.c
    index 0e3622f..36f975f 100644
    --- a/net/core/filter.c
    +++ b/net/core/filter.c
    @@ -38,6 +38,7 @@
    #include <asm/unaligned.h>
    #include <linux/filter.h>
    #include <linux/reciprocal_div.h>
    +#include <linux/ratelimit.h>

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

    \
     
     \ /
      Last update: 2011-05-26 20:41    [W:0.034 / U:30.572 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site