--- prism2.c.orig	Tue Apr 23 23:04:04 2002
+++ prism2.c	Tue Apr 23 23:06:06 2002
@@ -65,7 +65,13 @@
 static struct semaphore rtnl_sem = MUTEX;
 #define rtnl_shlock_nowait()    down_trylock(&rtnl_sem)
 #endif
+#define PRISM2_NETDEV_EXTRA IFNAMSIZ
+#define prism2_set_dev_name(dev, pos) (dev)->name = (char *) (pos)
 /* end 2.2 compatibility */
+#else /* kernel < 2.4.0 */
+/* no extra space needed for 2.4.x net_device */
+#define PRISM2_NETDEV_EXTRA 0
+#define prism2_set_dev_name(dev, pos) do { } while (0)
 #endif /* kernel < 2.4.0 */
 
 
@@ -2607,11 +2613,13 @@ int prism2_wds_add(local_info_t *local, 
 		return -EINVAL;
 	}
 
-	wds = (prism2_wds_info_t *) kmalloc(sizeof(*wds), GFP_ATOMIC);
+	wds = (prism2_wds_info_t *) kmalloc(sizeof(*wds) + PRISM2_NETDEV_EXTRA,
+					    GFP_ATOMIC);
 	if (wds == NULL)
 		return -ENOMEM;
 
-	memset(wds, 0, sizeof(*wds));
+	memset(wds, 0, sizeof(*wds) + PRISM2_NETDEV_EXTRA);
+	prism2_set_dev_name(&wds->dev, wds + 1);
 
 	memcpy(wds->remote_addr, remote_addr, ETH_ALEN);
 
@@ -3193,13 +3201,21 @@ local_info_t *prism2_init_local_data(str
 	memset(local->ap, 0, sizeof(struct ap_data));
 
 #ifdef PRISM2_HOSTAPD
-	local->apdev = kmalloc(sizeof(struct net_device), GFP_KERNEL);
+	local->apdev = kmalloc(sizeof(struct net_device) + PRISM2_NETDEV_EXTRA,
+			       GFP_KERNEL);
 	if (local->apdev == NULL)
 		goto fail;
+	memset(local->apdev, 0, sizeof(struct net_device) +
+	       PRISM2_NETDEV_EXTRA);
+	prism2_set_dev_name(local->apdev, local->apdev + 1);
 #endif /* PRISM2_HOSTAPD */
 
-	local->dev = kmalloc(sizeof(struct net_device), GFP_KERNEL);
-	memset(local->dev, 0, sizeof(struct net_device));
+	local->dev = kmalloc(sizeof(struct net_device) + PRISM2_NETDEV_EXTRA,
+			     GFP_KERNEL);
+	if (local->dev == NULL)
+		goto fail;
+	memset(local->dev, 0, sizeof(struct net_device) + PRISM2_NETDEV_EXTRA);
+	prism2_set_dev_name(local->dev, local->dev + 1);
 	local->dev->priv = local;
 
 	local->func = funcs;
@@ -3241,7 +3257,6 @@ local_info_t *prism2_init_local_data(str
 	prism2_setup_dev(local->dev, local, 1);
 
 #ifdef PRISM2_HOSTAPD
-	memset(local->apdev, 0, sizeof(struct net_device));
 	local->apdev->priv = local;
 	prism2_setup_dev(local->apdev, local, 0);
 	local->apdev->hard_start_xmit = prism2_tx_80211;

