lkml.org 
[lkml]   [2019]   [May]   [15]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.4 111/266] ipv4: ip_do_fragment: Preserve skb_iif during fragmentation
    Date
    From: Shmulik Ladkani <shmulik@metanetworks.com>

    [ Upstream commit d2f0c961148f65bc73eda72b9fa3a4e80973cb49 ]

    Previously, during fragmentation after forwarding, skb->skb_iif isn't
    preserved, i.e. 'ip_copy_metadata' does not copy skb_iif from given
    'from' skb.

    As a result, ip_do_fragment's creates fragments with zero skb_iif,
    leading to inconsistent behavior.

    Assume for example an eBPF program attached at tc egress (post
    forwarding) that examines __sk_buff->ingress_ifindex:
    - the correct iif is observed if forwarding path does not involve
    fragmentation/refragmentation
    - a bogus iif is observed if forwarding path involves
    fragmentation/refragmentatiom

    Fix, by preserving skb_iif during 'ip_copy_metadata'.

    Signed-off-by: Shmulik Ladkani <shmulik.ladkani@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    ---
    net/ipv4/ip_output.c | 1 +
    1 file changed, 1 insertion(+)

    --- a/net/ipv4/ip_output.c
    +++ b/net/ipv4/ip_output.c
    @@ -475,6 +475,7 @@ static void ip_copy_metadata(struct sk_b
    to->pkt_type = from->pkt_type;
    to->priority = from->priority;
    to->protocol = from->protocol;
    + to->skb_iif = from->skb_iif;
    skb_dst_drop(to);
    skb_dst_copy(to, from);
    to->dev = from->dev;

    \
     
     \ /
      Last update: 2019-05-15 13:06    [W:4.078 / U:25.684 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site