tree: https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git master head: ec85c95b0c90a17413901b018e8ade7b9eae7cad commit: 953f99327748a7ed47f6fdce8ec2df85e53c672c [2036/2633] binfmt: remove in-tree usage of MAP_EXECUTABLE config: alpha-randconfig-r023-20210512 (attached as .config) compiler: alpha-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://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git/commit/?id=953f99327748a7ed47f6fdce8ec2df85e53c672c git remote add linux-next https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git git fetch --no-tags linux-next master git checkout 953f99327748a7ed47f6fdce8ec2df85e53c672c # save the attached .config to linux build tree COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross W=1 ARCH=alpha If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot <lkp@xxxxxxxxx> All errors (new ones prefixed by >>): fs/binfmt_aout.c: In function 'load_aout_binary': >> fs/binfmt_aout.c:225:43: error: expected ')' before ';' token 225 | MAP_FIXED | MAP_PRIVATE | MAP_DENYWRITE; | ^ >> fs/binfmt_aout.c:223:11: error: too few arguments to function 'vm_mmap' 223 | error = vm_mmap(bprm->file, N_TXTADDR(ex), ex.a_text, | ^~~~~~~ In file included from fs/binfmt_aout.c:12: include/linux/mm.h:2631:35: note: declared here 2631 | extern unsigned long __must_check vm_mmap(struct file *, unsigned long, | ^~~~~~~ fs/binfmt_aout.c:233:44: error: expected ')' before ';' token 233 | MAP_FIXED | MAP_PRIVATE | MAP_DENYWRITE; | ^ fs/binfmt_aout.c:231:11: error: too few arguments to function 'vm_mmap' 231 | error = vm_mmap(bprm->file, N_DATADDR(ex), ex.a_data, | ^~~~~~~ In file included from fs/binfmt_aout.c:12: include/linux/mm.h:2631:35: note: declared here 2631 | extern unsigned long __must_check vm_mmap(struct file *, unsigned long, | ^~~~~~~ vim +225 fs/binfmt_aout.c 111 112 /* 113 * These are the functions used to load a.out style executables and shared 114 * libraries. There is no binary dependent code anywhere else. 115 */ 116 117 static int load_aout_binary(struct linux_binprm * bprm) 118 { 119 struct pt_regs *regs = current_pt_regs(); 120 struct exec ex; 121 unsigned long error; 122 unsigned long fd_offset; 123 unsigned long rlim; 124 int retval; 125 126 ex = *((struct exec *) bprm->buf); /* exec-header */ 127 if ((N_MAGIC(ex) != ZMAGIC && N_MAGIC(ex) != OMAGIC && 128 N_MAGIC(ex) != QMAGIC && N_MAGIC(ex) != NMAGIC) || 129 N_TRSIZE(ex) || N_DRSIZE(ex) || 130 i_size_read(file_inode(bprm->file)) < ex.a_text+ex.a_data+N_SYMSIZE(ex)+N_TXTOFF(ex)) { 131 return -ENOEXEC; 132 } 133 134 /* 135 * Requires a mmap handler. This prevents people from using a.out 136 * as part of an exploit attack against /proc-related vulnerabilities. 137 */ 138 if (!bprm->file->f_op->mmap) 139 return -ENOEXEC; 140 141 fd_offset = N_TXTOFF(ex); 142 143 /* Check initial limits. This avoids letting people circumvent 144 * size limits imposed on them by creating programs with large 145 * arrays in the data or bss. 146 */ 147 rlim = rlimit(RLIMIT_DATA); 148 if (rlim >= RLIM_INFINITY) 149 rlim = ~0; 150 if (ex.a_data + ex.a_bss > rlim) 151 return -ENOMEM; 152 153 /* Flush all traces of the currently running executable */ 154 retval = begin_new_exec(bprm); 155 if (retval) 156 return retval; 157 158 /* OK, This is the point of no return */ 159 #ifdef __alpha__ 160 SET_AOUT_PERSONALITY(bprm, ex); 161 #else 162 set_personality(PER_LINUX); 163 #endif 164 setup_new_exec(bprm); 165 166 current->mm->end_code = ex.a_text + 167 (current->mm->start_code = N_TXTADDR(ex)); 168 current->mm->end_data = ex.a_data + 169 (current->mm->start_data = N_DATADDR(ex)); 170 current->mm->brk = ex.a_bss + 171 (current->mm->start_brk = N_BSSADDR(ex)); 172 173 retval = setup_arg_pages(bprm, STACK_TOP, EXSTACK_DEFAULT); 174 if (retval < 0) 175 return retval; 176 177 178 if (N_MAGIC(ex) == OMAGIC) { 179 unsigned long text_addr, map_size; 180 loff_t pos; 181 182 text_addr = N_TXTADDR(ex); 183 184 #ifdef __alpha__ 185 pos = fd_offset; 186 map_size = ex.a_text+ex.a_data + PAGE_SIZE - 1; 187 #else 188 pos = 32; 189 map_size = ex.a_text+ex.a_data; 190 #endif 191 error = vm_brk(text_addr & PAGE_MASK, map_size); 192 if (error) 193 return error; 194 195 error = read_code(bprm->file, text_addr, pos, 196 ex.a_text+ex.a_data); 197 if ((signed long)error < 0) 198 return error; 199 } else { 200 if ((ex.a_text & 0xfff || ex.a_data & 0xfff) && 201 (N_MAGIC(ex) != NMAGIC) && printk_ratelimit()) 202 { 203 printk(KERN_NOTICE "executable not page aligned\n"); 204 } 205 206 if ((fd_offset & ~PAGE_MASK) != 0 && printk_ratelimit()) 207 { 208 printk(KERN_WARNING 209 "fd_offset is not page aligned. Please convert program: %pD\n", 210 bprm->file); 211 } 212 213 if (!bprm->file->f_op->mmap||((fd_offset & ~PAGE_MASK) != 0)) { 214 error = vm_brk(N_TXTADDR(ex), ex.a_text+ex.a_data); 215 if (error) 216 return error; 217 218 read_code(bprm->file, N_TXTADDR(ex), fd_offset, 219 ex.a_text + ex.a_data); 220 goto beyond_if; 221 } 222 > 223 error = vm_mmap(bprm->file, N_TXTADDR(ex), ex.a_text, 224 PROT_READ | PROT_EXEC, > 225 MAP_FIXED | MAP_PRIVATE | MAP_DENYWRITE; 226 fd_offset); 227 228 if (error != N_TXTADDR(ex)) 229 return error; 230 231 error = vm_mmap(bprm->file, N_DATADDR(ex), ex.a_data, 232 PROT_READ | PROT_WRITE | PROT_EXEC, 233 MAP_FIXED | MAP_PRIVATE | MAP_DENYWRITE; 234 fd_offset + ex.a_text); 235 if (error != N_DATADDR(ex)) 236 return error; 237 } 238 beyond_if: 239 set_binfmt(&aout_format); 240 241 retval = set_brk(current->mm->start_brk, current->mm->brk); 242 if (retval < 0) 243 return retval; 244 245 current->mm->start_stack = 246 (unsigned long) create_aout_tables((char __user *) bprm->p, bprm); 247 #ifdef __alpha__ 248 regs->gp = ex.a_gpvalue; 249 #endif 250 finalize_exec(bprm); 251 start_thread(regs, ex.a_entry, current->mm->start_stack); 252 return 0; 253 } 254 --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all@xxxxxxxxxxxx
Attachment:
.config.gz
Description: application/gzip