• Ben Pfaff's avatar
    openvswitch: Check gso_type for correct sk_buff in queue_gso_packets(). · a1b5d0dd
    Ben Pfaff authored
    At the point where it was used, skb_shinfo(skb)->gso_type referred to a
    post-GSO sk_buff.  Thus, it would always be 0.  We want to know the pre-GSO
    gso_type, so we need to obtain it before segmenting.
    Before this change, the kernel would pass inconsistent data to userspace:
    packets for UDP fragments with nonzero offset would be passed along with
    flow keys that indicate a zero offset (that is, the flow key for "later"
    fragments claimed to be "first" fragments).  This inconsistency tended
    to confuse Open vSwitch userspace, causing it to log messages about
    "failed to flow_del" the flows with "later" fragments.
    Signed-off-by: default avatarBen Pfaff <blp@nicira.com>
    Signed-off-by: default avatarJesse Gross <jesse@nicira.com>
datapath.c 45.3 KB