[ovs-dev] [PATCH v2] datapath: Fix build errors for 4.9.172+ kernels

Yi-Hung Wei yihung.wei at gmail.com
Fri May 24 17:58:58 UTC 2019


On Thu, May 23, 2019 at 4:58 PM Yifeng Sun <pkusunyifeng at gmail.com> wrote:
>
> 4.9.172+ kernel backported upstream patch 70b095c843266
> ("ipv6: remove dependency of nf_defrag_ipv6 on ipv6 module")
> and this caused compilation errors of OVS kernel module.
>
> This patch fixes it by checking and using new functions
> introduced by the upstream patch.
>
> Travis tests passed at
> https://travis-ci.org/yifsun/ovs-travis/builds/536527230
> with latest Linux kernel version.
>
> In addition, this patch doesn't introduce failed tests for latest kernels
> of Ubuntu (bionic, trusty, xenial), fedora, centos 73, rhel (74, 75, 76).
>
> Reported-by: Ilya Maximets <i.maximets at samsung.com>
> Signed-off-by: Yifeng Sun <pkusunyifeng at gmail.com>
> ---
> v1->v2: Fixed at bug that crashes certain kernels. Thanks YiHung!
>
>  datapath/linux/compat/nf_conntrack_reasm.c | 23 ++++++++++++++++++++++-
>  1 file changed, 22 insertions(+), 1 deletion(-)
>
> diff --git a/datapath/linux/compat/nf_conntrack_reasm.c b/datapath/linux/compat/nf_conntrack_reasm.c
> index 9d77d982712c..23904eef08d7 100644
> --- a/datapath/linux/compat/nf_conntrack_reasm.c
> +++ b/datapath/linux/compat/nf_conntrack_reasm.c
>  int rpl_nf_ct_frag6_init(void)
>  {
>         int ret = 0;
> @@ -683,10 +698,16 @@ int rpl_nf_ct_frag6_init(void)
>  #ifdef HAVE_INET_FRAGS_RND
>         nf_frags.hashfn = nf_hashfn;
>         nf_frags.match = ip6_frag_match;
> +       nf_frags.constructor = ip6_frag_init;
> +#else
> +#ifdef HAVE_IPV6_FRAG_H
> +       nf_frags.rhash_params = nfct_rhash_params;
> +       nf_frags.constructor = ip6frag_init;
>  #else
>         nf_frags.rhash_params = ip6_rhash_params;
> -#endif
>         nf_frags.constructor = ip6_frag_init;
> +#endif
> +#endif

Hi Yifeng,

Thanks for the update. Are we replicating "nf_frags.constructor =
ip6_frag_init;" for the 3 cases?

How about the following change?

 int rpl_nf_ct_frag6_init(void)
 {
        int ret = 0;
@@ -684,8 +699,12 @@ int rpl_nf_ct_frag6_init(void)
        nf_frags.hashfn = nf_hashfn;
        nf_frags.match = ip6_frag_match;
 #else
+#ifdef HAVE_IPV6_FRAG_H
+       nf_frags.rhash_params = nfct_rhash_params;
+#else
        nf_frags.rhash_params = ip6_rhash_params;
 #endif
+#endif /* HAVE_INET_FRAGS_RND */
        nf_frags.constructor = ip6_frag_init;

-Yi-Hung

>         nf_frags.destructor = NULL;
>         nf_frags.qsize = sizeof(struct frag_queue);
>         nf_frags.frag_expire = nf_ct_frag6_expire;
> --
> 2.7.4
>
> _______________________________________________
> dev mailing list
> dev at openvswitch.org
> https://mail.openvswitch.org/mailman/listinfo/ovs-dev


More information about the dev mailing list