[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <CALx6S37Ut1oYbBBwUVtijM_vLqmpbkTbsdMYZA=Qg=yrqjcSXg@mail.gmail.com>
Date: Tue, 9 Feb 2016 16:39:43 +0100
From: Tom Herbert <tom@...bertland.com>
To: Alexander Duyck <aduyck@...antis.com>
Cc: Linux Kernel Network Developers <netdev@...r.kernel.org>,
Alexander Duyck <alexander.duyck@...il.com>,
"David S. Miller" <davem@...emloft.net>
Subject: Re: [net PATCH] net: Copy inner L3 and L4 headers as unaligned on GRE TEB
On Tue, Feb 9, 2016 at 3:14 PM, Alexander Duyck <aduyck@...antis.com> wrote:
> This patch corrects the unaligned accesses seen on GRE TEB tunnels when
> generating hash keys. Specifically what this patch does is make it so that
> we force the use of skb_copy_bits when the GRE inner headers will be
> unaligned due to NET_IP_ALIGNED being a non-zero value.
>
> Signed-off-by: Alexander Duyck <aduyck@...antis.com>
Acked-by: Tom Herbert <tom@...bertland.com>
> ---
>
> I don't have the ability to test it but this should fix flow dissector for
> GRE TEB tunnels traffic seen on architectures that require network and
> transport headers to be 4 byte aligned.
>
> net/core/flow_dissector.c | 7 +++++++
> 1 file changed, 7 insertions(+)
>
> diff --git a/net/core/flow_dissector.c b/net/core/flow_dissector.c
> index 699b2c415cb0..9c181ba7263e 100644
> --- a/net/core/flow_dissector.c
> +++ b/net/core/flow_dissector.c
> @@ -402,6 +402,13 @@ ip_proto_again:
> goto out_bad;
> proto = eth->h_proto;
> nhoff += sizeof(*eth);
> +
> + /* Cap headers that we access via pointers at the
> + * end of the Ethernet header as our maximum alignment
> + * at that point is only 2 bytes.
> + */
> + if (NET_IP_ALIGN)
> + hlen = nhoff;
> }
>
> key_control->flags |= FLOW_DIS_ENCAPSULATION;
>
Powered by blists - more mailing lists