aboutsummaryrefslogtreecommitdiffstats
path: root/net/mac80211
diff options
context:
space:
mode:
authorMohammed Shafi Shajakhan <mohammed@qca.qualcomm.com>2012-02-20 10:05:31 +0530
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2012-03-12 10:32:56 -0700
commit34a9660ba1a8b98adf852f4f1090bdf084ccf991 (patch)
tree0f4e9a2202d432d961e2d3c718569d08757088f2 /net/mac80211
parent3c156187b23b66ce205a7d8d93ad6ff567fc6608 (diff)
downloadkernel_samsung_smdk4412-34a9660ba1a8b98adf852f4f1090bdf084ccf991.zip
kernel_samsung_smdk4412-34a9660ba1a8b98adf852f4f1090bdf084ccf991.tar.gz
kernel_samsung_smdk4412-34a9660ba1a8b98adf852f4f1090bdf084ccf991.tar.bz2
mac80211: zero initialize count field in ieee80211_tx_rate
commit 8617b093d0031837a7be9b32bc674580cfb5f6b5 upstream. rate control algorithms concludes the rate as invalid with rate[i].idx < -1 , while they do also check for rate[i].count is non-zero. it would be safer to zero initialize the 'count' field. recently we had a ath9k rate control crash where the ath9k rate control in ath_tx_status assumed to check only for rate[i].count being non-zero in one instance and ended up in using invalid rate index for 'connection monitoring NULL func frames' which eventually lead to the crash. thanks to Pavel Roskin for fixing it and finding the root cause. https://bugzilla.redhat.com/show_bug.cgi?id=768639 Cc: Pavel Roskin <proski@gnu.org> Signed-off-by: Mohammed Shafi Shajakhan <mohammed@qca.qualcomm.com> Signed-off-by: John W. Linville <linville@tuxdriver.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'net/mac80211')
-rw-r--r--net/mac80211/rate.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/net/mac80211/rate.c b/net/mac80211/rate.c
index 3d5a2cb..816590b 100644
--- a/net/mac80211/rate.c
+++ b/net/mac80211/rate.c
@@ -314,7 +314,7 @@ void rate_control_get_rate(struct ieee80211_sub_if_data *sdata,
for (i = 0; i < IEEE80211_TX_MAX_RATES; i++) {
info->control.rates[i].idx = -1;
info->control.rates[i].flags = 0;
- info->control.rates[i].count = 1;
+ info->control.rates[i].count = 0;
}
if (sdata->local->hw.flags & IEEE80211_HW_HAS_RATE_CONTROL)