提交 999acd9c 编写于 作者: J Johannes Berg 提交者: 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: NJohannes Berg <johannes@sipsolutions.net>
Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
上级 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% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册