]> granicus.if.org Git - ipset/commitdiff
net: use the new API kvfree()
authorWANG Cong <xiyou.wangcong@gmail.com>
Mon, 3 Nov 2014 16:35:30 +0000 (17:35 +0100)
committerJozsef Kadlecsik <kadlec@blackhole.kfki.hu>
Mon, 3 Nov 2014 16:35:30 +0000 (17:35 +0100)
It is available since v3.15-rc5.

Cc: Pablo Neira Ayuso <pablo@netfilter.org>
Cc: "David S. Miller" <davem@davemloft.net>
Signed-off-by: Cong Wang <xiyou.wangcong@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
configure.ac
kernel/include/linux/netfilter/ipset/ip_set_compat.h.in
kernel/net/netfilter/ipset/ip_set_core.c

index 8fdac15dd00b9c22037a7898703822ae0723bcfe..10529af961044699a260d0426128835207a5f1ef 100644 (file)
@@ -323,6 +323,16 @@ else
        AC_SUBST(HAVE_RBTREE_POSTORDER_FOR_EACH_ENTRY_SAFE, undef)
 fi
 
+AC_MSG_CHECKING([kernel source for kvfree])
+if test -f $ksourcedir/include/linux/mm.h && \
+   $GREP -q 'kvfree' $ksourcedir/include/linux/mm.h; then
+       AC_MSG_RESULT(yes)
+       AC_SUBST(HAVE_KVFREE, define)
+else
+       AC_MSG_RESULT(no)
+       AC_SUBST(HAVE_KVFREE, undef)
+fi
+
 AC_MSG_CHECKING([kernel source for struct net_generic])
 if test -f $ksourcedir/include/net/netns/generic.h && \
    $GREP -q 'struct net_generic' $ksourcedir/include/net/netns/generic.h; then
index 0966289f41afa47c16fb0043cc1666331cddd1f5..d38197c886ecf49d8b78eaba201e563fc926d96f 100644 (file)
@@ -35,6 +35,7 @@
 #@HAVE_NET_OPS_ID@ HAVE_NET_OPS_ID
 #@HAVE_USER_NS_IN_STRUCT_NET@ HAVE_USER_NS_IN_STRUCT_NET
 #@HAVE_RBTREE_POSTORDER_FOR_EACH_ENTRY_SAFE@ HAVE_RBTREE_POSTORDER_FOR_EACH_ENTRY_SAFE
+#@HAVE_KVFREE@ HAVE_KVFREE
 
 /* Not everything could be moved here. Compatibility stuffs can be found in
  * xt_set.c, ip_set_core.c, ip_set_getport.c, pfxlen.c too.
@@ -115,6 +116,16 @@ static inline int nla_put_net64(struct sk_buff *skb, int attrtype, __be64 value)
 #define unlock_nfnl()          nfnl_unlock()
 #endif
 
+#ifndef HAVE_KVFREE
+static inline void kvfree(const void *addr)
+{
+       if (is_vmalloc_addr(addr))
+               vfree(addr);
+       else
+               kfree(addr);
+}
+#endif
+
 #ifdef NLA_PUT_NET16
 static inline int nla_put_be16(struct sk_buff *skb, int attrtype, __be16 value)
 {
index bd45302d4b93f7f032527e34805e5609bdd3f040..d37ee691bbbb20d65d8dac5c5d613087b7289ba0 100644 (file)
@@ -276,10 +276,7 @@ ip_set_free(void *members)
 {
        pr_debug("%p: free with %s\n", members,
                 is_vmalloc_addr(members) ? "vfree" : "kfree");
-       if (is_vmalloc_addr(members))
-               vfree(members);
-       else
-               kfree(members);
+       kvfree(members);
 }
 EXPORT_SYMBOL_GPL(ip_set_free);