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)
}
static LIST_HEAD(master_dev_list);
static spinlock_t master_dev_lock = SPIN_LOCK_UNLOCKED;
static int max_equalizers = 1;
MODULE_PARM(max_equalizers, "i");
MODULE_PARM_DESC(max_equalizers, "Max number of link equalizers");
......@@ -481,9 +480,7 @@ int __init teql_init(void)
}
master = dev->priv;
spin_lock(&master_dev_lock);
list_add_tail(&master->master_list, &master_dev_list);
spin_unlock(&master_dev_lock);
}
out:
return err;
......@@ -493,17 +490,14 @@ static void __exit teql_exit(void)
{
struct teql_master *master, *nxt;
spin_lock(&master_dev_lock);
list_for_each_entry_safe(master, nxt, &master_dev_list, master_list) {
list_del(&master->master_list);
unregister_qdisc(&master->qops);
/* FIXME: we're inside a spinlock; unregister_netdev() blocks */
unregister_netdev(master->dev);
free_netdev(master->dev);
}
spin_unlock(&master_dev_lock);
}
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