• Arnd Bergmann's avatar
    cxgb4: reduce kernel stack usage in cudbg_collect_mem_region() · 0d72bb85
    Arnd Bergmann authored
    [ Upstream commit 752c2ea2 ]
    
    The cudbg_collect_mem_region() and cudbg_read_fw_mem() both use several
    hundred kilobytes of kernel stack space. One gets inlined into the other,
    which causes the stack usage to be combined beyond the warning limit
    when building with clang:
    
    drivers/net/ethernet/chelsio/cxgb4/cudbg_lib.c:1057:12: error: stack frame size of 1244 bytes in function 'cudbg_collect_mem_region' [-Werror,-Wframe-larger-than=]
    
    Restructuring cudbg_collect_mem_region() lets clang do the same
    optimization that gcc does and reuse the stack slots as it can
    see that the large variables are never used together.
    
    A better fix might be to avoid using cudbg_meminfo on the stack
    altogether, but that requires a larger rewrite.
    
    Fixes: a1c69520 ("cxgb4: collect MC memory dump")
    Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
    0d72bb85
cudbg_lib.c 80.4 KB