net/vxlan: Go over all candidate streams for GRO matching
authorOr Gerlitz <ogerlitz@mellanox.com>
Wed, 29 Jan 2014 16:10:10 +0000 (18:10 +0200)
committerDavid S. Miller <davem@davemloft.net>
Fri, 31 Jan 2014 00:25:49 +0000 (16:25 -0800)
The loop in vxlan_gro_receive() over the current set of candidates for
coalescing was wrongly aborted once a match was found. In rare cases,
this can cause a false-positives matching in the next layer GRO checks.

Signed-off-by: Or Gerlitz <ogerlitz@mellanox.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/vxlan.c

index 026a313..3d6cd1c 100644 (file)
@@ -596,10 +596,8 @@ static struct sk_buff **vxlan_gro_receive(struct sk_buff **head, struct sk_buff
                        NAPI_GRO_CB(p)->same_flow = 0;
                        continue;
                }
-               goto found;
        }
 
-found:
        type = eh->h_proto;
 
        rcu_read_lock();