skb_gso_segment() has the following comment: * It may return NULL if the skb requires no segmentation. This is * only possible when GSO is used for verifying header integrity.
Somehow queue_gso_packets() has never hit this case before, but some failures have suddenly been reported. This commit should fix the problem. Bug #14772. Reported-by: Deepesh Govindan <dgovin...@vmware.com>. Signed-off-by: Ben Pfaff <b...@nicira.com> --- I don't know how to trigger this condition, so I haven't tested this patch beyond verifying that it compiles against the Linux 3.2 kernel on which the problem was reported. The patch was generated against branch-1.7 because that's where the problem occurred; it looks like it should apply cleanly against master also. datapath/datapath.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/datapath/datapath.c b/datapath/datapath.c index 641c812..6ae4711 100644 --- a/datapath/datapath.c +++ b/datapath/datapath.c @@ -414,6 +414,8 @@ static int queue_gso_packets(struct net *net, int dp_ifindex, segs = skb_gso_segment(skb, NETIF_F_SG | NETIF_F_HW_CSUM); if (IS_ERR(segs)) return PTR_ERR(segs); + if (!segs) + return queue_userspace_packet(net, dp_ifindex, skb, upcall_info); /* Queue all of the segments. */ skb = segs; -- 1.7.10.4 _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev