netpoll: don't dereference NULL dev from np
authorPavel Emelyanov <xemul@openvz.org>
Mon, 11 May 2009 00:36:35 +0000 (00:36 +0000)
committerDavid S. Miller <davem@davemloft.net>
Mon, 18 May 2009 03:37:55 +0000 (20:37 -0700)
It looks like the dev in netpoll_poll can be NULL - at lease it's
checked at the function beginning. Thus the dev->netde_ops dereference
looks dangerous.

Signed-off-by: Pavel Emelyanov <xemul@openvz.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/core/netpoll.c

index b5873bdff61207e13b89650c535393db0c44a830..64f51eec6576290e3b2df361316ee5448396642d 100644 (file)
@@ -175,9 +175,13 @@ static void service_arp_queue(struct netpoll_info *npi)
 void netpoll_poll(struct netpoll *np)
 {
        struct net_device *dev = np->dev;
-       const struct net_device_ops *ops = dev->netdev_ops;
+       const struct net_device_ops *ops;
+
+       if (!dev || !netif_running(dev))
+               return;
 
-       if (!dev || !netif_running(dev) || !ops->ndo_poll_controller)
+       ops = dev->netdev_ops;
+       if (!ops->ndo_poll_controller)
                return;
 
        /* Process pending work on NIC */