Staging: wlan-ng: p80211netdev.c fix netdev alloc to prevent oops on device start
authorRichard Kennedy <richard@rsk.demon.co.uk>
Mon, 3 Nov 2008 11:09:34 +0000 (11:09 +0000)
committerGreg Kroah-Hartman <gregkh@suse.de>
Tue, 6 Jan 2009 21:51:58 +0000 (13:51 -0800)
a version of this patch is in the wlan-ng_devel tree

initializes netdev correctly to prevent an oops on device start.

Signed-off-by: Richard Kennedy <richard@rsk.demon.co.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
drivers/staging/wlan-ng/p80211netdev.c

index 41b62a3fe5454def9c028a73c4d5d1df703b65bb..89e521183e414666990030e2e8971d85e3b50534 100644 (file)
@@ -814,13 +814,11 @@ int wlan_setup(wlandevice_t *wlandev)
                     (unsigned long)wlandev);
 
        /* Allocate and initialize the struct device */
-       dev = kmalloc(sizeof(netdevice_t), GFP_ATOMIC);
+       dev = alloc_netdev(0,"wlan%d",ether_setup);
        if ( dev == NULL ) {
                WLAN_LOG_ERROR("Failed to alloc netdev.\n");
                result = 1;
        } else {
-               memset( dev, 0, sizeof(netdevice_t));
-               ether_setup(dev);
                wlandev->netdev = dev;
                dev->ml_priv = wlandev;
                dev->hard_start_xmit =  p80211knetdev_hard_start_xmit;
@@ -927,15 +925,9 @@ int register_wlandev(wlandevice_t *wlandev)
 
        DBFENTER;
 
-       i = dev_alloc_name(wlandev->netdev, "wlan%d");
-       if (i >= 0) {
-               i = register_netdev(wlandev->netdev);
-       }
-       if (i != 0) {
-               return -EIO;
-       }
-
-       strcpy(wlandev->name, dev->name);
+       i = register_netdev(wlandev->netdev);
+       if (i)
+               return i;
 
        DBFEXIT;
        return 0;