• Arnd Bergmann's avatar
    ath11k: Wstringop-overread warning · eb19efed
    Arnd Bergmann authored
    gcc-11 with the kernel address sanitizer prints a warning for this
    driver:
    
    In function 'ath11k_peer_assoc_h_vht',
        inlined from 'ath11k_peer_assoc_prepare' at drivers/net/wireless/ath/ath11k/mac.c:1632:2:
    drivers/net/wireless/ath/ath11k/mac.c:1164:13: error: 'ath11k_peer_assoc_h_vht_masked' reading 16 bytes from a region of size 4 [-Werror=stringop-overread]
     1164 |         if (ath11k_peer_assoc_h_vht_masked(vht_mcs_mask))
          |             ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    drivers/net/wireless/ath/ath11k/mac.c: In function 'ath11k_peer_assoc_prepare':
    drivers/net/wireless/ath/ath11k/mac.c:1164:13: note: referencing argument 1 of type 'const u16 *' {aka 'const short unsigned int *'}
    drivers/net/wireless/ath/ath11k/mac.c:969:1: note: in a call to function 'ath11k_peer_assoc_h_vht_masked'
      969 | ath11k_peer_assoc_h_vht_masked(const u16 vht_mcs_mask[NL80211_VHT_NSS_MAX])
          | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    
    According to analysis from gcc developers, this is a glitch in the
    way gcc tracks the size of struct members. This should really get
    fixed in gcc, but it's also easy to work around this instance
    by changing the function prototype to no include the length of
    the array.
    
    Link: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99673Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
    Signed-off-by: default avatarKalle Valo <kvalo@codeaurora.org>
    Link: https://lore.kernel.org/r/20210322160253.4032422-5-arnd@kernel.org
    eb19efed
mac.c 204 KB