• Alexander Duyck's avatar
    flow-dissector: Fix alignment issue in __skb_flow_get_ports · 5af7fb6e
    Alexander Duyck authored
    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: default avatarDavid S. Miller <davem@davemloft.net>
    Signed-off-by: default avatarAlexander Duyck <alexander.h.duyck@redhat.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    5af7fb6e
flow_dissector.c 11.2 KB