mac80211/minstrel: fix NULL pointer dereference issue
When priv_sta == NULL, mi->prev_sample is dereferenced too early. Move the assignment further down, after the rate_control_send_low call. Reported-by: Krzysztof Mazur <krzysiek@podlesie.net> Cc: stable@vger.kernel.org # 3.10 Signed-off-by: Felix Fietkau <nbd@openwrt.org> Signed-off-by: Johannes Berg <johannes.berg@intel.com>
This commit is contained in:
committed by
Johannes Berg
parent
6b0f32745d
commit
5c9fc93bc9
@@ -290,7 +290,7 @@ minstrel_get_rate(void *priv, struct ieee80211_sta *sta,
|
|||||||
struct minstrel_rate *msr, *mr;
|
struct minstrel_rate *msr, *mr;
|
||||||
unsigned int ndx;
|
unsigned int ndx;
|
||||||
bool mrr_capable;
|
bool mrr_capable;
|
||||||
bool prev_sample = mi->prev_sample;
|
bool prev_sample;
|
||||||
int delta;
|
int delta;
|
||||||
int sampling_ratio;
|
int sampling_ratio;
|
||||||
|
|
||||||
@@ -314,6 +314,7 @@ minstrel_get_rate(void *priv, struct ieee80211_sta *sta,
|
|||||||
(mi->sample_count + mi->sample_deferred / 2);
|
(mi->sample_count + mi->sample_deferred / 2);
|
||||||
|
|
||||||
/* delta < 0: no sampling required */
|
/* delta < 0: no sampling required */
|
||||||
|
prev_sample = mi->prev_sample;
|
||||||
mi->prev_sample = false;
|
mi->prev_sample = false;
|
||||||
if (delta < 0 || (!mrr_capable && prev_sample))
|
if (delta < 0 || (!mrr_capable && prev_sample))
|
||||||
return;
|
return;
|
||||||
|
|||||||
Reference in New Issue
Block a user