From: Greg Rose <gvrose8...@gmail.com>

Upstream commit:
    commit d91fc59cd77c719f33eda65c194ad8f95a055190
    Author: Liping Zhang <zlpnob...@gmail.com>
    Date:   Sun May 7 22:01:55 2017 +0800

    netfilter: introduce nf_conntrack_helper_put helper function

    And convert module_put invocation to nf_conntrack_helper_put, this is
    prepared for the followup patch, which will add a refcnt for cthelper,
    so we can reject the deleting request when cthelper is in use.

    Signed-off-by: Liping Zhang <zlpnob...@gmail.com>
    Signed-off-by: Pablo Neira Ayuso <pa...@netfilter.org>

Applied with additional use of HAVE_NF_CONNTRACK_HELPER_PUT compatibility
flag defined in acinclude.m4.

Signed-off-by: Greg Rose <gvrose8...@gmail.com>
Signed-off-by: Joe Stringer <j...@ovn.org>
---
v2: Shift compat symbol definitions to patch which uses it.
    Add nf_conntrack_helper.h compat header to define the new function.
---
 acinclude.m4                                                 |  2 ++
 datapath/conntrack.c                                         |  4 ++--
 datapath/linux/Modules.mk                                    |  1 +
 .../linux/compat/include/net/netfilter/nf_conntrack_helper.h | 12 ++++++++++++
 4 files changed, 17 insertions(+), 2 deletions(-)
 create mode 100644 
datapath/linux/compat/include/net/netfilter/nf_conntrack_helper.h

diff --git a/acinclude.m4 b/acinclude.m4
index e7affc514811..62a91e650a4a 100644
--- a/acinclude.m4
+++ b/acinclude.m4
@@ -748,6 +748,8 @@ AC_DEFUN([OVS_CHECK_LINUX_COMPAT], [
                         [OVS_DEFINE([HAVE_DEFRAG_ENABLE_TAKES_NET])])
   OVS_GREP_IFELSE([$KSRC/include/net/genetlink.h], [family_list],
                         [OVS_DEFINE([HAVE_GENL_FAMILY_LIST])])
+  OVS_GREP_IFELSE([$KSRC/include/net/netfilter/nf_conntrack_helper.h],
+                  [nf_conntrack_helper_put])
 
   if cmp -s datapath/linux/kcompat.h.new \
             datapath/linux/kcompat.h >/dev/null 2>&1; then
diff --git a/datapath/conntrack.c b/datapath/conntrack.c
index bf28fc071929..01f54bf048c6 100644
--- a/datapath/conntrack.c
+++ b/datapath/conntrack.c
@@ -1164,7 +1164,7 @@ static int ovs_ct_add_helper(struct ovs_conntrack_info 
*info, const char *name,
 
        help = nf_ct_helper_ext_add(info->ct, helper, GFP_KERNEL);
        if (!help) {
-               module_put(helper->me);
+               nf_conntrack_helper_put(helper);
                return -ENOMEM;
        }
 
@@ -1634,7 +1634,7 @@ void ovs_ct_free_action(const struct nlattr *a)
 static void __ovs_ct_free_action(struct ovs_conntrack_info *ct_info)
 {
        if (ct_info->helper)
-               module_put(ct_info->helper->me);
+               nf_conntrack_helper_put(ct_info->helper);
        if (ct_info->ct)
                nf_ct_tmpl_free(ct_info->ct);
 }
diff --git a/datapath/linux/Modules.mk b/datapath/linux/Modules.mk
index 985ffed4557a..eec9f2338d98 100644
--- a/datapath/linux/Modules.mk
+++ b/datapath/linux/Modules.mk
@@ -95,6 +95,7 @@ openvswitch_headers += \
        linux/compat/include/net/netfilter/nf_conntrack.h \
        linux/compat/include/net/netfilter/nf_conntrack_core.h \
        linux/compat/include/net/netfilter/nf_conntrack_expect.h \
+       linux/compat/include/net/netfilter/nf_conntrack_helper.h \
        linux/compat/include/net/netfilter/nf_conntrack_labels.h \
        linux/compat/include/net/netfilter/nf_conntrack_seqadj.h \
        linux/compat/include/net/netfilter/nf_conntrack_zones.h \
diff --git a/datapath/linux/compat/include/net/netfilter/nf_conntrack_helper.h 
b/datapath/linux/compat/include/net/netfilter/nf_conntrack_helper.h
new file mode 100644
index 000000000000..19c35cd95f6f
--- /dev/null
+++ b/datapath/linux/compat/include/net/netfilter/nf_conntrack_helper.h
@@ -0,0 +1,12 @@
+#ifndef _NF_CONNTRACK_HELPER_WRAPPER_H
+#define _NF_CONNTRACK_HELPER_WRAPPER_H
+
+#include_next <net/netfilter/nf_conntrack_helper.h>
+
+#ifndef HAVE_NF_CONNTRACK_HELPER_PUT
+static inline void nf_conntrack_helper_put(struct nf_conntrack_helper *helper) 
{
+       module_put(helper->me);
+}
+#endif
+
+#endif /* _NF_CONNTRACK_HELPER_WRAPPER_H */
-- 
2.11.1

_______________________________________________
dev mailing list
d...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to