datapath: Directly use free_netdev for internal devices.
authorJesse Gross <jesse@nicira.com>
Thu, 4 Nov 2010 23:20:32 +0000 (16:20 -0700)
committerJesse Gross <jesse@nicira.com>
Fri, 5 Nov 2010 00:32:49 +0000 (17:32 -0700)
Currently internal devices register a destructor function which
simply calls free_netdev.  Instead we can simply set the destructor
to free_netdev.  In addition to being cleaner, it is also a bug fix
because the module could be unloaded before the destructor is called,
making a call into our code illegal.

Signed-off-by: Jesse Gross <jesse@nicira.com>
Acked-by: Ben Pfaff <blp@nicira.com>
datapath/vport-internal_dev.c

index 84b90b57191a508b33c09d01704a966705101ed8..11221333a6579eab60d88520888d049ebc571261 100644 (file)
@@ -148,11 +148,6 @@ static int internal_dev_change_mtu(struct net_device *netdev, int new_mtu)
        return 0;
 }
 
-static void internal_dev_free(struct net_device *netdev)
-{
-       free_netdev(netdev);
-}
-
 static int internal_dev_do_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
 {
        if (dp_ioctl_hook)
@@ -189,7 +184,7 @@ static void do_setup(struct net_device *netdev)
        netdev->change_mtu = internal_dev_change_mtu;
 #endif
 
-       netdev->destructor = internal_dev_free;
+       netdev->destructor = free_netdev;
        SET_ETHTOOL_OPS(netdev, &internal_dev_ethtool_ops);
        netdev->tx_queue_len = 0;