Commit 999acd9c authored by Johannes Berg's avatar Johannes Berg Committed by David S. Miller

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: default avatarJohannes Berg <johannes@sipsolutions.net>
Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
parent 2bf236d5
...@@ -28,13 +28,22 @@ int ieee80211_rate_control_register(struct rate_control_ops *ops) ...@@ -28,13 +28,22 @@ int ieee80211_rate_control_register(struct rate_control_ops *ops)
if (!ops->name) if (!ops->name)
return -EINVAL; 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); alg = kzalloc(sizeof(*alg), GFP_KERNEL);
if (alg == NULL) { if (alg == NULL) {
mutex_unlock(&rate_ctrl_mutex);
return -ENOMEM; return -ENOMEM;
} }
alg->ops = ops; alg->ops = ops;
mutex_lock(&rate_ctrl_mutex);
list_add_tail(&alg->list, &rate_ctrl_algs); list_add_tail(&alg->list, &rate_ctrl_algs);
mutex_unlock(&rate_ctrl_mutex); mutex_unlock(&rate_ctrl_mutex);
......
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