diff options
author | Richard Kennedy <richard@rsk.demon.co.uk> | 2008-11-03 06:09:34 -0500 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2009-01-06 16:51:58 -0500 |
commit | ee313528d96cbd9eda568fec11fb6fdae13d30a4 (patch) | |
tree | 2ed2027806719c0972eb501a338a3d8ad2e4165a /drivers/staging/wlan-ng/p80211netdev.c | |
parent | 56afef56eb3323b71b332e890263990926a2c062 (diff) |
Staging: wlan-ng: p80211netdev.c fix netdev alloc to prevent oops on device start
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>
Diffstat (limited to 'drivers/staging/wlan-ng/p80211netdev.c')
-rw-r--r-- | drivers/staging/wlan-ng/p80211netdev.c | 16 |
1 files changed, 4 insertions, 12 deletions
diff --git a/drivers/staging/wlan-ng/p80211netdev.c b/drivers/staging/wlan-ng/p80211netdev.c index 41b62a3fe54..89e521183e4 100644 --- a/drivers/staging/wlan-ng/p80211netdev.c +++ b/drivers/staging/wlan-ng/p80211netdev.c | |||
@@ -814,13 +814,11 @@ int wlan_setup(wlandevice_t *wlandev) | |||
814 | (unsigned long)wlandev); | 814 | (unsigned long)wlandev); |
815 | 815 | ||
816 | /* Allocate and initialize the struct device */ | 816 | /* Allocate and initialize the struct device */ |
817 | dev = kmalloc(sizeof(netdevice_t), GFP_ATOMIC); | 817 | dev = alloc_netdev(0,"wlan%d",ether_setup); |
818 | if ( dev == NULL ) { | 818 | if ( dev == NULL ) { |
819 | WLAN_LOG_ERROR("Failed to alloc netdev.\n"); | 819 | WLAN_LOG_ERROR("Failed to alloc netdev.\n"); |
820 | result = 1; | 820 | result = 1; |
821 | } else { | 821 | } else { |
822 | memset( dev, 0, sizeof(netdevice_t)); | ||
823 | ether_setup(dev); | ||
824 | wlandev->netdev = dev; | 822 | wlandev->netdev = dev; |
825 | dev->ml_priv = wlandev; | 823 | dev->ml_priv = wlandev; |
826 | dev->hard_start_xmit = p80211knetdev_hard_start_xmit; | 824 | dev->hard_start_xmit = p80211knetdev_hard_start_xmit; |
@@ -927,15 +925,9 @@ int register_wlandev(wlandevice_t *wlandev) | |||
927 | 925 | ||
928 | DBFENTER; | 926 | DBFENTER; |
929 | 927 | ||
930 | i = dev_alloc_name(wlandev->netdev, "wlan%d"); | 928 | i = register_netdev(wlandev->netdev); |
931 | if (i >= 0) { | 929 | if (i) |
932 | i = register_netdev(wlandev->netdev); | 930 | return i; |
933 | } | ||
934 | if (i != 0) { | ||
935 | return -EIO; | ||
936 | } | ||
937 | |||
938 | strcpy(wlandev->name, dev->name); | ||
939 | 931 | ||
940 | DBFEXIT; | 932 | DBFEXIT; |
941 | return 0; | 933 | return 0; |