Message ID | ff7a8bdc9a90a77de2ebc059beb4f644b34186c1.1643015752.git.christophe.leroy@csgroup.eu (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | Allocate module text and data separately | expand |
Hi Christophe,
I love your patch! Perhaps something to improve:
[auto build test WARNING on mcgrof/modules-next]
[also build test WARNING on powerpc/next linus/master jeyu/modules-next v5.17-rc1 next-20220124]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]
url: https://github.com/0day-ci/linux/commits/Christophe-Leroy/Allocate-module-text-and-data-separately/20220124-172517
base: https://git.kernel.org/pub/scm/linux/kernel/git/mcgrof/linux.git modules-next
config: powerpc-allmodconfig (https://download.01.org/0day-ci/archive/20220124/202201242036.OjeEPlOb-lkp@intel.com/config)
compiler: powerpc-linux-gcc (GCC) 11.2.0
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
# https://github.com/0day-ci/linux/commit/2a5f7a254dd5c1efcfb852f5747632c85582016d
git remote add linux-review https://github.com/0day-ci/linux
git fetch --no-tags linux-review Christophe-Leroy/Allocate-module-text-and-data-separately/20220124-172517
git checkout 2a5f7a254dd5c1efcfb852f5747632c85582016d
# save the config file to linux build tree
mkdir build_dir
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-11.2.0 make.cross O=build_dir ARCH=powerpc SHELL=/bin/bash kernel/debug/kdb/
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 >>):
kernel/debug/kdb/kdb_main.c: In function 'kdb_lsmod':
>> kernel/debug/kdb/kdb_main.c:2027:38: warning: format '%p' expects a matching 'void *' argument [-Wformat=]
2027 | kdb_printf("/%8u 0x%px ", mod->data_layout.size);
| ~^
| |
| void *
vim +2027 kernel/debug/kdb/kdb_main.c
5d5314d6795f3c1 Jason Wessel 2010-05-20 2006
5d5314d6795f3c1 Jason Wessel 2010-05-20 2007 #if defined(CONFIG_MODULES)
5d5314d6795f3c1 Jason Wessel 2010-05-20 2008 /*
5d5314d6795f3c1 Jason Wessel 2010-05-20 2009 * kdb_lsmod - This function implements the 'lsmod' command. Lists
5d5314d6795f3c1 Jason Wessel 2010-05-20 2010 * currently loaded kernel modules.
5d5314d6795f3c1 Jason Wessel 2010-05-20 2011 * Mostly taken from userland lsmod.
5d5314d6795f3c1 Jason Wessel 2010-05-20 2012 */
5d5314d6795f3c1 Jason Wessel 2010-05-20 2013 static int kdb_lsmod(int argc, const char **argv)
5d5314d6795f3c1 Jason Wessel 2010-05-20 2014 {
5d5314d6795f3c1 Jason Wessel 2010-05-20 2015 struct module *mod;
5d5314d6795f3c1 Jason Wessel 2010-05-20 2016
5d5314d6795f3c1 Jason Wessel 2010-05-20 2017 if (argc != 0)
5d5314d6795f3c1 Jason Wessel 2010-05-20 2018 return KDB_ARGCOUNT;
5d5314d6795f3c1 Jason Wessel 2010-05-20 2019
5d5314d6795f3c1 Jason Wessel 2010-05-20 2020 kdb_printf("Module Size modstruct Used by\n");
5d5314d6795f3c1 Jason Wessel 2010-05-20 2021 list_for_each_entry(mod, kdb_modules, list) {
0d21b0e3477395e Rusty Russell 2013-01-12 2022 if (mod->state == MODULE_STATE_UNFORMED)
0d21b0e3477395e Rusty Russell 2013-01-12 2023 continue;
5d5314d6795f3c1 Jason Wessel 2010-05-20 2024
299a20e0bead4b7 Christophe Leroy 2022-01-24 2025 kdb_printf("%-20s%8u", mod->name, mod->core_layout.size);
299a20e0bead4b7 Christophe Leroy 2022-01-24 2026 #ifdef CONFIG_ARCH_WANTS_MODULES_DATA_IN_VMALLOC
299a20e0bead4b7 Christophe Leroy 2022-01-24 @2027 kdb_printf("/%8u 0x%px ", mod->data_layout.size);
299a20e0bead4b7 Christophe Leroy 2022-01-24 2028 #endif
299a20e0bead4b7 Christophe Leroy 2022-01-24 2029 kdb_printf(" 0x%px ", (void *)mod);
5d5314d6795f3c1 Jason Wessel 2010-05-20 2030 #ifdef CONFIG_MODULE_UNLOAD
d5db139ab376464 Rusty Russell 2015-01-22 2031 kdb_printf("%4d ", module_refcount(mod));
5d5314d6795f3c1 Jason Wessel 2010-05-20 2032 #endif
5d5314d6795f3c1 Jason Wessel 2010-05-20 2033 if (mod->state == MODULE_STATE_GOING)
5d5314d6795f3c1 Jason Wessel 2010-05-20 2034 kdb_printf(" (Unloading)");
5d5314d6795f3c1 Jason Wessel 2010-05-20 2035 else if (mod->state == MODULE_STATE_COMING)
5d5314d6795f3c1 Jason Wessel 2010-05-20 2036 kdb_printf(" (Loading)");
5d5314d6795f3c1 Jason Wessel 2010-05-20 2037 else
5d5314d6795f3c1 Jason Wessel 2010-05-20 2038 kdb_printf(" (Live)");
568fb6f42ac6851 Christophe Leroy 2018-09-27 2039 kdb_printf(" 0x%px", mod->core_layout.base);
299a20e0bead4b7 Christophe Leroy 2022-01-24 2040 #ifdef CONFIG_ARCH_WANTS_MODULES_DATA_IN_VMALLOC
299a20e0bead4b7 Christophe Leroy 2022-01-24 2041 kdb_printf("/0x%px", mod->data_layout.base);
299a20e0bead4b7 Christophe Leroy 2022-01-24 2042 #endif
5d5314d6795f3c1 Jason Wessel 2010-05-20 2043
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig index 0631c9241af3..0360d6438359 100644 --- a/arch/powerpc/Kconfig +++ b/arch/powerpc/Kconfig @@ -161,6 +161,7 @@ config PPC select ARCH_WANT_IPC_PARSE_VERSION select ARCH_WANT_IRQS_OFF_ACTIVATE_MM select ARCH_WANT_LD_ORPHAN_WARN + select ARCH_WANTS_MODULES_DATA_IN_VMALLOC if PPC_BOOK3S_32 || PPC_8xx select ARCH_WEAK_RELEASE_ACQUIRE select BINFMT_ELF select BUILDTIME_TABLE_SORT
book3s/32 and 8xx have a separate area for allocating modules, defined by MODULES_VADDR / MODULES_END. On book3s/32, it is not possible to protect against execution on a page basis. A full 256M segment is either Exec or NoExec. The module area is in an Exec segment while vmalloc area is in a NoExec segment. In order to protect module data against execution, select ARCH_WANTS_MODULES_DATA_IN_VMALLOC. For the 8xx (and possibly other 32 bits platform in the future), there is no such constraint on Exec/NoExec protection, however there is a critical distance between kernel functions and callers that needs to remain below 32Mbytes in order to avoid costly trampolines. By allocating data outside of module area, we increase the chance for module text to remain within acceptable distance from kernel core text. So select ARCH_WANTS_MODULES_DATA_IN_VMALLOC for 8xx as well. Signed-off-by: Christophe Leroy <christophe.leroy@csgroup.eu> Cc: Michael Ellerman <mpe@ellerman.id.au> Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org> Cc: Paul Mackerras <paulus@samba.org> --- arch/powerpc/Kconfig | 1 + 1 file changed, 1 insertion(+)