diff options
author | <herbert@gondor.apana.org.au> | 2005-05-12 20:11:55 -0400 |
---|---|---|
committer | Jeff Garzik <jgarzik@pobox.com> | 2005-05-12 20:11:55 -0400 |
commit | b1fc5505e0dbcc3fd7c75bfe6bee39ec50080963 (patch) | |
tree | f8c0bb679dc8e72816e16820c3dbcccf924097eb /drivers/net/eexpress.c | |
parent | 88d7bd8cb9eb8d64bf7997600b0d64f7834047c5 (diff) |
[netdrvr] Fix register_netdev() races in older ISA net drivers
Diffstat (limited to 'drivers/net/eexpress.c')
-rw-r--r-- | drivers/net/eexpress.c | 12 |
1 files changed, 5 insertions, 7 deletions
diff --git a/drivers/net/eexpress.c b/drivers/net/eexpress.c index fc8e7947b334..82bd356e4f3a 100644 --- a/drivers/net/eexpress.c +++ b/drivers/net/eexpress.c | |||
@@ -436,11 +436,8 @@ struct net_device * __init express_probe(int unit) | |||
436 | netdev_boot_setup_check(dev); | 436 | netdev_boot_setup_check(dev); |
437 | 437 | ||
438 | err = do_express_probe(dev); | 438 | err = do_express_probe(dev); |
439 | if (!err) { | 439 | if (!err) |
440 | err = register_netdev(dev); | 440 | return dev; |
441 | if (!err) | ||
442 | return dev; | ||
443 | } | ||
444 | free_netdev(dev); | 441 | free_netdev(dev); |
445 | return ERR_PTR(err); | 442 | return ERR_PTR(err); |
446 | } | 443 | } |
@@ -1205,7 +1202,8 @@ static int __init eexp_hw_probe(struct net_device *dev, unsigned short ioaddr) | |||
1205 | dev->set_multicast_list = &eexp_set_multicast; | 1202 | dev->set_multicast_list = &eexp_set_multicast; |
1206 | dev->tx_timeout = eexp_timeout; | 1203 | dev->tx_timeout = eexp_timeout; |
1207 | dev->watchdog_timeo = 2*HZ; | 1204 | dev->watchdog_timeo = 2*HZ; |
1208 | return 0; | 1205 | |
1206 | return register_netdev(dev); | ||
1209 | } | 1207 | } |
1210 | 1208 | ||
1211 | /* | 1209 | /* |
@@ -1716,7 +1714,7 @@ int init_module(void) | |||
1716 | break; | 1714 | break; |
1717 | printk(KERN_NOTICE "eexpress.c: Module autoprobe not recommended, give io=xx.\n"); | 1715 | printk(KERN_NOTICE "eexpress.c: Module autoprobe not recommended, give io=xx.\n"); |
1718 | } | 1716 | } |
1719 | if (do_express_probe(dev) == 0 && register_netdev(dev) == 0) { | 1717 | if (do_express_probe(dev) == 0) { |
1720 | dev_eexp[this_dev] = dev; | 1718 | dev_eexp[this_dev] = dev; |
1721 | found++; | 1719 | found++; |
1722 | continue; | 1720 | continue; |