浏览代码

mac80211: fix crash if bitrate calculation goes wrong

If a frame's timestamp is calculated, and the bitrate
calculation goes wrong and returns zero, the system
will attempt to divide by zero and crash. Catch this
case and print the rate information that the driver
reported when this happens.

Cc: stable@vger.kernel.org
Reported-by: Thomas Lindroth <thomas.lindroth@gmail.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Johannes Berg 12 年之前
父节点
当前提交
d86aa4f8ca
共有 1 个文件被更改,包括 4 次插入0 次删除
  1. 4 0
      net/mac80211/util.c

+ 4 - 0
net/mac80211/util.c

@@ -2238,6 +2238,10 @@ u64 ieee80211_calculate_rx_timestamp(struct ieee80211_local *local,
 	}
 	}
 
 
 	rate = cfg80211_calculate_bitrate(&ri);
 	rate = cfg80211_calculate_bitrate(&ri);
+	if (WARN_ONCE(!rate,
+		      "Invalid bitrate: flags=0x%x, idx=%d, vht_nss=%d\n",
+		      status->flag, status->rate_idx, status->vht_nss))
+		return 0;
 
 
 	/* rewind from end of MPDU */
 	/* rewind from end of MPDU */
 	if (status->flag & RX_FLAG_MACTIME_END)
 	if (status->flag & RX_FLAG_MACTIME_END)