Commit 9107dd15 authored by Jeff Garzik's avatar Jeff Garzik

[NET] remove both incorrect and unneeded spinlock from sch_teql

The spinlock was held while calling functions that could block,
while simultaneously being at all times inside the context of
module init/exit.

Thanks to DaveM.
parent 2b65a560
...@@ -456,7 +456,6 @@ static __init void teql_master_setup(struct net_device *dev) ...@@ -456,7 +456,6 @@ static __init void teql_master_setup(struct net_device *dev)
} }
static LIST_HEAD(master_dev_list); static LIST_HEAD(master_dev_list);
static spinlock_t master_dev_lock = SPIN_LOCK_UNLOCKED;
static int max_equalizers = 1; static int max_equalizers = 1;
MODULE_PARM(max_equalizers, "i"); MODULE_PARM(max_equalizers, "i");
MODULE_PARM_DESC(max_equalizers, "Max number of link equalizers"); MODULE_PARM_DESC(max_equalizers, "Max number of link equalizers");
...@@ -481,9 +480,7 @@ int __init teql_init(void) ...@@ -481,9 +480,7 @@ int __init teql_init(void)
} }
master = dev->priv; master = dev->priv;
spin_lock(&master_dev_lock);
list_add_tail(&master->master_list, &master_dev_list); list_add_tail(&master->master_list, &master_dev_list);
spin_unlock(&master_dev_lock);
} }
out: out:
return err; return err;
...@@ -493,17 +490,14 @@ static void __exit teql_exit(void) ...@@ -493,17 +490,14 @@ static void __exit teql_exit(void)
{ {
struct teql_master *master, *nxt; struct teql_master *master, *nxt;
spin_lock(&master_dev_lock);
list_for_each_entry_safe(master, nxt, &master_dev_list, master_list) { list_for_each_entry_safe(master, nxt, &master_dev_list, master_list) {
list_del(&master->master_list); list_del(&master->master_list);
unregister_qdisc(&master->qops); unregister_qdisc(&master->qops);
/* FIXME: we're inside a spinlock; unregister_netdev() blocks */
unregister_netdev(master->dev); unregister_netdev(master->dev);
free_netdev(master->dev); free_netdev(master->dev);
} }
spin_unlock(&master_dev_lock);
} }
module_init(teql_init); module_init(teql_init);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment