[ovs-dev] [PATCH 2/2] datapath: Remove OVS_FRAGMENT_BACKPORT

Joe Stringer joe at ovn.org
Wed Feb 24 01:01:19 UTC 2016


On 19 February 2016 at 16:03, Pravin B Shelar <pshelar at ovn.org> wrote:
> @@ -119,25 +119,9 @@ static inline int rpl_ip_do_fragment(struct sock *sk, struct sk_buff *skb,
>  int rpl_ip_defrag(struct sk_buff *skb, u32 user);
>  #define ip_defrag rpl_ip_defrag
>
> +#endif /* HAVE_CORRECT_MRU_HANDLING */
>  int __init rpl_ipfrag_init(void);
>  void rpl_ipfrag_fini(void);
> -#else /* HAVE_CORRECT_MRU_HANDLING || !OVS_FRAGMENT_BACKPORT */
> -
> -/* We have no good way to detect the presence of upstream commit 8282f27449bf
> - * ("inet: frag: Always orphan skbs inside ip_defrag()"), but it should be
> - * always included in kernels 4.5+. */
> -#if LINUX_VERSION_CODE < KERNEL_VERSION(4,5,0)
> -static inline int rpl_ip_defrag(struct sk_buff *skb, u32 user)
> -{
> -       skb_orphan(skb);
> -       return ip_defrag(skb, user);
> -}
> -#define ip_defrag rpl_ip_defrag
> -#endif

Quick comment on this piece; it fixes an issue that would be seen on
kernels 4.4 and earlier. Kernels <4.2 will use the full ip_defrag
backport, so the fix is still provided there. Upstream on kernel.org,
kernels 4.2 and 4.3 are EOL'd, and the upstream fix was queued up for
-stable, so the affected kernels are fairly minimal. The only
exception I'm aware of would be those using Ubuntu 15.10, which ships
a 4.2 kernel.

Given the small set of affected kernels, and that the issue requires
use of conntrack on IP fragments, passing the packets to/from the
local stack to trigger the BUG, this is probably fine. Alternatively
we could consider keeping this in the
"!defined(HAVE_CORRECT_MRU_HANDLING) &&  LINUX_VERSION_CODE <
KERNEL_VERSION(4,5,0)" case.



More information about the dev mailing list