Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

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

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
Loading
Loading
Loading
Loading
+10 −1
Original line number Diff line number Diff line
@@ -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);