On 07/21/2017 04:46 PM, Joe Stringer wrote:
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 */
LGTM
Thanks Joe!
_______________________________________________
dev mailing list
d...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-dev