Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 5c6a5eb3 authored by Omer Efrat's avatar Omer Efrat Committed by Greg Kroah-Hartman
Browse files

staging: use BIT_ULL for NL80211_STA_INFO_* attribute types



The BIT macro uses unsigned long which some architectures handle as 32 bit
and therefore might cause macro's shift to overflow when used on a value
equals or larger than 32 (NL80211_STA_INFO_RX_DURATION and afterwards).

Since 'filled' member in station_info changed to u64, BIT_ULL macro
should be used with all NL80211_STA_INFO_* attribute types instead of BIT
to prevent future possible bugs when one will use BIT macro for higher
attributes by mistake.

This commit cleans up all usages of BIT macro with the above field
in cfg80211 by changing it to BIT_ULL instead.

Signed-off-by: default avatarOmer Efrat <omer.efrat@tandemg.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent efc8f3b2
Loading
Loading
Loading
Loading
+5 −5
Original line number Original line Diff line number Diff line
@@ -1266,16 +1266,16 @@ static int cfg80211_rtw_get_station(struct wiphy *wiphy,
			goto exit;
			goto exit;
		}
		}


		sinfo->filled |= BIT(NL80211_STA_INFO_SIGNAL);
		sinfo->filled |= BIT_ULL(NL80211_STA_INFO_SIGNAL);
		sinfo->signal = translate_percentage_to_dbm(padapter->recvpriv.signal_strength);
		sinfo->signal = translate_percentage_to_dbm(padapter->recvpriv.signal_strength);


		sinfo->filled |= BIT(NL80211_STA_INFO_TX_BITRATE);
		sinfo->filled |= BIT_ULL(NL80211_STA_INFO_TX_BITRATE);
		sinfo->txrate.legacy = rtw_get_cur_max_rate(padapter);
		sinfo->txrate.legacy = rtw_get_cur_max_rate(padapter);


		sinfo->filled |= BIT(NL80211_STA_INFO_RX_PACKETS);
		sinfo->filled |= BIT_ULL(NL80211_STA_INFO_RX_PACKETS);
		sinfo->rx_packets = sta_rx_data_pkts(psta);
		sinfo->rx_packets = sta_rx_data_pkts(psta);


		sinfo->filled |= BIT(NL80211_STA_INFO_TX_PACKETS);
		sinfo->filled |= BIT_ULL(NL80211_STA_INFO_TX_PACKETS);
		sinfo->tx_packets = psta->sta_stats.tx_pkts;
		sinfo->tx_packets = psta->sta_stats.tx_pkts;


	}
	}
@@ -3006,7 +3006,7 @@ static int cfg80211_rtw_dump_station(struct wiphy *wiphy, struct net_device *nde
		goto exit;
		goto exit;
	}
	}
	memcpy(mac, psta->hwaddr, ETH_ALEN);
	memcpy(mac, psta->hwaddr, ETH_ALEN);
	sinfo->filled = BIT(NL80211_STA_INFO_SIGNAL);
	sinfo->filled = BIT_ULL(NL80211_STA_INFO_SIGNAL);
	sinfo->signal = psta->rssi;
	sinfo->signal = psta->rssi;


exit:
exit:
+7 −7
Original line number Original line Diff line number Diff line
@@ -1141,7 +1141,7 @@ static int get_station(struct wiphy *wiphy, struct net_device *dev,
			return -ENOENT;
			return -ENOENT;
		}
		}


		sinfo->filled |= BIT(NL80211_STA_INFO_INACTIVE_TIME);
		sinfo->filled |= BIT_ULL(NL80211_STA_INFO_INACTIVE_TIME);


		wilc_get_inactive_time(vif, mac, &inactive_time);
		wilc_get_inactive_time(vif, mac, &inactive_time);
		sinfo->inactive_time = 1000 * inactive_time;
		sinfo->inactive_time = 1000 * inactive_time;
@@ -1150,11 +1150,11 @@ static int get_station(struct wiphy *wiphy, struct net_device *dev,


		wilc_get_statistics(vif, &stats, true);
		wilc_get_statistics(vif, &stats, true);


		sinfo->filled |= BIT(NL80211_STA_INFO_SIGNAL) |
		sinfo->filled |= BIT_ULL(NL80211_STA_INFO_SIGNAL) |
				 BIT(NL80211_STA_INFO_RX_PACKETS) |
				 BIT_ULL(NL80211_STA_INFO_RX_PACKETS) |
				 BIT(NL80211_STA_INFO_TX_PACKETS) |
				 BIT_ULL(NL80211_STA_INFO_TX_PACKETS) |
				 BIT(NL80211_STA_INFO_TX_FAILED) |
				 BIT_ULL(NL80211_STA_INFO_TX_FAILED) |
				 BIT(NL80211_STA_INFO_TX_BITRATE);
				 BIT_ULL(NL80211_STA_INFO_TX_BITRATE);


		sinfo->signal = stats.rssi;
		sinfo->signal = stats.rssi;
		sinfo->rx_packets = stats.rx_cnt;
		sinfo->rx_packets = stats.rx_cnt;
@@ -1775,7 +1775,7 @@ static int dump_station(struct wiphy *wiphy, struct net_device *dev,
	priv = wiphy_priv(wiphy);
	priv = wiphy_priv(wiphy);
	vif = netdev_priv(priv->dev);
	vif = netdev_priv(priv->dev);


	sinfo->filled |= BIT(NL80211_STA_INFO_SIGNAL);
	sinfo->filled |= BIT_ULL(NL80211_STA_INFO_SIGNAL);


	wilc_get_rssi(vif, &sinfo->signal);
	wilc_get_rssi(vif, &sinfo->signal);


+2 −2
Original line number Original line Diff line number Diff line
@@ -282,9 +282,9 @@ static int prism2_get_station(struct wiphy *wiphy, struct net_device *dev,


	if (result == 0) {
	if (result == 0) {
		sinfo->txrate.legacy = quality.txrate.data;
		sinfo->txrate.legacy = quality.txrate.data;
		sinfo->filled |= BIT(NL80211_STA_INFO_TX_BITRATE);
		sinfo->filled |= BIT_ULL(NL80211_STA_INFO_TX_BITRATE);
		sinfo->signal = quality.level.data;
		sinfo->signal = quality.level.data;
		sinfo->filled |= BIT(NL80211_STA_INFO_SIGNAL);
		sinfo->filled |= BIT_ULL(NL80211_STA_INFO_SIGNAL);
	}
	}


	return result;
	return result;