• Dmitry Antipov's avatar
    wifi: ath9k: fix clang-specific fortify warnings · 95f97fe0
    Dmitry Antipov authored
    When compiling with clang 16.0.6 and CONFIG_FORTIFY_SOURCE=y, I've
    noticed the following (somewhat confusing due to absence of an actual
    source code location):
    
    In file included from drivers/net/wireless/ath/ath9k/debug.c:17:
    In file included from ./include/linux/slab.h:16:
    In file included from ./include/linux/gfp.h:7:
    In file included from ./include/linux/mmzone.h:8:
    In file included from ./include/linux/spinlock.h:56:
    In file included from ./include/linux/preempt.h:79:
    In file included from ./arch/x86/include/asm/preempt.h:9:
    In file included from ./include/linux/thread_info.h:60:
    In file included from ./arch/x86/include/asm/thread_info.h:53:
    In file included from ./arch/x86/include/asm/cpufeature.h:5:
    In file included from ./arch/x86/include/asm/processor.h:23:
    In file included from ./arch/x86/include/asm/msr.h:11:
    In file included from ./arch/x86/include/asm/cpumask.h:5:
    In file included from ./include/linux/cpumask.h:12:
    In file included from ./include/linux/bitmap.h:11:
    In file included from ./include/linux/string.h:254:
    ./include/linux/fortify-string.h:592:4: warning: call to '__read_overflow2_field'
    declared with 'warning' attribute: detected read beyond size of field (2nd
    parameter); maybe use struct_group()? [-Wattribute-warning]
                            __read_overflow2_field(q_size_field, size);
    
    In file included from drivers/net/wireless/ath/ath9k/htc_drv_debug.c:17:
    In file included from drivers/net/wireless/ath/ath9k/htc.h:20:
    In file included from ./include/linux/module.h:13:
    In file included from ./include/linux/stat.h:19:
    In file included from ./include/linux/time.h:60:
    In file included from ./include/linux/time32.h:13:
    In file included from ./include/linux/timex.h:67:
    In file included from ./arch/x86/include/asm/timex.h:5:
    In file included from ./arch/x86/include/asm/processor.h:23:
    In file included from ./arch/x86/include/asm/msr.h:11:
    In file included from ./arch/x86/include/asm/cpumask.h:5:
    In file included from ./include/linux/cpumask.h:12:
    In file included from ./include/linux/bitmap.h:11:
    In file included from ./include/linux/string.h:254:
    ./include/linux/fortify-string.h:592:4: warning: call to '__read_overflow2_field'
    declared with 'warning' attribute: detected read beyond size of field (2nd
    parameter); maybe use struct_group()? [-Wattribute-warning]
                            __read_overflow2_field(q_size_field, size);
    
    The compiler actually complains on 'ath9k_get_et_strings()' and
    'ath9k_htc_get_et_strings()' due to the same reason: fortification logic
    inteprets call to 'memcpy()' as an attempt to copy the whole array from
    it's first member and so issues an overread warning. These warnings may
    be silenced by passing an address of the whole array and not the first
    member to 'memcpy()'.
    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/20230829093856.234584-1-dmantipov@yandex.ru
    95f97fe0
htc_drv_debug.c 14.5 KB