Message ID | 20210616195242.1231287-1-keescook@chromium.org |
---|---|
State | New |
Headers | show |
Series | mwl8k: Avoid memcpy() over-reading of ETH_SS_STATS | expand |
On Wed, Jun 16, 2021 at 12:52:42PM -0700, Kees Cook wrote: > In preparation for FORTIFY_SOURCE performing compile-time and run-time > field bounds checking for memcpy(), memmove(), and memset(), avoid > intentionally reading across neighboring array fields. Use the > sub-structure address directly. > > Signed-off-by: Kees Cook <keescook@chromium.org> > --- > drivers/net/wireless/marvell/mwl8k.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/drivers/net/wireless/marvell/mwl8k.c b/drivers/net/wireless/marvell/mwl8k.c > index 84b32a5f01ee..3bf6571f4149 100644 > --- a/drivers/net/wireless/marvell/mwl8k.c > +++ b/drivers/net/wireless/marvell/mwl8k.c > @@ -4552,7 +4552,7 @@ static int mwl8k_cmd_update_stadb_add(struct ieee80211_hw *hw, > else > rates = sta->supp_rates[NL80211_BAND_5GHZ] << 5; > legacy_rate_mask_to_array(p->legacy_rates, rates); > - memcpy(p->ht_rates, sta->ht_cap.mcs.rx_mask, 16); > + memcpy(p->ht_rates, &sta->ht_cap.mcs, 16); > p->interop = 1; > p->amsdu_enabled = 0; > > @@ -5034,7 +5034,7 @@ mwl8k_bss_info_changed_sta(struct ieee80211_hw *hw, struct ieee80211_vif *vif, > ap_legacy_rates = > ap->supp_rates[NL80211_BAND_5GHZ] << 5; > } > - memcpy(ap_mcs_rates, ap->ht_cap.mcs.rx_mask, 16); > + memcpy(ap_mcs_rates, &ap->ht_cap.mcs, 16); > > rcu_read_unlock(); This does not appear to have anything to do with ETH_SS_STATS which is what the Subject: says. Andrew
On Wed, Jun 16, 2021 at 09:58:09PM +0200, Andrew Lunn wrote: > On Wed, Jun 16, 2021 at 12:52:42PM -0700, Kees Cook wrote: > > In preparation for FORTIFY_SOURCE performing compile-time and run-time > > field bounds checking for memcpy(), memmove(), and memset(), avoid > > intentionally reading across neighboring array fields. Use the > > sub-structure address directly. > > > > Signed-off-by: Kees Cook <keescook@chromium.org> > > --- > > drivers/net/wireless/marvell/mwl8k.c | 4 ++-- > > 1 file changed, 2 insertions(+), 2 deletions(-) > > > > diff --git a/drivers/net/wireless/marvell/mwl8k.c b/drivers/net/wireless/marvell/mwl8k.c > > index 84b32a5f01ee..3bf6571f4149 100644 > > --- a/drivers/net/wireless/marvell/mwl8k.c > > +++ b/drivers/net/wireless/marvell/mwl8k.c > > @@ -4552,7 +4552,7 @@ static int mwl8k_cmd_update_stadb_add(struct ieee80211_hw *hw, > > else > > rates = sta->supp_rates[NL80211_BAND_5GHZ] << 5; > > legacy_rate_mask_to_array(p->legacy_rates, rates); > > - memcpy(p->ht_rates, sta->ht_cap.mcs.rx_mask, 16); > > + memcpy(p->ht_rates, &sta->ht_cap.mcs, 16); > > p->interop = 1; > > p->amsdu_enabled = 0; > > > > @@ -5034,7 +5034,7 @@ mwl8k_bss_info_changed_sta(struct ieee80211_hw *hw, struct ieee80211_vif *vif, > > ap_legacy_rates = > > ap->supp_rates[NL80211_BAND_5GHZ] << 5; > > } > > - memcpy(ap_mcs_rates, ap->ht_cap.mcs.rx_mask, 16); > > + memcpy(ap_mcs_rates, &ap->ht_cap.mcs, 16); > > > > rcu_read_unlock(); > > This does not appear to have anything to do with ETH_SS_STATS which is > what the Subject: says. Whoops! I was off-by-one in my Subject edits. I will respin. -Kees -- Kees Cook
diff --git a/drivers/net/wireless/marvell/mwl8k.c b/drivers/net/wireless/marvell/mwl8k.c index 84b32a5f01ee..3bf6571f4149 100644 --- a/drivers/net/wireless/marvell/mwl8k.c +++ b/drivers/net/wireless/marvell/mwl8k.c @@ -4552,7 +4552,7 @@ static int mwl8k_cmd_update_stadb_add(struct ieee80211_hw *hw, else rates = sta->supp_rates[NL80211_BAND_5GHZ] << 5; legacy_rate_mask_to_array(p->legacy_rates, rates); - memcpy(p->ht_rates, sta->ht_cap.mcs.rx_mask, 16); + memcpy(p->ht_rates, &sta->ht_cap.mcs, 16); p->interop = 1; p->amsdu_enabled = 0; @@ -5034,7 +5034,7 @@ mwl8k_bss_info_changed_sta(struct ieee80211_hw *hw, struct ieee80211_vif *vif, ap_legacy_rates = ap->supp_rates[NL80211_BAND_5GHZ] << 5; } - memcpy(ap_mcs_rates, ap->ht_cap.mcs.rx_mask, 16); + memcpy(ap_mcs_rates, &ap->ht_cap.mcs, 16); rcu_read_unlock();
In preparation for FORTIFY_SOURCE performing compile-time and run-time field bounds checking for memcpy(), memmove(), and memset(), avoid intentionally reading across neighboring array fields. Use the sub-structure address directly. Signed-off-by: Kees Cook <keescook@chromium.org> --- drivers/net/wireless/marvell/mwl8k.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)