aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas de Grenier de Latour <degrenier@easyconnect.fr>2006-04-19 10:22:39 +0600
committerGreg Kroah-Hartman <gregkh@suse.de>2006-04-24 09:56:03 -0700
commit9bab38e4ffd67ba44073f8074318e32309f4debd (patch)
tree1b329a076c30f20f1595c9649f60ed27eba94d38
parent5d0b6f2bdaf7e016e750cd24164a241512d968a3 (diff)
[PATCH] Fix hotplug race during device registration
On Sun, 9 Apr 2006 21:56:59 +0400, Sergey Vlasov <vsu@altlinux.ru> wrote: > However, show_address() does not output anything unless > dev->reg_state == NETREG_REGISTERED - and this state is set by > netdev_run_todo() only after netdev_register_sysfs() returns, so in > the meantime (while netdev_register_sysfs() is busy adding the > "statistics" attribute group) some process may see an empty "address" > attribute. I've tried the attached patch, suggested by Sergey Vlasov on hotplug-devel@, and as far as i can test it works just fine. Signed-off-by: Alexander Patrakov <patrakov@ums.usu.ru> Signed-off-by: David Miller <davem@davemloft.net> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-rw-r--r--net/core/dev.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/net/core/dev.c b/net/core/dev.c
index 2afb0de9532..12a214c4e80 100644
--- a/net/core/dev.c
+++ b/net/core/dev.c
@@ -2932,11 +2932,11 @@ void netdev_run_todo(void)
switch(dev->reg_state) {
case NETREG_REGISTERING:
+ dev->reg_state = NETREG_REGISTERED;
err = netdev_register_sysfs(dev);
if (err)
printk(KERN_ERR "%s: failed sysfs registration (%d)\n",
dev->name, err);
- dev->reg_state = NETREG_REGISTERED;
break;
case NETREG_UNREGISTERING: