lkml.org 
[lkml]   [2019]   [Aug]   [8]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.2 13/56] ip6_tunnel: fix possible use-after-free on xmit
    Date
    From: Haishuang Yan <yanhaishuang@cmss.chinamobile.com>

    [ Upstream commit 01f5bffad555f8e22a61f4b1261fe09cf1b96994 ]

    ip4ip6/ip6ip6 tunnels run iptunnel_handle_offloads on xmit which
    can cause a possible use-after-free accessing iph/ipv6h pointer
    since the packet will be 'uncloned' running pskb_expand_head if
    it is a cloned gso skb.

    Fixes: 0e9a709560db ("ip6_tunnel, ip6_gre: fix setting of DSCP on encapsulated packets")
    Signed-off-by: Haishuang Yan <yanhaishuang@cmss.chinamobile.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    ---
    net/ipv6/ip6_tunnel.c | 6 ++----
    1 file changed, 2 insertions(+), 4 deletions(-)

    --- a/net/ipv6/ip6_tunnel.c
    +++ b/net/ipv6/ip6_tunnel.c
    @@ -1278,12 +1278,11 @@ ip4ip6_tnl_xmit(struct sk_buff *skb, str
    }

    fl6.flowi6_uid = sock_net_uid(dev_net(dev), NULL);
    + dsfield = INET_ECN_encapsulate(dsfield, ipv4_get_dsfield(iph));

    if (iptunnel_handle_offloads(skb, SKB_GSO_IPXIP6))
    return -1;

    - dsfield = INET_ECN_encapsulate(dsfield, ipv4_get_dsfield(iph));
    -
    skb_set_inner_ipproto(skb, IPPROTO_IPIP);

    err = ip6_tnl_xmit(skb, dev, dsfield, &fl6, encap_limit, &mtu,
    @@ -1367,12 +1366,11 @@ ip6ip6_tnl_xmit(struct sk_buff *skb, str
    }

    fl6.flowi6_uid = sock_net_uid(dev_net(dev), NULL);
    + dsfield = INET_ECN_encapsulate(dsfield, ipv6_get_dsfield(ipv6h));

    if (iptunnel_handle_offloads(skb, SKB_GSO_IPXIP6))
    return -1;

    - dsfield = INET_ECN_encapsulate(dsfield, ipv6_get_dsfield(ipv6h));
    -
    skb_set_inner_ipproto(skb, IPPROTO_IPV6);

    err = ip6_tnl_xmit(skb, dev, dsfield, &fl6, encap_limit, &mtu,

    \
     
     \ /
      Last update: 2019-08-08 21:09    [W:4.042 / U:0.180 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site