arch/arm64/kernel/elfcore.c:25:12: warning: stack frame size (2144) exceeds limit (2048) in 'mte_dump_tag_range'

kernel test robot
2022-03-30T01:46:43Z

Hi Catalin,

FYI, the error/warning still remains.

tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: 1c24a186398f59c80adb9a967486b65c1423a59d
commit: 6dd8b1a0b6cb3ed93d24110e02e67ff9d006610a arm64: mte: Dump the MTE tags in the core file
date: 6 weeks ago
config: arm64-randconfig-r002-20220330 (https://download.01.org/0day-ci/archive/20220330/202203300903.AceWJDUu-lkp@intel.com/config)
compiler: clang version 15.0.0 (https://github.com/llvm/llvm-project 0f6d9501cf49ce02937099350d08f20c4af86f3d)
reproduce (this is a W=1 build):
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# install arm64 cross compiling tool for clang build
# apt-get install binutils-aarch64-linux-gnu
# https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=6dd8b1a0b6cb3ed93d24110e02e67ff9d006610a
git remote add linus https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
git fetch --no-tags linus master
git checkout 6dd8b1a0b6cb3ed93d24110e02e67ff9d006610a
# save the config file to linux build tree
mkdir build_dir
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 O=build_dir ARCH=arm64 SHELL=/bin/bash arch/arm64/kernel/

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>

All warnings (new ones prefixed by >>):

>> arch/arm64/kernel/elfcore.c:25:12: warning: stack frame size (2144) exceeds limit (2048) in 'mte_dump_tag_range' [-Wframe-larger-than]
static int mte_dump_tag_range(struct coredump_params *cprm,
^
1 warning generated.

vim +/mte_dump_tag_range +25 arch/arm64/kernel/elfcore.c

23
24 /* Derived from dump_user_range(); start/end must be page-aligned */
> 25 static int mte_dump_tag_range(struct coredump_params *cprm,
26 unsigned long start, unsigned long end)
27 {
28 unsigned long addr;
29
30 for (addr = start; addr < end; addr += PAGE_SIZE) {
31 char tags[MTE_PAGE_TAG_STORAGE];
32 struct page *page = get_dump_page(addr);
33
34 /*
35 * get_dump_page() returns NULL when encountering an empty
36 * page table entry that would otherwise have been filled with
37 * the zero page. Skip the equivalent tag dump which would
38 * have been all zeros.
39 */
40 if (!page) {
41 dump_skip(cprm, MTE_PAGE_TAG_STORAGE);
42 continue;
43 }
44
45 /*
46 * Pages mapped in user space as !pte_access_permitted() (e.g.
47 * PROT_EXEC only) may not have the PG_mte_tagged flag set.
48 */
49 if (!test_bit(PG_mte_tagged, &page->flags)) {
50 put_page(page);
51 dump_skip(cprm, MTE_PAGE_TAG_STORAGE);
52 continue;
53 }
54
55 mte_save_page_tags(page_address(page), tags);
56 put_page(page);
57 if (!dump_emit(cprm, tags, MTE_PAGE_TAG_STORAGE))
58 return 0;
59 }
60
61 return 1;
62 }
63

--
0-DAY CI Kernel Test Service