Hi Dmitry, Thank you for the patch! Perhaps something to improve: [auto build test WARNING on c34f157421f6905e6b4a79a312e9175dce2bc607] url: https://github.com/0day-ci/linux/commits/Dmitry-Safonov/Add-generic-user_landing-tracking/20201109-090354 base: c34f157421f6905e6b4a79a312e9175dce2bc607 config: riscv-allmodconfig (attached as .config) compiler: riscv64-linux-gcc (GCC) 9.3.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/04586680978b048abe74dd892c5b1fcde7c486a3 git remote add linux-review https://github.com/0day-ci/linux git fetch --no-tags linux-review Dmitry-Safonov/Add-generic-user_landing-tracking/20201109-090354 git checkout 04586680978b048abe74dd892c5b1fcde7c486a3 # save the attached .config to linux build tree COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross ARCH=riscv If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot All warnings (new ones prefixed by >>): In file included from include/linux/elf.h:6, from arch/riscv/kernel/vdso.c:9: arch/riscv/include/asm/elf.h:8: error: unterminated #ifndef 8 | #ifndef _ASM_RISCV_ELF_H | arch/riscv/kernel/vdso.c: In function 'arch_setup_additional_pages': >> arch/riscv/kernel/vdso.c:62:27: warning: variable 'vvar_base' set but not used [-Wunused-but-set-variable] 62 | unsigned long vdso_base, vvar_base, vdso_len; | ^~~~~~~~~ vim +/vvar_base +62 arch/riscv/kernel/vdso.c > 9 #include 10 #include 11 #include 12 #include 13 #include 14 #include 15 #ifdef GENERIC_TIME_VSYSCALL 16 #include 17 #else 18 #include 19 #endif 20 21 extern char vdso_start[], vdso_end[]; 22 23 static unsigned int vdso_pages; 24 static struct page **vdso_pagelist; 25 26 /* 27 * The vDSO data page. 28 */ 29 static union { 30 struct vdso_data data; 31 u8 page[PAGE_SIZE]; 32 } vdso_data_store __page_aligned_data; 33 struct vdso_data *vdso_data = &vdso_data_store.data; 34 35 static int __init vdso_init(void) 36 { 37 unsigned int i; 38 39 vdso_pages = (vdso_end - vdso_start) >> PAGE_SHIFT; 40 vdso_pagelist = 41 kcalloc(vdso_pages + 1, sizeof(struct page *), GFP_KERNEL); 42 if (unlikely(vdso_pagelist == NULL)) { 43 pr_err("vdso: pagelist allocation failed\n"); 44 return -ENOMEM; 45 } 46 47 for (i = 0; i < vdso_pages; i++) { 48 struct page *pg; 49 50 pg = virt_to_page(vdso_start + (i << PAGE_SHIFT)); 51 vdso_pagelist[i] = pg; 52 } 53 vdso_pagelist[i] = virt_to_page(vdso_data); 54 55 return 0; 56 } 57 arch_initcall(vdso_init); 58 59 int arch_setup_additional_pages(unsigned long *sysinfo_ehdr) 60 { 61 struct mm_struct *mm = current->mm; > 62 unsigned long vdso_base, vvar_base, vdso_len; 63 int ret; 64 65 vdso_len = (vdso_pages + 1) << PAGE_SHIFT; 66 67 mmap_write_lock(mm); 68 vdso_base = get_unmapped_area(NULL, 0, vdso_len, 0, 0); 69 if (IS_ERR_VALUE(vdso_base)) { 70 ret = vdso_base; 71 goto end; 72 } 73 74 /* 75 * Put vDSO base into mm struct. We need to do this before calling 76 * install_special_mapping or the perf counter mmap tracking code 77 * will fail to recognise it as a vDSO (since arch_vma_name fails). 78 */ 79 mm->context.vdso = (void *)vdso_base; 80 81 ret = 82 install_special_mapping(mm, vdso_base, vdso_pages << PAGE_SHIFT, 83 (VM_READ | VM_EXEC | VM_MAYREAD | VM_MAYWRITE | VM_MAYEXEC), 84 vdso_pagelist); 85 86 if (unlikely(ret)) { 87 mm->context.vdso = NULL; 88 goto end; 89 } 90 91 vvar_base = vdso_base + (vdso_pages << PAGE_SHIFT); 92 ret = install_special_mapping(mm, vdso_base, PAGE_SIZE, 93 (VM_READ | VM_MAYREAD), &vdso_pagelist[vdso_pages]); 94 95 if (unlikely(ret)) 96 mm->context.vdso = NULL; 97 else 98 *sysinfo_ehdr = vdso_base; 99 end: 100 mmap_write_unlock(mm); 101 return ret; 102 } 103 --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org