• Dmitry Antipov's avatar
    wifi: ath9k: fix fortify warnings · 810e41ce
    Dmitry Antipov authored
    When compiling with gcc 13.1 and CONFIG_FORTIFY_SOURCE=y,
    I've noticed the following:
    
    In function ‘fortify_memcpy_chk’,
        inlined from ‘ath_tx_complete_aggr’ at drivers/net/wireless/ath/ath9k/xmit.c:556:4,
        inlined from ‘ath_tx_process_buffer’ at drivers/net/wireless/ath/ath9k/xmit.c:773:3:
    ./include/linux/fortify-string.h:529:25: warning: call to ‘__read_overflow2_field’
    declared with attribute warning: detected read beyond size of field (2nd parameter);
    maybe use struct_group()? [-Wattribute-warning]
      529 |                         __read_overflow2_field(q_size_field, size);
          |                         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    
    In function ‘fortify_memcpy_chk’,
        inlined from ‘ath_tx_count_frames’ at drivers/net/wireless/ath/ath9k/xmit.c:473:3,
        inlined from ‘ath_tx_complete_aggr’ at drivers/net/wireless/ath/ath9k/xmit.c:572:2,
        inlined from ‘ath_tx_process_buffer’ at drivers/net/wireless/ath/ath9k/xmit.c:773:3:
    ./include/linux/fortify-string.h:529:25: warning: call to ‘__read_overflow2_field’
    declared with attribute warning: detected read beyond size of field (2nd parameter);
    maybe use struct_group()? [-Wattribute-warning]
      529 |                         __read_overflow2_field(q_size_field, size);
          |                         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    
    In both cases, the compiler complains on:
    
    memcpy(ba, &ts->ba_low, WME_BA_BMP_SIZE >> 3);
    
    which is the legal way to copy both 'ba_low' and following 'ba_high'
    members of 'struct ath_tx_status' at once (that is, issue one 8-byte
    'memcpy()' for two 4-byte fields). Since the fortification logic seems
    interprets this trick as an attempt to overread 4-byte 'ba_low', silence
    relevant warnings by using the convenient 'struct_group()' quirk.
    Suggested-by: default avatarJohannes Berg <johannes@sipsolutions.net>
    Signed-off-by: default avatarDmitry Antipov <dmantipov@yandex.ru>
    Acked-by: default avatarToke Høiland-Jørgensen <toke@toke.dk>
    Signed-off-by: default avatarKalle Valo <quic_kvalo@quicinc.com>
    Link: https://lore.kernel.org/r/20230620080855.396851-2-dmantipov@yandex.ru
    810e41ce
mac.h 21.7 KB