Re: [PATCHv5, REBASED 9/9] x86/mm: Allow to have userspace mappings above 47-bits

From: kbuild test robot
Date: Mon May 15 2017 - 10:50:06 EST


Hi Kirill,

[auto build test ERROR on linus/master]
[also build test ERROR on v4.12-rc1 next-20170515]
[cannot apply to tip/x86/core xen-tip/linux-next]
[if your patch is applied to the wrong git tree, please drop us a note to help improve the system]

url: https://github.com/0day-ci/linux/commits/Kirill-A-Shutemov/x86-5-level-paging-enabling-for-v4-12-Part-4/20170515-202736
config: i386-defconfig (attached as .config)
compiler: gcc-6 (Debian 6.2.0-3) 6.2.0 20160901
reproduce:
# save the attached .config to linux build tree
make ARCH=i386

All error/warnings (new ones prefixed by >>):

In file included from include/linux/cache.h:4:0,
from include/linux/printk.h:8,
from include/linux/kernel.h:13,
from mm/mmap.c:11:
mm/mmap.c: In function 'arch_get_unmapped_area_topdown':
arch/x86/include/asm/processor.h:878:50: error: 'TASK_SIZE_LOW' undeclared (first use in this function)
#define TASK_UNMAPPED_BASE __TASK_UNMAPPED_BASE(TASK_SIZE_LOW)
^
include/uapi/linux/kernel.h:10:41: note: in definition of macro '__ALIGN_KERNEL_MASK'
#define __ALIGN_KERNEL_MASK(x, mask) (((x) + (mask)) & ~(mask))
^
include/linux/kernel.h:49:22: note: in expansion of macro '__ALIGN_KERNEL'
#define ALIGN(x, a) __ALIGN_KERNEL((x), (a))
^~~~~~~~~~~~~~
include/linux/mm.h:132:26: note: in expansion of macro 'ALIGN'
#define PAGE_ALIGN(addr) ALIGN(addr, PAGE_SIZE)
^~~~~
arch/x86/include/asm/processor.h:877:42: note: in expansion of macro 'PAGE_ALIGN'
#define __TASK_UNMAPPED_BASE(task_size) (PAGE_ALIGN(task_size / 3))
^~~~~~~~~~
arch/x86/include/asm/processor.h:878:29: note: in expansion of macro '__TASK_UNMAPPED_BASE'
#define TASK_UNMAPPED_BASE __TASK_UNMAPPED_BASE(TASK_SIZE_LOW)
^~~~~~~~~~~~~~~~~~~~
>> mm/mmap.c:2043:20: note: in expansion of macro 'TASK_UNMAPPED_BASE'
info.low_limit = TASK_UNMAPPED_BASE;
^~~~~~~~~~~~~~~~~~
arch/x86/include/asm/processor.h:878:50: note: each undeclared identifier is reported only once for each function it appears in
#define TASK_UNMAPPED_BASE __TASK_UNMAPPED_BASE(TASK_SIZE_LOW)
^
include/uapi/linux/kernel.h:10:41: note: in definition of macro '__ALIGN_KERNEL_MASK'
#define __ALIGN_KERNEL_MASK(x, mask) (((x) + (mask)) & ~(mask))
^
include/linux/kernel.h:49:22: note: in expansion of macro '__ALIGN_KERNEL'
#define ALIGN(x, a) __ALIGN_KERNEL((x), (a))
^~~~~~~~~~~~~~
include/linux/mm.h:132:26: note: in expansion of macro 'ALIGN'
#define PAGE_ALIGN(addr) ALIGN(addr, PAGE_SIZE)
^~~~~
arch/x86/include/asm/processor.h:877:42: note: in expansion of macro 'PAGE_ALIGN'
#define __TASK_UNMAPPED_BASE(task_size) (PAGE_ALIGN(task_size / 3))
^~~~~~~~~~
arch/x86/include/asm/processor.h:878:29: note: in expansion of macro '__TASK_UNMAPPED_BASE'
#define TASK_UNMAPPED_BASE __TASK_UNMAPPED_BASE(TASK_SIZE_LOW)
^~~~~~~~~~~~~~~~~~~~
>> mm/mmap.c:2043:20: note: in expansion of macro 'TASK_UNMAPPED_BASE'
info.low_limit = TASK_UNMAPPED_BASE;
^~~~~~~~~~~~~~~~~~
--
In file included from include/linux/elf.h:4:0,
from include/linux/module.h:15,
from fs/binfmt_elf.c:12:
fs/binfmt_elf.c: In function 'load_elf_binary':
>> arch/x86/include/asm/elf.h:253:27: error: 'TASK_SIZE_LOW' undeclared (first use in this function)
#define ELF_ET_DYN_BASE (TASK_SIZE_LOW / 3 * 2)
^
>> fs/binfmt_elf.c:937:16: note: in expansion of macro 'ELF_ET_DYN_BASE'
load_bias = ELF_ET_DYN_BASE - vaddr;
^~~~~~~~~~~~~~~
arch/x86/include/asm/elf.h:253:27: note: each undeclared identifier is reported only once for each function it appears in
#define ELF_ET_DYN_BASE (TASK_SIZE_LOW / 3 * 2)
^
>> fs/binfmt_elf.c:937:16: note: in expansion of macro 'ELF_ET_DYN_BASE'
load_bias = ELF_ET_DYN_BASE - vaddr;
^~~~~~~~~~~~~~~

vim +/TASK_SIZE_LOW +253 arch/x86/include/asm/elf.h

247
248 /* This is the location that an ET_DYN program is loaded if exec'ed. Typical
249 use of this is to invoke "./ld.so someprog" to test out a new version of
250 the loader. We need to make sure that it is out of the way of the program
251 that it will "exec", and that there is sufficient room for the brk. */
252
> 253 #define ELF_ET_DYN_BASE (TASK_SIZE_LOW / 3 * 2)
254
255 /* This yields a mask that user programs can use to figure out what
256 instruction set this CPU supports. This could be done in user space,

---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all Intel Corporation

Attachment: .config.gz
Description: application/gzip