From d825e2a5dcc5193067215cbf2466417cebebab9b Mon Sep 17 00:00:00 2001 From: Jesse Gross Date: Thu, 19 May 2011 13:17:39 -0700 Subject: [PATCH] datapath: Check that netdev vport is fully initialized. Starting in 2.6.37 we have our own flag for identifying net_devices as being attached to OVS. However, it's possible to receive packets before this flag has been applied, resulting in a NULL vport when processing the packet. This checks to make sure that the vport is valid instead of crashing. Bug #5675 Reported-by: Brad Hall Signed-off-by: Jesse Gross Acked-by: Ben Pfaff --- datapath/vport-netdev.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/datapath/vport-netdev.c b/datapath/vport-netdev.c index 18fc5fee..3bab666c 100644 --- a/datapath/vport-netdev.c +++ b/datapath/vport-netdev.c @@ -268,6 +268,11 @@ int netdev_get_mtu(const struct vport *vport) /* Must be called with rcu_read_lock. */ static void netdev_port_receive(struct vport *vport, struct sk_buff *skb) { + if (unlikely(!vport)) { + kfree_skb(skb); + return; + } + /* Make our own copy of the packet. Otherwise we will mangle the * packet for anyone who came before us (e.g. tcpdump via AF_PACKET). * (No one comes after us, since we tell handle_bridge() that we took -- 2.30.2