• Shmulik Ladkani's avatar
    ipv4: ip_do_fragment: Preserve skb_iif during fragmentation · d2f0c961
    Shmulik Ladkani authored
    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: default avatarShmulik Ladkani <shmulik.ladkani@gmail.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    d2f0c961
ip_output.c 40.2 KB