Message ID | 20220520194320.2356236-1-kuba@kernel.org |
---|---|
Headers | show |
Series | Fix/silence GCC 12 warnings in drivers/net/wireless/ | expand |
+ arnd, kees, lkml Jakub Kicinski <kuba@kernel.org> writes: > GCC 12 says: > > drivers/net/wireless/ath/ath9k/mac.c: In function ‘ath9k_hw_resettxqueue’: > drivers/net/wireless/ath/ath9k/mac.c:373:22: warning: array subscript > 32 is above array bounds of ‘struct ath9k_tx_queue_info[10]’ > [-Warray-bounds] > 373 | qi = &ah->txq[q]; > | ~~~~~~~^~~ > > I don't know where it got the 32 from, relegate the warning to W=1+. > > Signed-off-by: Jakub Kicinski <kuba@kernel.org> > --- > CC: toke@toke.dk > CC: kvalo@kernel.org > CC: linux-wireless@vger.kernel.org > --- > drivers/net/wireless/ath/ath9k/Makefile | 5 +++++ > 1 file changed, 5 insertions(+) > > diff --git a/drivers/net/wireless/ath/ath9k/Makefile b/drivers/net/wireless/ath/ath9k/Makefile > index eff94bcd1f0a..9bdfcee2f448 100644 > --- a/drivers/net/wireless/ath/ath9k/Makefile > +++ b/drivers/net/wireless/ath/ath9k/Makefile > @@ -45,6 +45,11 @@ ath9k_hw-y:= \ > ar9003_eeprom.o \ > ar9003_paprd.o > > +# FIXME: temporarily silence -Warray-bounds on non W=1+ builds > +ifndef KBUILD_EXTRA_WARN > +CFLAGS_mac.o += -Wno-array-bounds > +endif There are now four wireless drivers which need this hack. Wouldn't it be easier to add -Wno-array-bounds for GCC 12 globally instead of adding the same hack to multiple drivers?
On Sat, 21 May 2022 09:58:28 +0300 Kalle Valo wrote: > > +# FIXME: temporarily silence -Warray-bounds on non W=1+ builds > > +ifndef KBUILD_EXTRA_WARN > > +CFLAGS_mac.o += -Wno-array-bounds > > +endif > > There are now four wireless drivers which need this hack. Wouldn't it be > easier to add -Wno-array-bounds for GCC 12 globally instead of adding > the same hack to multiple drivers? I mean.. it's definitely a hack, I'm surprised more people aren't complaining. Kees was against disabling it everywhere, AFAIU: https://lore.kernel.org/all/202204201117.F44DCF9@keescook/ WiFi is a bit unfortunate but we only have 3 cases in the rest of networking so it's not _terribly_ common. IDK, I'd love to not see all the warnings every time someone touches netdevice.h :( I made a note to remove the workaround once GCC 12 gets its act together, that's the best I could come up with.
Jakub Kicinski <kuba@kernel.org> writes: > On Sat, 21 May 2022 09:58:28 +0300 Kalle Valo wrote: >> > +# FIXME: temporarily silence -Warray-bounds on non W=1+ builds >> > +ifndef KBUILD_EXTRA_WARN >> > +CFLAGS_mac.o += -Wno-array-bounds >> > +endif >> >> There are now four wireless drivers which need this hack. Wouldn't it be >> easier to add -Wno-array-bounds for GCC 12 globally instead of adding >> the same hack to multiple drivers? > > I mean.. it's definitely a hack, I'm surprised more people aren't > complaining. Kees was against disabling it everywhere, AFAIU: > > https://lore.kernel.org/all/202204201117.F44DCF9@keescook/ Wasn't Kees objecting of disabling array-bounds for all GCC versions? That I understand, but I'm merely suggesting to disable the warning only on GCC 12 until the compiler is fixed or the drivers are fixed. > WiFi is a bit unfortunate but we only have 3 cases in the rest of > networking so it's not _terribly_ common. > > IDK, I'd love to not see all the warnings every time someone touches > netdevice.h :( I made a note to remove the workaround once GCC 12 gets > its act together, that's the best I could come up with. Ok, fair enough. I'm just worried these will be left lingering for a long time and do more harm than good :)
Jakub Kicinski <kuba@kernel.org> writes: > Hi Kalle & Johannes, > > as mentioned off list we'd like to get GCC 12 warnings quashed. > This set takes care of the warnings we have in drivers/net/wireless/ > mostly by relegating them to W=1/W=2 builds. > > Is it okay for us to take this directly to net-next? > Or perhaps via wireless-next with a quick PR by Monday? We are not planning to submit any new pull requests so please take it directly net-next. > Jakub Kicinski (8): > wifi: plfxlc: remove redundant NULL-check for GCC 12 > wifi: ath9k: silence array-bounds warning on GCC 12 > wifi: rtlwifi: remove always-true condition pointed out by GCC 12 > wifi: ath6k: silence false positive -Wno-dangling-pointer warning on > GCC 12 > wifi: iwlwifi: use unsigned to silence a GCC 12 warning > wifi: brcmfmac: work around a GCC 12 -Warray-bounds warning > wifi: libertas: silence a GCC 12 -Warray-bounds warning > wifi: carl9170: silence a GCC 12 -Warray-bounds warning Like I mentioned in the other email I don't really like these but I understood they are urgent so: Acked-by: Kalle Valo <kvalo@kernel.org>
On Sat, May 21, 2022 at 09:58:28AM +0300, Kalle Valo wrote: > + arnd, kees, lkml > > Jakub Kicinski <kuba@kernel.org> writes: > > > GCC 12 says: > > > > drivers/net/wireless/ath/ath9k/mac.c: In function ‘ath9k_hw_resettxqueue’: > > drivers/net/wireless/ath/ath9k/mac.c:373:22: warning: array subscript > > 32 is above array bounds of ‘struct ath9k_tx_queue_info[10]’ > > [-Warray-bounds] > > 373 | qi = &ah->txq[q]; > > | ~~~~~~~^~~ > > > > I don't know where it got the 32 from, relegate the warning to W=1+. > > > > Signed-off-by: Jakub Kicinski <kuba@kernel.org> > > --- > > CC: toke@toke.dk > > CC: kvalo@kernel.org > > CC: linux-wireless@vger.kernel.org > > --- > > drivers/net/wireless/ath/ath9k/Makefile | 5 +++++ > > 1 file changed, 5 insertions(+) > > > > diff --git a/drivers/net/wireless/ath/ath9k/Makefile b/drivers/net/wireless/ath/ath9k/Makefile > > index eff94bcd1f0a..9bdfcee2f448 100644 > > --- a/drivers/net/wireless/ath/ath9k/Makefile > > +++ b/drivers/net/wireless/ath/ath9k/Makefile > > @@ -45,6 +45,11 @@ ath9k_hw-y:= \ > > ar9003_eeprom.o \ > > ar9003_paprd.o > > > > +# FIXME: temporarily silence -Warray-bounds on non W=1+ builds > > +ifndef KBUILD_EXTRA_WARN > > +CFLAGS_mac.o += -Wno-array-bounds > > +endif > > There are now four wireless drivers which need this hack. Wouldn't it be > easier to add -Wno-array-bounds for GCC 12 globally instead of adding > the same hack to multiple drivers? I finally tracked this down to a GCC 12 bug related to -fsanitize=shift: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105679 Basically all the "32" stuff comes from the index being used in a shift, and the resulting internal GCC logic blowing up. I was going to do a before/after build with and without -fsanitize=shift to see how many of these false positives originate from that bug...