فهرست منبع

[PATCH] ieee80211: division by zero fix

This fixes division by zero bug in ieee80211_wx_get_scan().

Signed-off-by: Jiri Benc <jbenc@suse.cz>
Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
Jiri Benc 19 سال پیش
والد
کامیت
757d18faee
1فایلهای تغییر یافته به همراه12 افزوده شده و 9 حذف شده
  1. 12 9
      net/ieee80211/ieee80211_wx.c

+ 12 - 9
net/ieee80211/ieee80211_wx.c

@@ -152,15 +152,18 @@ static inline char *ipw2100_translate_scan(struct ieee80211_device *ieee,
 		iwe.u.qual.level = 0;
 		iwe.u.qual.level = 0;
 	} else {
 	} else {
 		iwe.u.qual.level = network->stats.rssi;
 		iwe.u.qual.level = network->stats.rssi;
-		iwe.u.qual.qual =
-		    (100 *
-		     (ieee->perfect_rssi - ieee->worst_rssi) *
-		     (ieee->perfect_rssi - ieee->worst_rssi) -
-		     (ieee->perfect_rssi - network->stats.rssi) *
-		     (15 * (ieee->perfect_rssi - ieee->worst_rssi) +
-		      62 * (ieee->perfect_rssi - network->stats.rssi))) /
-		    ((ieee->perfect_rssi - ieee->worst_rssi) *
-		     (ieee->perfect_rssi - ieee->worst_rssi));
+		if (ieee->perfect_rssi == ieee->worst_rssi)
+			iwe.u.qual.qual = 100;
+		else
+			iwe.u.qual.qual =
+			    (100 *
+			     (ieee->perfect_rssi - ieee->worst_rssi) *
+			     (ieee->perfect_rssi - ieee->worst_rssi) -
+			     (ieee->perfect_rssi - network->stats.rssi) *
+			     (15 * (ieee->perfect_rssi - ieee->worst_rssi) +
+			      62 * (ieee->perfect_rssi - network->stats.rssi))) /
+			    ((ieee->perfect_rssi - ieee->worst_rssi) *
+			     (ieee->perfect_rssi - ieee->worst_rssi));
 		if (iwe.u.qual.qual > 100)
 		if (iwe.u.qual.qual > 100)
 			iwe.u.qual.qual = 100;
 			iwe.u.qual.qual = 100;
 		else if (iwe.u.qual.qual < 1)
 		else if (iwe.u.qual.qual < 1)