• Arnd Bergmann's avatar
    wcn36xx: use dynamic allocation for large variables · 355cf319
    Arnd Bergmann authored
    clang triggers a warning about oversized stack frames that gcc does not
    notice because of slightly different inlining decisions:
    
    ath/wcn36xx/smd.c:1409:5: error: stack frame size of 1040 bytes in function 'wcn36xx_smd_config_bss' [-Werror,-Wframe-larger-than=]
    ath/wcn36xx/smd.c:640:5: error: stack frame size of 1032 bytes in function 'wcn36xx_smd_start_hw_scan' [-Werror,-Wframe-larger-than=]
    
    Basically the wcn36xx_hal_start_scan_offload_req_msg,
    wcn36xx_hal_config_bss_req_msg_v1, and wcn36xx_hal_config_bss_req_msg
    structures are too large to be put on the kernel stack, but small
    enough that gcc does not warn about them.
    
    Use kzalloc() to allocate them all. There are similar structures in other
    parts of this driver, but they are all smaller, with the next largest
    stack frame at 480 bytes for wcn36xx_smd_send_beacon.
    
    Fixes: 8e84c258 ("wcn36xx: mac80211 driver for Qualcomm WCN3660/WCN3680 hardware")
    Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
    Signed-off-by: default avatarKalle Valo <kvalo@codeaurora.org>
    355cf319
smd.c 71.5 KB