Search Linux Wireless

[PATCH] mac80211: don't allow registering the same rate control twice

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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@xxxxxxxxxxxxxxxx>

---
There could be potential for data corruption here when one
algorithm is registered twice depending on how the algorithm
code is written (it might only expect to be registered once),
so I think this should be applied for 2.6.24.

 net/mac80211/ieee80211_rate.c |   11 ++++++++++-
 1 file changed, 10 insertions(+), 1 deletion(-)

--- linux-2.6.orig/net/mac80211/ieee80211_rate.c	2007-10-28 14:43:47.835043456 +0100
+++ linux-2.6/net/mac80211/ieee80211_rate.c	2007-10-28 14:46:20.907430120 +0100
@@ -28,13 +28,22 @@ int ieee80211_rate_control_register(stru
 	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);
 


-
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Host AP]     [ATH6KL]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [Linux Kernel]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Samba]     [Device Mapper]
  Powered by Linux