]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
wifi: ath9k: work around memset overflow warning
authorArnd Bergmann <arnd@arndb.de>
Thu, 4 Apr 2024 06:35:59 +0000 (09:35 +0300)
committerKalle Valo <quic_kvalo@quicinc.com>
Thu, 4 Apr 2024 10:09:45 +0000 (13:09 +0300)
gcc-9 and some other older versions produce a false-positive warning
for zeroing two fields

In file included from include/linux/string.h:369,
                 from drivers/net/wireless/ath/ath9k/main.c:18:
In function 'fortify_memset_chk',
    inlined from 'ath9k_ps_wakeup' at drivers/net/wireless/ath/ath9k/main.c:140:3:
include/linux/fortify-string.h:462:25: error: call to '__write_overflow_field' declared with attribute warning: detected write beyond size of field (1st parameter); maybe use struct_group()? [-Werror=attribute-warning]
  462 |                         __write_overflow_field(p_size_field, size);
      |                         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Using a struct_group seems to reliably avoid the warning and
not make the code much uglier. The combined memset() should even
save a couple of cpu cycles.

Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Acked-by: Toke Høiland-Jørgensen <toke@toke.dk>
Reviewed-by: Kees Cook <keescook@chromium.org>
Signed-off-by: Kalle Valo <quic_kvalo@quicinc.com>
Link: https://msgid.link/20240328135509.3755090-3-arnd@kernel.org
drivers/net/wireless/ath/ath.h
drivers/net/wireless/ath/ath9k/main.c

index f02a308a9ffc5efdd34949edc92b418a6b379f54..34654f710d8a1e63f65a47d4602e2035262a4d9e 100644 (file)
@@ -171,8 +171,10 @@ struct ath_common {
        unsigned int clockrate;
 
        spinlock_t cc_lock;
-       struct ath_cycle_counters cc_ani;
-       struct ath_cycle_counters cc_survey;
+       struct_group(cc,
+               struct ath_cycle_counters cc_ani;
+               struct ath_cycle_counters cc_survey;
+       );
 
        struct ath_regulatory regulatory;
        struct ath_regulatory reg_world_copy;
index a2943aaecb2026ca99cd602e27335f5fb81707a2..01173aac304565de6ab0d092a8fabf8444e5da5f 100644 (file)
@@ -135,8 +135,7 @@ void ath9k_ps_wakeup(struct ath_softc *sc)
        if (power_mode != ATH9K_PM_AWAKE) {
                spin_lock(&common->cc_lock);
                ath_hw_cycle_counters_update(common);
-               memset(&common->cc_survey, 0, sizeof(common->cc_survey));
-               memset(&common->cc_ani, 0, sizeof(common->cc_ani));
+               memset(&common->cc, 0, sizeof(common->cc));
                spin_unlock(&common->cc_lock);
        }