netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] Prevent "eth0: driver changed get_stats after register" lying
@ 2003-10-18 20:46 Russell King
  2003-10-18 20:47 ` Russell King
  2003-10-19  7:06 ` David S. Miller
  0 siblings, 2 replies; 3+ messages in thread
From: Russell King @ 2003-10-18 20:46 UTC (permalink / raw)
  To: netdev

Hi,

There appears to be a race condition between netdev_register_sysfs
and hotplug.  I'm seeing the message in the subject upon initialisation
of pcnet_cs.

We set "dev->last_stats" after we have registered the class device.
During class device registration, we trigger the hotplug scripts,
which can in turn bring up the interface.  This in turn checks to
see if "dev->last_stats == dev->get_stats", and, since we haven't
set dev->last_stats yet, we complain.

Here is a patch against 2.6.0-test8 which moves the initialisation
of last_stats such that we avoid the race.

--- orig/net/core/net-sysfs.c	Sat Oct 18 00:00:38 2003
+++ linux/net/core/net-sysfs.c	Sat Oct 18 21:23:15 2003
@@ -408,6 +408,7 @@
 
 	class_dev->class = &net_class;
 	class_dev->class_data = net;
+	net->last_stats = net->get_stats;
 
 	strlcpy(class_dev->class_id, net->name, BUS_ID_SIZE);
 	if ((ret = class_device_register(class_dev)))
@@ -419,7 +420,6 @@
 	}
 
 
-	net->last_stats = net->get_stats;
 	if (net->get_stats &&
 	    (ret = sysfs_create_group(&class_dev->kobj, &netstat_group)))
 		goto out_unreg; 


-- 
Russell King
 Linux kernel    2.6 ARM Linux   - http://www.arm.linux.org.uk/
 maintainer of:  2.6 PCMCIA      - http://pcmcia.arm.linux.org.uk/
                 2.6 Serial core

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

end of thread, other threads:[~2003-10-19  7:06 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2003-10-18 20:46 [PATCH] Prevent "eth0: driver changed get_stats after register" lying Russell King
2003-10-18 20:47 ` Russell King
2003-10-19  7:06 ` David S. Miller

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).