diff --git a/net/mac80211/scan.c b/net/mac80211/scan.c index cb7079071885..88ee1ce44e8e 100644 --- a/net/mac80211/scan.c +++ b/net/mac80211/scan.c @@ -369,6 +369,9 @@ static bool ieee80211_prep_hw_scan(struct ieee80211_sub_if_data *sdata) return false; if (ieee80211_hw_check(&local->hw, SINGLE_SCAN_ON_ALL_BANDS)) { + if (WARN_ON_ONCE(req->n_channels == 0)) + return -EINVAL; + local->hw_scan_req->req.n_channels = req->n_channels; for (i = 0; i < req->n_channels; i++) { @@ -760,6 +763,9 @@ static int __ieee80211_start_scan(struct ieee80211_sub_if_data *sdata, /* None of the channels are actually set * up but let UBSAN know the boundaries. */ + if (WARN_ON_ONCE(req->n_channels == 0)) + return -EINVAL; + local->hw_scan_req->req.n_channels = req->n_channels; ies = (u8 *)local->hw_scan_req +