mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-09-04 20:19:47 +08:00
![]() clang gets a bit confused by the code in the qed_mfw_process_tlv_req and ends up spilling registers to the stack hundreds of times. When sanitizers are enabled, this can end up blowing the stack warning limit: drivers/net/ethernet/qlogic/qed/qed_mng_tlv.c:1244:5: error: stack frame size (1824) exceeds limit (1280) in 'qed_mfw_process_tlv_req' [-Werror,-Wframe-larger-than] Apparently the problem is the complexity of qed_mfw_update_tlvs() after inlining, and marking the four main branches of that function as noinline_for_stack makes this problem completely go away, the stack usage goes down to 100 bytes. Signed-off-by: Arnd Bergmann <arnd@arndb.de> Reviewed-by: Alexander Lobakin <aleksander.lobakin@intel.com> Signed-off-by: David S. Miller <davem@davemloft.net> |
||
---|---|---|
.. | ||
Makefile | ||
qed_chain.c | ||
qed_cxt.c | ||
qed_cxt.h | ||
qed_dbg_hsi.h | ||
qed_dcbx.c | ||
qed_dcbx.h | ||
qed_debug.c | ||
qed_debug.h | ||
qed_dev_api.h | ||
qed_dev.c | ||
qed_devlink.c | ||
qed_devlink.h | ||
qed_fcoe.c | ||
qed_fcoe.h | ||
qed_hsi.h | ||
qed_hw.c | ||
qed_hw.h | ||
qed_init_fw_funcs.c | ||
qed_init_ops.c | ||
qed_init_ops.h | ||
qed_int.c | ||
qed_int.h | ||
qed_iro_hsi.h | ||
qed_iscsi.c | ||
qed_iscsi.h | ||
qed_iwarp.c | ||
qed_iwarp.h | ||
qed_l2.c | ||
qed_l2.h | ||
qed_ll2.c | ||
qed_ll2.h | ||
qed_main.c | ||
qed_mcp.c | ||
qed_mcp.h | ||
qed_mfw_hsi.h | ||
qed_mng_tlv.c | ||
qed_nvmetcp_fw_funcs.c | ||
qed_nvmetcp_fw_funcs.h | ||
qed_nvmetcp.c | ||
qed_nvmetcp.h | ||
qed_ooo.c | ||
qed_ooo.h | ||
qed_ptp.c | ||
qed_ptp.h | ||
qed_rdma.c | ||
qed_rdma.h | ||
qed_reg_addr.h | ||
qed_roce.c | ||
qed_roce.h | ||
qed_selftest.c | ||
qed_selftest.h | ||
qed_sp_commands.c | ||
qed_sp.h | ||
qed_spq.c | ||
qed_sriov.c | ||
qed_sriov.h | ||
qed_vf.c | ||
qed_vf.h | ||
qed.h |