]> git.ipfire.org Git - thirdparty/ipset.git/commitdiff
Add compatibility support for bitmap_zalloc() and bitmap_zero()
authorJozsef Kadlecsik <kadlec@netfilter.org>
Mon, 20 Jan 2020 18:59:43 +0000 (19:59 +0100)
committerJozsef Kadlecsik <kadlec@netfilter.org>
Mon, 20 Jan 2020 18:59:43 +0000 (19:59 +0100)
Signed-off-by: Jozsef Kadlecsik <kadlec@netfilter.org>
configure.ac
kernel/include/linux/netfilter/ipset/ip_set_compat.h.in

index a2694bbf0cf15c89b74f76639d60c4f3505ec66a..69a97a9938d9dacd436a381155dd1cf439afd02b 100644 (file)
@@ -429,6 +429,26 @@ else
        AC_SUBST(HAVE_KVFREE, undef)
 fi
 
+AC_MSG_CHECKING([kernel source for bitmap_zalloc])
+if test -f $ksourcedir/include/linux/bitmap.h && \
+   $GREP -q 'bitmap_zalloc' $ksourcedir/include/linux/bitmap.h; then
+       AC_MSG_RESULT(yes)
+       AC_SUBST(HAVE_BITMAP_ZALLOC, define)
+else
+       AC_MSG_RESULT(no)
+       AC_SUBST(HAVE_BITMAP_ZALLOC, undef)
+fi
+
+AC_MSG_CHECKING([kernel source for bitmap_zero])
+if test -f $ksourcedir/include/linux/bitmap.h && \
+   $GREP -q 'bitmap_zero' $ksourcedir/include/linux/bitmap.h; then
+       AC_MSG_RESULT(yes)
+       AC_SUBST(HAVE_BITMAP_ZERO, define)
+else
+       AC_MSG_RESULT(no)
+       AC_SUBST(HAVE_BITMAP_ZERO, undef)
+fi
+
 AC_MSG_CHECKING([kernel source for struct net in struct xt_mtchk_param])
 if test -f $ksourcedir/include/linux/netfilter/x_tables.h && \
    $AWK '/^struct xt_mtchk_param /,/^}/' $ksourcedir/include/linux/netfilter/x_tables.h | \
index d71c3fdd39f5f275e3ada8812453471721050795..57c9996e1857d97a7187a8239a4c224d4230e1e5 100644 (file)
@@ -26,6 +26,8 @@
 #@HAVE_RBTREE_POSTORDER_FOR_EACH_ENTRY_SAFE@ HAVE_RBTREE_POSTORDER_FOR_EACH_ENTRY_SAFE
 #@HAVE_KVCALLOC@ HAVE_KVCALLOC
 #@HAVE_KVFREE@ HAVE_KVFREE
+#@HAVE_BITMAP_ZALLOC@ HAVE_BITMAP_ZALLOC
+#@HAVE_BITMAP_ZERO@ HAVE_BITMAP_ZERO
 #@HAVE_XT_MTCHK_PARAM_STRUCT_NET@ HAVE_XT_MTCHK_PARAM_STRUCT_NET
 #@HAVE_TCF_EMATCH_OPS_CHANGE_ARG_NET@ HAVE_TCF_EMATCH_OPS_CHANGE_ARG_NET
 #@HAVE_TCF_EMATCH_STRUCT_NET@ HAVE_TCF_EMATCH_STRUCT_NET
@@ -253,6 +255,16 @@ static inline void kvfree(const void *addr)
 }
 #endif
 
+#ifndef HAVE_BITMAP_ZALLOC
+#define bitmap_zalloc(nbits, flags)    \
+       kmalloc(BITS_TO_LONGS(nbits) * sizeof(unsigned long), (flags) | __GFP_ZERO)
+#endif
+
+#ifndef HAVE_BITMAP_ZERO
+#define bitmap_zero(dst, nbits)                \
+       memset(dst, 0, BITS_TO_LONGS(nbits) * sizeof(unsigned long))
+#endif
+
 #ifndef HAVE_NLA_PUT_BE16
 static inline int nla_put_be16(struct sk_buff *skb, int attrtype, __be16 value)
 {