From 7b2eab581cc982e3a3d2eaba42961e1870957178 Mon Sep 17 00:00:00 2001 From: Serhey Popovych Date: Thu, 5 Mar 2020 17:28:22 +0200 Subject: ip_set: Fix build on kernels without system_power_efficient_wq This type of workqueue according to comment in is same as regular @system_wq when power efficiency scheduler options disabled. For old kernels where @system_power_efficient_wq is not available use regular @system_wq to support ipset on kernels below 3.11. Fixes: 33f08da28324 ("netfilter: ipset: Fix "INFO: rcu detected stall in hash_xxx" reports") Signed-off-by: Serhey Popovych Signed-off-by: Jozsef Kadlecsik --- configure.ac | 3 ++- kernel/include/linux/netfilter/ipset/ip_set_compat.h.in | 5 +++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/configure.ac b/configure.ac index 0167374..b7b69d1 100644 --- a/configure.ac +++ b/configure.ac @@ -211,9 +211,10 @@ AC_MSG_CHECKING([kernel source for system_power_efficient_wq]) if test -f $ksourcedir/include/linux/workqueue.h && \ $GREP -q 'system_power_efficient_wq' $ksourcedir/include/linux/workqueue.h; then AC_MSG_RESULT(yes) + AC_SUBST(HAVE_SYSTEM_POWER_EFFICIENT_WQ, define) else AC_MSG_RESULT(no) - AC_MSG_ERROR([Kernel source tree is too old, at least v3.11 is required]) + AC_SUBST(HAVE_SYSTEM_POWER_EFFICIENT_WQ, undef) fi AC_MSG_CHECKING([kernel source for struct xt_action_param]) diff --git a/kernel/include/linux/netfilter/ipset/ip_set_compat.h.in b/kernel/include/linux/netfilter/ipset/ip_set_compat.h.in index 57c9996..0261b8d 100644 --- a/kernel/include/linux/netfilter/ipset/ip_set_compat.h.in +++ b/kernel/include/linux/netfilter/ipset/ip_set_compat.h.in @@ -5,6 +5,7 @@ * xt_set.c, ip_set_core.c, ip_set_getport.c, pfxlen.c too. */ +#@HAVE_SYSTEM_POWER_EFFICIENT_WQ@ HAVE_SYSTEM_POWER_EFFICIENT_WQ #@HAVE_STRUCT_XT_ACTION_PARAM@ HAVE_STRUCT_XT_ACTION_PARAM #@HAVE_VZALLOC@ HAVE_VZALLOC #@HAVE_ETHER_ADDR_EQUAL@ HAVE_ETHER_ADDR_EQUAL @@ -168,6 +169,10 @@ static inline void cond_resched_rcu(void) #error "NETFILTER_NETLINK must be enabled: select NFACCT/NFQUEUE/LOG over NFNETLINK" #endif +#ifndef HAVE_SYSTEM_POWER_EFFICIENT_EQ +#define system_power_efficient_wq system_wq +#endif + #ifndef HAVE_STRUCT_XT_ACTION_PARAM #define xt_action_param xt_match_param #endif -- cgit v1.2.3