From: Johannes Berg Date: Sun, 28 Oct 2007 13:49:33 +0000 (+0100) Subject: mac80211: don't allow registering the same rate control twice X-Git-Url: http://git.cdn.openwrt.org/?a=commitdiff_plain;h=999acd9c339a761a18d625b13001612ac396ee00;p=openwrt%2Fstaging%2Fblogic.git 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 Signed-off-by: John W. Linville --- diff --git a/net/mac80211/ieee80211_rate.c b/net/mac80211/ieee80211_rate.c index e4bd8481554d..7254bd609839 100644 --- a/net/mac80211/ieee80211_rate.c +++ b/net/mac80211/ieee80211_rate.c @@ -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);