Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

MIPS: math-emu: Reuse name array in debugfs_fpuemu()

The FPU_STAT_CREATE_EX() macro used 114 times in debugfs_fpuemu()
declares a 32 byte char array to hold the name of a debugfs file. Since
each use of the macro declares a new char array out of the scope of all
the other uses, we end up with an unnecessarily large stack frame of
3648 bytes (ie. 114*32) plus the size of 2 pointers
(fpuemu_debugfs_base_dir & fpuemu_debugfs_inst_dir). This is enough to
trigger the frame size warnings from GCC in common configurations.

Avoid the unnecessary stack bloat by using a single name char array
which each usage of FPU_STAT_CREATE_EX() will reinitialize via the
strcpy() in adjust_instruction_counter_name().

Signed-off-by: Paul Burton <paulburton@kernel.org>
Reported-by: kbuild test robot <lkp@intel.com>
URL: https://lore.kernel.org/linux-mips/201911090929.xvXYuHUz%25lkp@intel.com/

+1 -2
+1 -2
arch/mips/math-emu/me-debugfs.c
··· 189 189 { 190 190 struct dentry *fpuemu_debugfs_base_dir; 191 191 struct dentry *fpuemu_debugfs_inst_dir; 192 + char name[32]; 192 193 193 194 fpuemu_debugfs_base_dir = debugfs_create_dir("fpuemustats", 194 195 mips_debugfs_dir); ··· 226 225 227 226 #define FPU_STAT_CREATE_EX(m) \ 228 227 do { \ 229 - char name[32]; \ 230 - \ 231 228 adjust_instruction_counter_name(name, #m); \ 232 229 \ 233 230 debugfs_create_file(name, 0444, fpuemu_debugfs_inst_dir, \