summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSerhey Popovych <serhe.popovych@gmail.com>2020-03-05 17:28:23 +0200
committerJozsef Kadlecsik <kadlec@netfilter.org>2020-03-09 11:56:12 +0100
commit73dfa4dfe56f748bd419dd79133d4a61e0917e74 (patch)
treedfe6192d8e99d7bb67f53615e61e64302d1f8288
parentbf8533f529b8d78c54816d83391be833e1db824b (diff)
ip_set: Fix build on kernels without INIT_DEFERRABLE_WORK
There was macro rename in kernel with commit 203b42f73174 ("workqueue: make deferrable delayed_work initializer names consistent") that renames INIT_DELAYED_WORK_DEFERRABLE() to INIT_DEFERRABLE_WORK(). 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.ac10
-rw-r--r--kernel/include/linux/netfilter/ipset/ip_set_compat.h.in5
2 files changed, 15 insertions, 0 deletions
diff --git a/configure.ac b/configure.ac
index a03401b..c707755 100644
--- a/configure.ac
+++ b/configure.ac
@@ -207,6 +207,16 @@ if test "$BUILDKMOD" == "yes"
then
dnl Check kernel incompatibilities... Ugly like hell
+AC_MSG_CHECKING([kernel source for INIT_DEFERRABLE_WORK])
+if test -f $ksourcedir/include/linux/workqueue.h && \
+ $GREP -q 'INIT_DEFERRABLE_WORK' $ksourcedir/include/linux/workqueue.h; then
+ AC_MSG_RESULT(yes)
+ AC_SUBST(HAVE_INIT_DEFERRABLE_WORK, define)
+else
+ AC_MSG_RESULT(no)
+ AC_SUBST(HAVE_INIT_DEFERRABLE_WORK, undef)
+fi
+
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
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 0261b8d..deed058 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_INIT_DEFERRABLE_WORK@ HAVE_INIT_DEFERRABLE_WORK
#@HAVE_SYSTEM_POWER_EFFICIENT_WQ@ HAVE_SYSTEM_POWER_EFFICIENT_WQ
#@HAVE_STRUCT_XT_ACTION_PARAM@ HAVE_STRUCT_XT_ACTION_PARAM
#@HAVE_VZALLOC@ HAVE_VZALLOC
@@ -169,6 +170,10 @@ static inline void cond_resched_rcu(void)
#error "NETFILTER_NETLINK must be enabled: select NFACCT/NFQUEUE/LOG over NFNETLINK"
#endif
+#ifndef HAVE_INIT_DEFERRABLE_WORK
+#define INIT_DEFERRABLE_WORK INIT_DELAYED_WORK_DEFERRABLE
+#endif
+
#ifndef HAVE_SYSTEM_POWER_EFFICIENT_EQ
#define system_power_efficient_wq system_wq
#endif