summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSerhey Popovych <serhe.popovych@gmail.com>2020-03-05 17:28:22 +0200
committerJozsef Kadlecsik <kadlec@netfilter.org>2020-03-09 11:48:23 +0100
commit7b2eab581cc982e3a3d2eaba42961e1870957178 (patch)
treeff8b2898e150c7754fd766d10306661262265f48
parentaca0b06d8cc61d7df1cc356632ba6e3e65a1e112 (diff)
downloadipset-7b2eab581cc982e3a3d2eaba42961e1870957178.tar.gz
ip_set: Fix build on kernels without system_power_efficient_wq
This type of workqueue according to comment in <linux/workqueue.h> 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 <serhe.popovych@gmail.com> Signed-off-by: Jozsef Kadlecsik <kadlec@netfilter.org>
-rw-r--r--configure.ac3
-rw-r--r--kernel/include/linux/netfilter/ipset/ip_set_compat.h.in5
2 files changed, 7 insertions, 1 deletions
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