mirror of
https://github.com/raspberrypi/linux.git
synced 2025-12-06 18:09:56 +00:00
mac80211: fix divide by zero when NOA update
commit 519ee6918b upstream.
In case of one shot NOA the interval can be 0, catch that
instead of potentially (depending on the driver) crashing
like this:
divide error: 0000 [#1] SMP
[...]
Call Trace:
<IRQ>
[<ffffffffc08e891c>] ieee80211_extend_absent_time+0x6c/0xb0 [mac80211]
[<ffffffffc08e8a17>] ieee80211_update_p2p_noa+0xb7/0xe0 [mac80211]
[<ffffffffc069cc30>] ath9k_p2p_ps_timer+0x170/0x190 [ath9k]
[<ffffffffc070adf8>] ath_gen_timer_isr+0xc8/0xf0 [ath9k_hw]
[<ffffffffc0691156>] ath9k_tasklet+0x296/0x2f0 [ath9k]
[<ffffffff8107ad65>] tasklet_action+0xe5/0xf0
[...]
Signed-off-by: Janusz Dziedzic <janusz.dziedzic@tieto.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
db96a3cfca
commit
901b9f4511
@@ -2951,6 +2951,13 @@ ieee80211_extend_noa_desc(struct ieee80211_noa_data *data, u32 tsf, int i)
|
|||||||
if (end > 0)
|
if (end > 0)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
|
/* One shot NOA */
|
||||||
|
if (data->count[i] == 1)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
if (data->desc[i].interval == 0)
|
||||||
|
return false;
|
||||||
|
|
||||||
/* End time is in the past, check for repetitions */
|
/* End time is in the past, check for repetitions */
|
||||||
skip = DIV_ROUND_UP(-end, data->desc[i].interval);
|
skip = DIV_ROUND_UP(-end, data->desc[i].interval);
|
||||||
if (data->count[i] < 255) {
|
if (data->count[i] < 255) {
|
||||||
|
|||||||
Reference in New Issue
Block a user