Skip to content
  • Arnd Bergmann's avatar
    netlink: fix nla_put_{u8,u16,u32} for KASAN · 9a19bc44
    Arnd Bergmann authored
    commit b4391db4 upstream.
    
    When CONFIG_KASAN is enabled, the "--param asan-stack=1" causes rather large
    stack frames in some functions. This goes unnoticed normally because
    CONFIG_FRAME_WARN is disabled with CONFIG_KASAN by default as of commit
    3f181b4d ("lib/Kconfig.debug: disable -Wframe-larger-than warnings with
    KASAN=y").
    
    The kernelci.org build bot however has the warning enabled and that led
    me to investigate it a little further, as every build produces these warnings:
    
    net/wireless/nl80211.c:4389:1: warning: the frame size of 2240 bytes is larger than 2048 bytes [-Wframe-larger-than=]
    net/wireless/nl80211.c:1895:1: warning: the frame size of 3776 bytes is larger than 2048 bytes [-Wframe-larger-than=]
    net/wireless/nl80211.c:1410:1: warning: the frame size of 2208 bytes is larger than 2048 bytes [-Wframe-larger-than=]
    net/bridge/br_netlink.c:1282:1: warning: the frame size of 2544 bytes is larger than 2048 bytes [-Wframe-larger-than=]
    
    Most of this problem is now solved in gcc-8, which can consolidate
    the stack slots for the inline function arguments. On older compilers
    we can add a workaround by declaring a local variable in each function
    to pass the inline function argument.
    
    Link: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81715
    
    
    Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    9a19bc44