lkml.org 
[lkml]   [2021]   [Jul]   [12]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.13 437/800] xfrm: remove the fragment check for ipv6 beet mode
    Date
    From: Xin Long <lucien.xin@gmail.com>

    [ Upstream commit eebd49a4ffb420a991c606e54aa3c9f02857a334 ]

    In commit 68dc022d04eb ("xfrm: BEET mode doesn't support fragments
    for inner packets"), it tried to fix the issue that in TX side the
    packet is fragmented before the ESP encapping while in the RX side
    the fragments always get reassembled before decapping with ESP.

    This is not true for IPv6. IPv6 is different, and it's using exthdr
    to save fragment info, as well as the ESP info. Exthdrs are added
    in TX and processed in RX both in order. So in the above case, the
    ESP decapping will be done earlier than the fragment reassembling
    in TX side.

    Here just remove the fragment check for the IPv6 inner packets to
    recover the fragments support for BEET mode.

    Fixes: 68dc022d04eb ("xfrm: BEET mode doesn't support fragments for inner packets")
    Reported-by: Xiumei Mu <xmu@redhat.com>
    Signed-off-by: Xin Long <lucien.xin@gmail.com>
    Signed-off-by: Steffen Klassert <steffen.klassert@secunet.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    net/xfrm/xfrm_output.c | 7 -------
    1 file changed, 7 deletions(-)

    diff --git a/net/xfrm/xfrm_output.c b/net/xfrm/xfrm_output.c
    index e4cb0ff4dcf4..ac907b9d32d1 100644
    --- a/net/xfrm/xfrm_output.c
    +++ b/net/xfrm/xfrm_output.c
    @@ -711,15 +711,8 @@ out:
    static int xfrm6_extract_output(struct xfrm_state *x, struct sk_buff *skb)
    {
    #if IS_ENABLED(CONFIG_IPV6)
    - unsigned int ptr = 0;
    int err;

    - if (x->outer_mode.encap == XFRM_MODE_BEET &&
    - ipv6_find_hdr(skb, &ptr, NEXTHDR_FRAGMENT, NULL, NULL) >= 0) {
    - net_warn_ratelimited("BEET mode doesn't support inner IPv6 fragments\n");
    - return -EAFNOSUPPORT;
    - }
    -
    err = xfrm6_tunnel_check_size(skb);
    if (err)
    return err;
    --
    2.30.2


    \
     
     \ /
      Last update: 2021-07-12 10:44    [W:4.040 / U:0.028 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site