On Tue, Feb 9, 2016 at 3:14 PM, Alexander Duyck <adu...@mirantis.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 <adu...@mirantis.com>
Acked-by: Tom Herbert <t...@herbertland.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; >