mac80211: don't allow registering the same rate control twice
Previously, mac80211 would allow registering the same rate control algorithm twice. This is a programming error in the registration and should not happen; additionally the second version could never be selected. Disallow this and warn about it. Signed-off-by: Johannes Berg <johannes@sipsolutions.net> Signed-off-by: John W. Linville <linville@tuxdriver.com>
This commit is contained in:
parent
2bf236d55e
commit
999acd9c33
@ -28,13 +28,22 @@ int ieee80211_rate_control_register(struct rate_control_ops *ops)
|
||||
if (!ops->name)
|
||||
return -EINVAL;
|
||||
|
||||
mutex_lock(&rate_ctrl_mutex);
|
||||
list_for_each_entry(alg, &rate_ctrl_algs, list) {
|
||||
if (!strcmp(alg->ops->name, ops->name)) {
|
||||
/* don't register an algorithm twice */
|
||||
WARN_ON(1);
|
||||
return -EALREADY;
|
||||
}
|
||||
}
|
||||
|
||||
alg = kzalloc(sizeof(*alg), GFP_KERNEL);
|
||||
if (alg == NULL) {
|
||||
mutex_unlock(&rate_ctrl_mutex);
|
||||
return -ENOMEM;
|
||||
}
|
||||
alg->ops = ops;
|
||||
|
||||
mutex_lock(&rate_ctrl_mutex);
|
||||
list_add_tail(&alg->list, &rate_ctrl_algs);
|
||||
mutex_unlock(&rate_ctrl_mutex);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user