]> git.baikalelectronics.ru Git - kernel.git/commit
flow-dissector: Fix alignment issue in __skb_flow_get_ports
authorAlexander Duyck <alexander.h.duyck@redhat.com>
Fri, 10 Oct 2014 19:09:12 +0000 (12:09 -0700)
committerDavid S. Miller <davem@davemloft.net>
Fri, 10 Oct 2014 19:33:47 +0000 (15:33 -0400)
commit631bf5c208310a34729ddf34a2be4f84a21e6b59
treed5e29d77ae2ec4e10af7220cd29d06f045ddbda2
parent5b5bbabf413932be71c547febaa79081e01264d7
flow-dissector: Fix alignment issue in __skb_flow_get_ports

This patch addresses a kernel unaligned access bug seen on a sparc64 system
with an igb adapter.  Specifically the __skb_flow_get_ports was returning a
be32 pointer which was then having the value directly returned.

In order to prevent this it is actually easier to simply not populate the
ports or address values when an skb is not present.  In this case the
assumption is that the data isn't needed and rather than slow down the
faster aligned accesses by making them have to assume the unaligned path on
architectures that don't support efficent unaligned access it makes more
sense to simply switch off the bits that were copying the source and
destination address/port for the case where we only care about the protocol
types and lengths which are normally 16 bit fields anyway.

Reported-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Alexander Duyck <alexander.h.duyck@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/core/flow_dissector.c