netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* RE: [PATCH 2.5.70] e100 initialize fields prior to register_netdevice
@ 2003-05-29 22:45 Feldman, Scott
  0 siblings, 0 replies; 4+ messages in thread
From: Feldman, Scott @ 2003-05-29 22:45 UTC (permalink / raw)
  To: Jeff Garzik, Stephen Hemminger; +Cc: David S. Miller, netdev

> Agreed.  I consider this a rather serious bug, that could 
> cause crashes in multiple corner cases; sysfs being only 
> one of those cases.
> 
> I'm going to go ahead and apply this to 2.5.
> 
> Stephen, could I get you to send me a similar patch for 2.4? 
> (it doesn't apply cleanly)  It's very much a bug in 2.4 also.

2.4 e100 should be fine, as this breakage was just introduced in last
patchset for 2.5 (only).

Thanks Stephen.

-scott

^ permalink raw reply	[flat|nested] 4+ messages in thread
* [PATCH 2.5.70] e100 initialize fields prior to register_netdevice
@ 2003-05-29 17:36 Stephen Hemminger
  0 siblings, 0 replies; 4+ messages in thread
From: Stephen Hemminger @ 2003-05-29 17:36 UTC (permalink / raw)
  To: David S. Miller, Scott Feldman; +Cc: netdev

The e100 driver sets many of the fields in the netdevice structure after
calling the register function.  This confuses the sysfs setup, because
it uses the presence of the get_stats function pointer to decide whether
to setup a statistics directory or not.  The earlier patch to net-sysfs
keeps this from causing a crash.

This patch moves the initialization earlier before registration.  It probably
closes other races as well, where some program could access the e100 driver
before the pointers were setup.

--- linux-2.5/drivers/net/e100/e100_main.c	2003-05-27 11:04:34.000000000 -0700
+++ linux-2.5-sysfs/drivers/net/e100/e100_main.c	2003-05-29 08:56:47.000000000 -0700
@@ -614,6 +614,22 @@
 		goto err_dealloc;
 	}
 
+	dev->vlan_rx_register = e100_vlan_rx_register;
+	dev->vlan_rx_add_vid = e100_vlan_rx_add_vid;
+	dev->vlan_rx_kill_vid = e100_vlan_rx_kill_vid;
+	dev->irq = pcid->irq;
+	dev->open = &e100_open;
+	dev->hard_start_xmit = &e100_xmit_frame;
+	dev->stop = &e100_close;
+	dev->change_mtu = &e100_change_mtu;
+	dev->get_stats = &e100_get_stats;
+	dev->set_multicast_list = &e100_set_multi;
+	dev->set_mac_address = &e100_set_mac;
+	dev->do_ioctl = &e100_ioctl;
+	if (bdp->flags & USE_IPCB)
+		dev->features = NETIF_F_SG | NETIF_F_HW_CSUM |
+				NETIF_F_HW_VLAN_TX | NETIF_F_HW_VLAN_RX;
+
 	if ((rc = register_netdev(dev)) != 0) {
 		goto err_pci;
 	}
@@ -660,23 +676,6 @@
                 goto err_unregister_netdev;
 	}
 	
-	dev->vlan_rx_register = e100_vlan_rx_register;
-	dev->vlan_rx_add_vid = e100_vlan_rx_add_vid;
-	dev->vlan_rx_kill_vid = e100_vlan_rx_kill_vid;
-	dev->irq = pcid->irq;
-	dev->open = &e100_open;
-	dev->hard_start_xmit = &e100_xmit_frame;
-	dev->stop = &e100_close;
-	dev->change_mtu = &e100_change_mtu;
-	dev->get_stats = &e100_get_stats;
-	dev->set_multicast_list = &e100_set_multi;
-	dev->set_mac_address = &e100_set_mac;
-	dev->do_ioctl = &e100_ioctl;
-
-	if (bdp->flags & USE_IPCB)
-	dev->features = NETIF_F_SG | NETIF_F_HW_CSUM |
-			NETIF_F_HW_VLAN_TX | NETIF_F_HW_VLAN_RX;
-		
 	e100nics++;
 
 	e100_get_speed_duplex_caps(bdp);

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2003-05-30  0:09 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
     [not found] <C6F5CF431189FA4CBAEC9E7DD5441E0101BE5F5E@orsmsx402.jf.intel.com>
2003-05-29 23:48 ` [PATCH 2.5.70] e100 initialize fields prior to register_netdevice Feldman, Scott
2003-05-30  0:09   ` Jeff Garzik
2003-05-29 22:45 Feldman, Scott
  -- strict thread matches above, loose matches on Subject: below --
2003-05-29 17:36 Stephen Hemminger

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).