lkml.org 
[lkml]   [2016]   [Apr]   [27]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    SubjectRe: [PATCH 3.2 085/115] veth: don’t modify ip s ummed; doing so treats packets with bad checksums as good.
    From
    Date
    On 04/27/2016 05:00 PM, Hannes Frederic Sowa wrote:
    > Hi Ben,
    >
    > On Wed, Apr 27, 2016, at 20:07, Ben Hutchings wrote:
    >> On Wed, 2016-04-27 at 08:59 -0700, Ben Greear wrote:
    >>> On 04/26/2016 04:02 PM, Ben Hutchings wrote:
    >>>>
    >>>> 3.2.80-rc1 review patch. If anyone has any objections, please let me know.
    >>> I would be careful about this. It causes regressions when sending
    >>> PACKET_SOCKET buffers from user-space to veth devices.
    >>>
    >>> There was a proposed upstream fix for the regression, but it has not gone
    >>> into the tree as far as I know.
    >>>
    >>> http://www.spinics.net/lists/netdev/msg370436.html
    >> [...]
    >>
    >> OK, I'll drop this for now.
    >
    > The fall out from not having this patch is in my opinion a bigger
    > fallout than not having this patch. This patch fixes silent data
    > corruption vs. the problem Ben Greear is talking about, which might not
    > be that a common usage.
    >
    > What do others think?
    >
    > Bye,
    > Hannes
    >

    This patch from Cong Wang seems to fix the regression for me, I think it should be added and
    tested in the main tree, and then apply them to stable as a pair.

    http://dmz2.candelatech.com/?p=linux-4.4.dev.y/.git;a=commitdiff;h=8153e983c0e5eba1aafe1fc296248ed2a553f1ac;hp=454b07405d694dad52e7f41af5816eed0190da8a



    diff --git a/net/packet/af_packet.c b/net/packet/af_packet.c
    index da1ae0e..f8cc758 100644 (file)
    --- a/net/packet/af_packet.c
    +++ b/net/packet/af_packet.c
    @@ -1926,6 +1926,7 @@ retry:
    goto out_unlock;
    }

    + skb->ip_summed = CHECKSUM_UNNECESSARY;
    skb->protocol = proto;
    skb->dev = dev;
    skb->priority = sk->sk_priority;
    @@ -2352,6 +2353,7 @@ static int tpacket_fill_skb(struct packet_sock *po, struct sk_buff *skb,

    ph.raw = frame;

    + skb->ip_summed = CHECKSUM_UNNECESSARY;
    skb->protocol = proto;
    skb->dev = dev;
    skb->priority = po->sk.sk_priority;
    @@ -2776,6 +2778,7 @@ static int packet_snd(struct socket *sock, struct msghdr *msg, size_t len)
    goto out_free;
    }

    + skb->ip_summed = CHECKSUM_UNNECESSARY;
    skb->protocol = proto;
    skb->dev = dev;
    skb->priority = sk->sk_priority;
    Thanks,
    Ben

    --
    Ben Greear <greearb@candelatech.com>
    Candela Technologies Inc http://www.candelatech.com

    \
     
     \ /
      Last update: 2016-04-28 02:41    [W:4.268 / U:0.324 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site