Mark arguments to certain syscalls as being const

Mark arguments to certain system calls as being const where they should be but
aren't. The list includes:

(*) The filename arguments of various stat syscalls, execve(), various utimes
syscalls and some mount syscalls.

(*) The filename arguments of some syscall helpers relating to the above.

(*) The buffer argument of various write syscalls.

Signed-off-by: David Howells <dhowells@redhat.com>
Acked-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>

authored by David Howells and committed by Linus Torvalds c7887325 b84ae4a1

+125 -109
+3 -3
arch/alpha/kernel/osf_sys.c
··· 244 return error; 245 } 246 247 - SYSCALL_DEFINE3(osf_statfs, char __user *, pathname, 248 struct osf_statfs __user *, buffer, unsigned long, bufsiz) 249 { 250 struct path path; ··· 358 return do_mount("", dirname, "proc", flags, NULL); 359 } 360 361 - SYSCALL_DEFINE4(osf_mount, unsigned long, typenr, char __user *, path, 362 int, flag, void __user *, data) 363 { 364 int retval; ··· 932 933 } 934 935 - SYSCALL_DEFINE2(osf_utimes, char __user *, filename, 936 struct timeval32 __user *, tvs) 937 { 938 struct timespec tv[2];
··· 244 return error; 245 } 246 247 + SYSCALL_DEFINE3(osf_statfs, const char __user *, pathname, 248 struct osf_statfs __user *, buffer, unsigned long, bufsiz) 249 { 250 struct path path; ··· 358 return do_mount("", dirname, "proc", flags, NULL); 359 } 360 361 + SYSCALL_DEFINE4(osf_mount, unsigned long, typenr, const char __user *, path, 362 int, flag, void __user *, data) 363 { 364 int retval; ··· 932 933 } 934 935 + SYSCALL_DEFINE2(osf_utimes, const char __user *, filename, 936 struct timeval32 __user *, tvs) 937 { 938 struct timespec tv[2];
+1 -1
arch/alpha/kernel/process.c
··· 387 * sys_execve() executes a new program. 388 */ 389 asmlinkage int 390 - do_sys_execve(char __user *ufilename, char __user * __user *argv, 391 char __user * __user *envp, struct pt_regs *regs) 392 { 393 int error;
··· 387 * sys_execve() executes a new program. 388 */ 389 asmlinkage int 390 + do_sys_execve(const char __user *ufilename, char __user * __user *argv, 391 char __user * __user *envp, struct pt_regs *regs) 392 { 393 int error;
+2 -2
arch/arm/kernel/sys_arm.c
··· 62 /* sys_execve() executes a new program. 63 * This is called indirectly via a small wrapper 64 */ 65 - asmlinkage int sys_execve(char __user *filenamei, char __user * __user *argv, 66 char __user * __user *envp, struct pt_regs *regs) 67 { 68 int error; ··· 84 int ret; 85 86 memset(&regs, 0, sizeof(struct pt_regs)); 87 - ret = do_execve((char *)filename, (char __user * __user *)argv, 88 (char __user * __user *)envp, &regs); 89 if (ret < 0) 90 goto out;
··· 62 /* sys_execve() executes a new program. 63 * This is called indirectly via a small wrapper 64 */ 65 + asmlinkage int sys_execve(const char __user *filenamei, char __user * __user *argv, 66 char __user * __user *envp, struct pt_regs *regs) 67 { 68 int error; ··· 84 int ret; 85 86 memset(&regs, 0, sizeof(struct pt_regs)); 87 + ret = do_execve(filename, (char __user * __user *)argv, 88 (char __user * __user *)envp, &regs); 89 if (ret < 0) 90 goto out;
+3 -3
arch/arm/kernel/sys_oabi-compat.c
··· 141 return copy_to_user(statbuf,&tmp,sizeof(tmp)) ? -EFAULT : 0; 142 } 143 144 - asmlinkage long sys_oabi_stat64(char __user * filename, 145 struct oldabi_stat64 __user * statbuf) 146 { 147 struct kstat stat; ··· 151 return error; 152 } 153 154 - asmlinkage long sys_oabi_lstat64(char __user * filename, 155 struct oldabi_stat64 __user * statbuf) 156 { 157 struct kstat stat; ··· 172 } 173 174 asmlinkage long sys_oabi_fstatat64(int dfd, 175 - char __user *filename, 176 struct oldabi_stat64 __user *statbuf, 177 int flag) 178 {
··· 141 return copy_to_user(statbuf,&tmp,sizeof(tmp)) ? -EFAULT : 0; 142 } 143 144 + asmlinkage long sys_oabi_stat64(const char __user * filename, 145 struct oldabi_stat64 __user * statbuf) 146 { 147 struct kstat stat; ··· 151 return error; 152 } 153 154 + asmlinkage long sys_oabi_lstat64(const char __user * filename, 155 struct oldabi_stat64 __user * statbuf) 156 { 157 struct kstat stat; ··· 172 } 173 174 asmlinkage long sys_oabi_fstatat64(int dfd, 175 + const char __user *filename, 176 struct oldabi_stat64 __user *statbuf, 177 int flag) 178 {
+1 -1
arch/avr32/include/asm/syscalls.h
··· 21 unsigned long, unsigned long, 22 struct pt_regs *); 23 asmlinkage int sys_vfork(struct pt_regs *); 24 - asmlinkage int sys_execve(char __user *, char __user *__user *, 25 char __user *__user *, struct pt_regs *); 26 27 /* kernel/signal.c */
··· 21 unsigned long, unsigned long, 22 struct pt_regs *); 23 asmlinkage int sys_vfork(struct pt_regs *); 24 + asmlinkage int sys_execve(const char __user *, char __user *__user *, 25 char __user *__user *, struct pt_regs *); 26 27 /* kernel/signal.c */
+2 -1
arch/avr32/kernel/process.c
··· 383 0, NULL, NULL); 384 } 385 386 - asmlinkage int sys_execve(char __user *ufilename, char __user *__user *uargv, 387 char __user *__user *uenvp, struct pt_regs *regs) 388 { 389 int error;
··· 383 0, NULL, NULL); 384 } 385 386 + asmlinkage int sys_execve(const char __user *ufilename, 387 + char __user *__user *uargv, 388 char __user *__user *uenvp, struct pt_regs *regs) 389 { 390 int error;
+1 -1
arch/blackfin/kernel/process.c
··· 209 /* 210 * sys_execve() executes a new program. 211 */ 212 - asmlinkage int sys_execve(char __user *name, char __user * __user *argv, char __user * __user *envp) 213 { 214 int error; 215 char *filename;
··· 209 /* 210 * sys_execve() executes a new program. 211 */ 212 + asmlinkage int sys_execve(const char __user *name, char __user * __user *argv, char __user * __user *envp) 213 { 214 int error; 215 char *filename;
+2 -1
arch/frv/kernel/process.c
··· 250 /* 251 * sys_execve() executes a new program. 252 */ 253 - asmlinkage int sys_execve(char __user *name, char __user * __user *argv, char __user * __user *envp) 254 { 255 int error; 256 char * filename;
··· 250 /* 251 * sys_execve() executes a new program. 252 */ 253 + asmlinkage int sys_execve(const char __user *name, char __user * __user *argv, 254 + char __user * __user *envp) 255 { 256 int error; 257 char * filename;
+1 -1
arch/h8300/kernel/process.c
··· 212 /* 213 * sys_execve() executes a new program. 214 */ 215 - asmlinkage int sys_execve(char *name, char **argv, char **envp,int dummy,...) 216 { 217 int error; 218 char * filename;
··· 212 /* 213 * sys_execve() executes a new program. 214 */ 215 + asmlinkage int sys_execve(const char *name, char **argv, char **envp,int dummy,...) 216 { 217 int error; 218 char * filename;
+1 -1
arch/ia64/include/asm/unistd.h
··· 353 int fd, long pgoff); 354 struct pt_regs; 355 struct sigaction; 356 - long sys_execve(char __user *filename, char __user * __user *argv, 357 char __user * __user *envp, struct pt_regs *regs); 358 asmlinkage long sys_ia64_pipe(void); 359 asmlinkage long sys_rt_sigaction(int sig,
··· 353 int fd, long pgoff); 354 struct pt_regs; 355 struct sigaction; 356 + long sys_execve(const char __user *filename, char __user * __user *argv, 357 char __user * __user *envp, struct pt_regs *regs); 358 asmlinkage long sys_ia64_pipe(void); 359 asmlinkage long sys_rt_sigaction(int sig,
+1 -1
arch/ia64/kernel/process.c
··· 633 } 634 635 long 636 - sys_execve (char __user *filename, char __user * __user *argv, char __user * __user *envp, 637 struct pt_regs *regs) 638 { 639 char *fname;
··· 633 } 634 635 long 636 + sys_execve (const char __user *filename, char __user * __user *argv, char __user * __user *envp, 637 struct pt_regs *regs) 638 { 639 char *fname;
+2 -1
arch/m32r/kernel/process.c
··· 288 /* 289 * sys_execve() executes a new program. 290 */ 291 - asmlinkage int sys_execve(char __user *ufilename, char __user * __user *uargv, 292 char __user * __user *uenvp, 293 unsigned long r3, unsigned long r4, unsigned long r5, 294 unsigned long r6, struct pt_regs regs)
··· 288 /* 289 * sys_execve() executes a new program. 290 */ 291 + asmlinkage int sys_execve(const char __user *ufilename, 292 + char __user * __user *uargv, 293 char __user * __user *uenvp, 294 unsigned long r3, unsigned long r4, unsigned long r5, 295 unsigned long r6, struct pt_regs regs)
+1 -1
arch/m68k/kernel/process.c
··· 315 /* 316 * sys_execve() executes a new program. 317 */ 318 - asmlinkage int sys_execve(char __user *name, char __user * __user *argv, char __user * __user *envp) 319 { 320 int error; 321 char * filename;
··· 315 /* 316 * sys_execve() executes a new program. 317 */ 318 + asmlinkage int sys_execve(const char __user *name, char __user * __user *argv, char __user * __user *envp) 319 { 320 int error; 321 char * filename;
+1 -1
arch/m68knommu/kernel/process.c
··· 350 /* 351 * sys_execve() executes a new program. 352 */ 353 - asmlinkage int sys_execve(char *name, char **argv, char **envp) 354 { 355 int error; 356 char * filename;
··· 350 /* 351 * sys_execve() executes a new program. 352 */ 353 + asmlinkage int sys_execve(const char *name, char **argv, char **envp) 354 { 355 int error; 356 char * filename;
+1 -1
arch/microblaze/kernel/sys_microblaze.c
··· 47 return do_fork(flags, stack, regs, 0, NULL, NULL); 48 } 49 50 - asmlinkage long microblaze_execve(char __user *filenamei, char __user *__user *argv, 51 char __user *__user *envp, struct pt_regs *regs) 52 { 53 int error;
··· 47 return do_fork(flags, stack, regs, 0, NULL, NULL); 48 } 49 50 + asmlinkage long microblaze_execve(const char __user *filenamei, char __user *__user *argv, 51 char __user *__user *envp, struct pt_regs *regs) 52 { 53 int error;
+1 -1
arch/mips/kernel/syscall.c
··· 254 int error; 255 char * filename; 256 257 - filename = getname((char __user *) (long)regs.regs[4]); 258 error = PTR_ERR(filename); 259 if (IS_ERR(filename)) 260 goto out;
··· 254 int error; 255 char * filename; 256 257 + filename = getname((const char __user *) (long)regs.regs[4]); 258 error = PTR_ERR(filename); 259 if (IS_ERR(filename)) 260 goto out;
+1 -1
arch/mn10300/kernel/process.c
··· 268 0, NULL, NULL); 269 } 270 271 - asmlinkage long sys_execve(char __user *name, 272 char __user * __user *argv, 273 char __user * __user *envp) 274 {
··· 268 0, NULL, NULL); 269 } 270 271 + asmlinkage long sys_execve(const char __user *name, 272 char __user * __user *argv, 273 char __user * __user *envp) 274 {
+4 -3
arch/parisc/hpux/fs.c
··· 36 int error; 37 char *filename; 38 39 - filename = getname((char __user *) regs->gr[26]); 40 error = PTR_ERR(filename); 41 if (IS_ERR(filename)) 42 goto out; ··· 169 return copy_to_user(statbuf,&tmp,sizeof(tmp)) ? -EFAULT : 0; 170 } 171 172 - long hpux_stat64(char __user *filename, struct hpux_stat64 __user *statbuf) 173 { 174 struct kstat stat; 175 int error = vfs_stat(filename, &stat); ··· 191 return error; 192 } 193 194 - long hpux_lstat64(char __user *filename, struct hpux_stat64 __user *statbuf) 195 { 196 struct kstat stat; 197 int error = vfs_lstat(filename, &stat);
··· 36 int error; 37 char *filename; 38 39 + filename = getname((const char __user *) regs->gr[26]); 40 error = PTR_ERR(filename); 41 if (IS_ERR(filename)) 42 goto out; ··· 169 return copy_to_user(statbuf,&tmp,sizeof(tmp)) ? -EFAULT : 0; 170 } 171 172 + long hpux_stat64(const char __user *filename, struct hpux_stat64 __user *statbuf) 173 { 174 struct kstat stat; 175 int error = vfs_stat(filename, &stat); ··· 191 return error; 192 } 193 194 + long hpux_lstat64(const char __user *filename, 195 + struct hpux_stat64 __user *statbuf) 196 { 197 struct kstat stat; 198 int error = vfs_lstat(filename, &stat);
+1 -1
arch/powerpc/kernel/process.c
··· 1027 int error; 1028 char *filename; 1029 1030 - filename = getname((char __user *) a0); 1031 error = PTR_ERR(filename); 1032 if (IS_ERR(filename)) 1033 goto out;
··· 1027 int error; 1028 char *filename; 1029 1030 + filename = getname((const char __user *) a0); 1031 error = PTR_ERR(filename); 1032 if (IS_ERR(filename)) 1033 goto out;
+1 -1
arch/powerpc/kernel/sys_ppc32.c
··· 546 return sys_pread64(fd, ubuf, count, ((loff_t)poshi << 32) | poslo); 547 } 548 549 - compat_ssize_t compat_sys_pwrite64(unsigned int fd, char __user *ubuf, compat_size_t count, 550 u32 reg6, u32 poshi, u32 poslo) 551 { 552 return sys_pwrite64(fd, ubuf, count, ((loff_t)poshi << 32) | poslo);
··· 546 return sys_pread64(fd, ubuf, count, ((loff_t)poshi << 32) | poslo); 547 } 548 549 + compat_ssize_t compat_sys_pwrite64(unsigned int fd, const char __user *ubuf, compat_size_t count, 550 u32 reg6, u32 poshi, u32 poslo) 551 { 552 return sys_pwrite64(fd, ubuf, count, ((loff_t)poshi << 32) | poslo);
+5 -5
arch/s390/kernel/compat_linux.c
··· 436 * sys32_execve() executes a new program after the asm stub has set 437 * things up for us. This should basically do what I want it to. 438 */ 439 - asmlinkage long sys32_execve(char __user *name, compat_uptr_t __user *argv, 440 compat_uptr_t __user *envp) 441 { 442 struct pt_regs *regs = task_pt_regs(current); ··· 570 return copy_to_user(ubuf,&tmp,sizeof(tmp)) ? -EFAULT : 0; 571 } 572 573 - asmlinkage long sys32_stat64(char __user * filename, struct stat64_emu31 __user * statbuf) 574 { 575 struct kstat stat; 576 int ret = vfs_stat(filename, &stat); ··· 579 return ret; 580 } 581 582 - asmlinkage long sys32_lstat64(char __user * filename, struct stat64_emu31 __user * statbuf) 583 { 584 struct kstat stat; 585 int ret = vfs_lstat(filename, &stat); ··· 597 return ret; 598 } 599 600 - asmlinkage long sys32_fstatat64(unsigned int dfd, char __user *filename, 601 struct stat64_emu31 __user* statbuf, int flag) 602 { 603 struct kstat stat; ··· 655 return sys_read(fd, buf, count); 656 } 657 658 - asmlinkage long sys32_write(unsigned int fd, char __user * buf, size_t count) 659 { 660 if ((compat_ssize_t) count < 0) 661 return -EINVAL;
··· 436 * sys32_execve() executes a new program after the asm stub has set 437 * things up for us. This should basically do what I want it to. 438 */ 439 + asmlinkage long sys32_execve(const char __user *name, compat_uptr_t __user *argv, 440 compat_uptr_t __user *envp) 441 { 442 struct pt_regs *regs = task_pt_regs(current); ··· 570 return copy_to_user(ubuf,&tmp,sizeof(tmp)) ? -EFAULT : 0; 571 } 572 573 + asmlinkage long sys32_stat64(const char __user * filename, struct stat64_emu31 __user * statbuf) 574 { 575 struct kstat stat; 576 int ret = vfs_stat(filename, &stat); ··· 579 return ret; 580 } 581 582 + asmlinkage long sys32_lstat64(const char __user * filename, struct stat64_emu31 __user * statbuf) 583 { 584 struct kstat stat; 585 int ret = vfs_lstat(filename, &stat); ··· 597 return ret; 598 } 599 600 + asmlinkage long sys32_fstatat64(unsigned int dfd, const char __user *filename, 601 struct stat64_emu31 __user* statbuf, int flag) 602 { 603 struct kstat stat; ··· 655 return sys_read(fd, buf, count); 656 } 657 658 + asmlinkage long sys32_write(unsigned int fd, const char __user * buf, size_t count) 659 { 660 if ((compat_ssize_t) count < 0) 661 return -EINVAL;
+5 -5
arch/s390/kernel/compat_linux.h
··· 193 compat_sigset_t __user *oset, size_t sigsetsize); 194 long sys32_rt_sigpending(compat_sigset_t __user *set, size_t sigsetsize); 195 long sys32_rt_sigqueueinfo(int pid, int sig, compat_siginfo_t __user *uinfo); 196 - long sys32_execve(char __user *name, compat_uptr_t __user *argv, 197 compat_uptr_t __user *envp); 198 long sys32_init_module(void __user *umod, unsigned long len, 199 const char __user *uargs); ··· 207 size_t count); 208 long sys32_sendfile64(int out_fd, int in_fd, compat_loff_t __user *offset, 209 s32 count); 210 - long sys32_stat64(char __user * filename, struct stat64_emu31 __user * statbuf); 211 - long sys32_lstat64(char __user * filename, 212 struct stat64_emu31 __user * statbuf); 213 long sys32_fstat64(unsigned long fd, struct stat64_emu31 __user * statbuf); 214 - long sys32_fstatat64(unsigned int dfd, char __user *filename, 215 struct stat64_emu31 __user* statbuf, int flag); 216 unsigned long old32_mmap(struct mmap_arg_struct_emu31 __user *arg); 217 long sys32_mmap2(struct mmap_arg_struct_emu31 __user *arg); 218 long sys32_read(unsigned int fd, char __user * buf, size_t count); 219 - long sys32_write(unsigned int fd, char __user * buf, size_t count); 220 long sys32_fadvise64(int fd, loff_t offset, size_t len, int advise); 221 long sys32_fadvise64_64(struct fadvise64_64_args __user *args); 222 long sys32_sigaction(int sig, const struct old_sigaction32 __user *act,
··· 193 compat_sigset_t __user *oset, size_t sigsetsize); 194 long sys32_rt_sigpending(compat_sigset_t __user *set, size_t sigsetsize); 195 long sys32_rt_sigqueueinfo(int pid, int sig, compat_siginfo_t __user *uinfo); 196 + long sys32_execve(const char __user *name, compat_uptr_t __user *argv, 197 compat_uptr_t __user *envp); 198 long sys32_init_module(void __user *umod, unsigned long len, 199 const char __user *uargs); ··· 207 size_t count); 208 long sys32_sendfile64(int out_fd, int in_fd, compat_loff_t __user *offset, 209 s32 count); 210 + long sys32_stat64(const char __user * filename, struct stat64_emu31 __user * statbuf); 211 + long sys32_lstat64(const char __user * filename, 212 struct stat64_emu31 __user * statbuf); 213 long sys32_fstat64(unsigned long fd, struct stat64_emu31 __user * statbuf); 214 + long sys32_fstatat64(unsigned int dfd, const char __user *filename, 215 struct stat64_emu31 __user* statbuf, int flag); 216 unsigned long old32_mmap(struct mmap_arg_struct_emu31 __user *arg); 217 long sys32_mmap2(struct mmap_arg_struct_emu31 __user *arg); 218 long sys32_read(unsigned int fd, char __user * buf, size_t count); 219 + long sys32_write(unsigned int fd, const char __user * buf, size_t count); 220 long sys32_fadvise64(int fd, loff_t offset, size_t len, int advise); 221 long sys32_fadvise64_64(struct fadvise64_64_args __user *args); 222 long sys32_sigaction(int sig, const struct old_sigaction32 __user *act,
+1 -1
arch/s390/kernel/entry.h
··· 42 int __user *parent_tidptr, int __user *child_tidptr); 43 long sys_vfork(void); 44 void execve_tail(void); 45 - long sys_execve(char __user *name, char __user * __user *argv, 46 char __user * __user *envp); 47 long sys_sigsuspend(int history0, int history1, old_sigset_t mask); 48 long sys_sigaction(int sig, const struct old_sigaction __user *act,
··· 42 int __user *parent_tidptr, int __user *child_tidptr); 43 long sys_vfork(void); 44 void execve_tail(void); 45 + long sys_execve(const char __user *name, char __user * __user *argv, 46 char __user * __user *envp); 47 long sys_sigsuspend(int history0, int history1, old_sigset_t mask); 48 long sys_sigaction(int sig, const struct old_sigaction __user *act,
+1 -1
arch/s390/kernel/process.c
··· 267 /* 268 * sys_execve() executes a new program. 269 */ 270 - SYSCALL_DEFINE3(execve, char __user *, name, char __user * __user *, argv, 271 char __user * __user *, envp) 272 { 273 struct pt_regs *regs = task_pt_regs(current);
··· 267 /* 268 * sys_execve() executes a new program. 269 */ 270 + SYSCALL_DEFINE3(execve, const char __user *, name, char __user * __user *, argv, 271 char __user * __user *, envp) 272 { 273 struct pt_regs *regs = task_pt_regs(current);
+1 -1
arch/sh/include/asm/syscalls_32.h
··· 19 asmlinkage int sys_vfork(unsigned long r4, unsigned long r5, 20 unsigned long r6, unsigned long r7, 21 struct pt_regs __regs); 22 - asmlinkage int sys_execve(char __user *ufilename, char __user * __user *uargv, 23 char __user * __user *uenvp, unsigned long r7, 24 struct pt_regs __regs); 25 asmlinkage int sys_sigsuspend(old_sigset_t mask, unsigned long r5,
··· 19 asmlinkage int sys_vfork(unsigned long r4, unsigned long r5, 20 unsigned long r6, unsigned long r7, 21 struct pt_regs __regs); 22 + asmlinkage int sys_execve(const char __user *ufilename, char __user * __user *uargv, 23 char __user * __user *uenvp, unsigned long r7, 24 struct pt_regs __regs); 25 asmlinkage int sys_sigsuspend(old_sigset_t mask, unsigned long r5,
+1 -1
arch/sh/include/asm/syscalls_64.h
··· 21 unsigned long r4, unsigned long r5, 22 unsigned long r6, unsigned long r7, 23 struct pt_regs *pregs); 24 - asmlinkage int sys_execve(char *ufilename, char **uargv, 25 char **uenvp, unsigned long r5, 26 unsigned long r6, unsigned long r7, 27 struct pt_regs *pregs);
··· 21 unsigned long r4, unsigned long r5, 22 unsigned long r6, unsigned long r7, 23 struct pt_regs *pregs); 24 + asmlinkage int sys_execve(const char *ufilename, char **uargv, 25 char **uenvp, unsigned long r5, 26 unsigned long r6, unsigned long r7, 27 struct pt_regs *pregs);
+1 -1
arch/sh/kernel/process_64.c
··· 483 /* 484 * sys_execve() executes a new program. 485 */ 486 - asmlinkage int sys_execve(char *ufilename, char **uargv, 487 char **uenvp, unsigned long r5, 488 unsigned long r6, unsigned long r7, 489 struct pt_regs *pregs)
··· 483 /* 484 * sys_execve() executes a new program. 485 */ 486 + asmlinkage int sys_execve(const char *ufilename, char **uargv, 487 char **uenvp, unsigned long r5, 488 unsigned long r6, unsigned long r7, 489 struct pt_regs *pregs)
+4 -3
arch/sparc/kernel/sys_sparc32.c
··· 162 return err; 163 } 164 165 - asmlinkage long compat_sys_stat64(char __user * filename, 166 struct compat_stat64 __user *statbuf) 167 { 168 struct kstat stat; ··· 173 return error; 174 } 175 176 - asmlinkage long compat_sys_lstat64(char __user * filename, 177 struct compat_stat64 __user *statbuf) 178 { 179 struct kstat stat; ··· 195 return error; 196 } 197 198 - asmlinkage long compat_sys_fstatat64(unsigned int dfd, char __user *filename, 199 struct compat_stat64 __user * statbuf, int flag) 200 { 201 struct kstat stat;
··· 162 return err; 163 } 164 165 + asmlinkage long compat_sys_stat64(const char __user * filename, 166 struct compat_stat64 __user *statbuf) 167 { 168 struct kstat stat; ··· 173 return error; 174 } 175 176 + asmlinkage long compat_sys_lstat64(const char __user * filename, 177 struct compat_stat64 __user *statbuf) 178 { 179 struct kstat stat; ··· 195 return error; 196 } 197 198 + asmlinkage long compat_sys_fstatat64(unsigned int dfd, 199 + const char __user *filename, 200 struct compat_stat64 __user * statbuf, int flag) 201 { 202 struct kstat stat;
+3 -3
arch/um/kernel/exec.c
··· 44 PT_REGS_SP(regs) = esp; 45 } 46 47 - static long execve1(char *file, char __user * __user *argv, 48 char __user *__user *env) 49 { 50 long error; ··· 61 return error; 62 } 63 64 - long um_execve(char *file, char __user *__user *argv, char __user *__user *env) 65 { 66 long err; 67 ··· 71 return err; 72 } 73 74 - long sys_execve(char __user *file, char __user *__user *argv, 75 char __user *__user *env) 76 { 77 long error;
··· 44 PT_REGS_SP(regs) = esp; 45 } 46 47 + static long execve1(const char *file, char __user * __user *argv, 48 char __user *__user *env) 49 { 50 long error; ··· 61 return error; 62 } 63 64 + long um_execve(const char *file, char __user *__user *argv, char __user *__user *env) 65 { 66 long err; 67 ··· 71 return err; 72 } 73 74 + long sys_execve(const char __user *file, char __user *__user *argv, 75 char __user *__user *env) 76 { 77 long error;
+1 -1
arch/um/kernel/internal.h
··· 1 - extern long um_execve(char *file, char __user *__user *argv, char __user *__user *env);
··· 1 + extern long um_execve(const char *file, char __user *__user *argv, char __user *__user *env);
+1 -1
arch/um/kernel/syscall.c
··· 58 59 fs = get_fs(); 60 set_fs(KERNEL_DS); 61 - ret = um_execve((char *)filename, (char __user *__user *)argv, 62 (char __user *__user *) envp); 63 set_fs(fs); 64
··· 58 59 fs = get_fs(); 60 set_fs(KERNEL_DS); 61 + ret = um_execve(filename, (char __user *__user *)argv, 62 (char __user *__user *) envp); 63 set_fs(fs); 64
+7 -7
arch/x86/ia32/sys_ia32.c
··· 51 #define AA(__x) ((unsigned long)(__x)) 52 53 54 - asmlinkage long sys32_truncate64(char __user *filename, 55 unsigned long offset_low, 56 unsigned long offset_high) 57 { ··· 96 return 0; 97 } 98 99 - asmlinkage long sys32_stat64(char __user *filename, 100 struct stat64 __user *statbuf) 101 { 102 struct kstat stat; ··· 107 return ret; 108 } 109 110 - asmlinkage long sys32_lstat64(char __user *filename, 111 struct stat64 __user *statbuf) 112 { 113 struct kstat stat; ··· 126 return ret; 127 } 128 129 - asmlinkage long sys32_fstatat(unsigned int dfd, char __user *filename, 130 struct stat64 __user *statbuf, int flag) 131 { 132 struct kstat stat; ··· 408 ((loff_t)AA(poshi) << 32) | AA(poslo)); 409 } 410 411 - asmlinkage long sys32_pwrite(unsigned int fd, char __user *ubuf, u32 count, 412 - u32 poslo, u32 poshi) 413 { 414 return sys_pwrite64(fd, ubuf, count, 415 ((loff_t)AA(poshi) << 32) | AA(poslo)); ··· 449 return ret; 450 } 451 452 - asmlinkage long sys32_execve(char __user *name, compat_uptr_t __user *argv, 453 compat_uptr_t __user *envp, struct pt_regs *regs) 454 { 455 long error;
··· 51 #define AA(__x) ((unsigned long)(__x)) 52 53 54 + asmlinkage long sys32_truncate64(const char __user *filename, 55 unsigned long offset_low, 56 unsigned long offset_high) 57 { ··· 96 return 0; 97 } 98 99 + asmlinkage long sys32_stat64(const char __user *filename, 100 struct stat64 __user *statbuf) 101 { 102 struct kstat stat; ··· 107 return ret; 108 } 109 110 + asmlinkage long sys32_lstat64(const char __user *filename, 111 struct stat64 __user *statbuf) 112 { 113 struct kstat stat; ··· 126 return ret; 127 } 128 129 + asmlinkage long sys32_fstatat(unsigned int dfd, const char __user *filename, 130 struct stat64 __user *statbuf, int flag) 131 { 132 struct kstat stat; ··· 408 ((loff_t)AA(poshi) << 32) | AA(poslo)); 409 } 410 411 + asmlinkage long sys32_pwrite(unsigned int fd, const char __user *ubuf, 412 + u32 count, u32 poslo, u32 poshi) 413 { 414 return sys_pwrite64(fd, ubuf, count, 415 ((loff_t)AA(poshi) << 32) | AA(poslo)); ··· 449 return ret; 450 } 451 452 + asmlinkage long sys32_execve(const char __user *name, compat_uptr_t __user *argv, 453 compat_uptr_t __user *envp, struct pt_regs *regs) 454 { 455 long error;
+6 -6
arch/x86/include/asm/sys_ia32.h
··· 18 #include <asm/ia32.h> 19 20 /* ia32/sys_ia32.c */ 21 - asmlinkage long sys32_truncate64(char __user *, unsigned long, unsigned long); 22 asmlinkage long sys32_ftruncate64(unsigned int, unsigned long, unsigned long); 23 24 - asmlinkage long sys32_stat64(char __user *, struct stat64 __user *); 25 - asmlinkage long sys32_lstat64(char __user *, struct stat64 __user *); 26 asmlinkage long sys32_fstat64(unsigned int, struct stat64 __user *); 27 - asmlinkage long sys32_fstatat(unsigned int, char __user *, 28 struct stat64 __user *, int); 29 struct mmap_arg_struct32; 30 asmlinkage long sys32_mmap(struct mmap_arg_struct32 __user *); ··· 49 asmlinkage long sys32_rt_sigqueueinfo(int, int, compat_siginfo_t __user *); 50 51 asmlinkage long sys32_pread(unsigned int, char __user *, u32, u32, u32); 52 - asmlinkage long sys32_pwrite(unsigned int, char __user *, u32, u32, u32); 53 54 asmlinkage long sys32_personality(unsigned long); 55 asmlinkage long sys32_sendfile(int, int, compat_off_t __user *, s32); 56 57 - asmlinkage long sys32_execve(char __user *, compat_uptr_t __user *, 58 compat_uptr_t __user *, struct pt_regs *); 59 asmlinkage long sys32_clone(unsigned int, unsigned int, struct pt_regs *); 60
··· 18 #include <asm/ia32.h> 19 20 /* ia32/sys_ia32.c */ 21 + asmlinkage long sys32_truncate64(const char __user *, unsigned long, unsigned long); 22 asmlinkage long sys32_ftruncate64(unsigned int, unsigned long, unsigned long); 23 24 + asmlinkage long sys32_stat64(const char __user *, struct stat64 __user *); 25 + asmlinkage long sys32_lstat64(const char __user *, struct stat64 __user *); 26 asmlinkage long sys32_fstat64(unsigned int, struct stat64 __user *); 27 + asmlinkage long sys32_fstatat(unsigned int, const char __user *, 28 struct stat64 __user *, int); 29 struct mmap_arg_struct32; 30 asmlinkage long sys32_mmap(struct mmap_arg_struct32 __user *); ··· 49 asmlinkage long sys32_rt_sigqueueinfo(int, int, compat_siginfo_t __user *); 50 51 asmlinkage long sys32_pread(unsigned int, char __user *, u32, u32, u32); 52 + asmlinkage long sys32_pwrite(unsigned int, const char __user *, u32, u32, u32); 53 54 asmlinkage long sys32_personality(unsigned long); 55 asmlinkage long sys32_sendfile(int, int, compat_off_t __user *, s32); 56 57 + asmlinkage long sys32_execve(const char __user *, compat_uptr_t __user *, 58 compat_uptr_t __user *, struct pt_regs *); 59 asmlinkage long sys32_clone(unsigned int, unsigned int, struct pt_regs *); 60
+1 -1
arch/x86/include/asm/syscalls.h
··· 23 /* kernel/process.c */ 24 int sys_fork(struct pt_regs *); 25 int sys_vfork(struct pt_regs *); 26 - long sys_execve(char __user *, char __user * __user *, 27 char __user * __user *, struct pt_regs *); 28 long sys_clone(unsigned long, unsigned long, void __user *, 29 void __user *, struct pt_regs *);
··· 23 /* kernel/process.c */ 24 int sys_fork(struct pt_regs *); 25 int sys_vfork(struct pt_regs *); 26 + long sys_execve(const char __user *, char __user * __user *, 27 char __user * __user *, struct pt_regs *); 28 long sys_clone(unsigned long, unsigned long, void __user *, 29 void __user *, struct pt_regs *);
+2 -2
arch/x86/kernel/entry_64.S
··· 1185 * execve(). This function needs to use IRET, not SYSRET, to set up all state properly. 1186 * 1187 * C extern interface: 1188 - * extern long execve(char *name, char **argv, char **envp) 1189 * 1190 * asm input arguments: 1191 * rdi: name, rsi: argv, rdx: envp 1192 * 1193 * We want to fallback into: 1194 - * extern long sys_execve(char *name, char **argv,char **envp, struct pt_regs *regs) 1195 * 1196 * do_sys_execve asm fallback arguments: 1197 * rdi: name, rsi: argv, rdx: envp, rcx: fake frame on the stack
··· 1185 * execve(). This function needs to use IRET, not SYSRET, to set up all state properly. 1186 * 1187 * C extern interface: 1188 + * extern long execve(const char *name, char **argv, char **envp) 1189 * 1190 * asm input arguments: 1191 * rdi: name, rsi: argv, rdx: envp 1192 * 1193 * We want to fallback into: 1194 + * extern long sys_execve(const char *name, char **argv,char **envp, struct pt_regs *regs) 1195 * 1196 * do_sys_execve asm fallback arguments: 1197 * rdi: name, rsi: argv, rdx: envp, rcx: fake frame on the stack
+1 -1
arch/x86/kernel/process.c
··· 301 /* 302 * sys_execve() executes a new program. 303 */ 304 - long sys_execve(char __user *name, char __user * __user *argv, 305 char __user * __user *envp, struct pt_regs *regs) 306 { 307 long error;
··· 301 /* 302 * sys_execve() executes a new program. 303 */ 304 + long sys_execve(const char __user *name, char __user * __user *argv, 305 char __user * __user *envp, struct pt_regs *regs) 306 { 307 long error;
+1 -1
arch/xtensa/kernel/process.c
··· 318 */ 319 320 asmlinkage 321 - long xtensa_execve(char __user *name, char __user * __user *argv, 322 char __user * __user *envp, 323 long a3, long a4, long a5, 324 struct pt_regs *regs)
··· 318 */ 319 320 asmlinkage 321 + long xtensa_execve(const char __user *name, char __user * __user *argv, 322 char __user * __user *envp, 323 long a3, long a4, long a5, 324 struct pt_regs *regs)
+13 -10
fs/compat.c
··· 77 * Not all architectures have sys_utime, so implement this in terms 78 * of sys_utimes. 79 */ 80 - asmlinkage long compat_sys_utime(char __user *filename, struct compat_utimbuf __user *t) 81 { 82 struct timespec tv[2]; 83 ··· 92 return do_utimes(AT_FDCWD, filename, t ? tv : NULL, 0); 93 } 94 95 - asmlinkage long compat_sys_utimensat(unsigned int dfd, char __user *filename, struct compat_timespec __user *t, int flags) 96 { 97 struct timespec tv[2]; 98 ··· 107 return do_utimes(dfd, filename, t ? tv : NULL, flags); 108 } 109 110 - asmlinkage long compat_sys_futimesat(unsigned int dfd, char __user *filename, struct compat_timeval __user *t) 111 { 112 struct timespec tv[2]; 113 ··· 126 return do_utimes(dfd, filename, t ? tv : NULL, 0); 127 } 128 129 - asmlinkage long compat_sys_utimes(char __user *filename, struct compat_timeval __user *t) 130 { 131 return compat_sys_futimesat(AT_FDCWD, filename, t); 132 } ··· 170 return err; 171 } 172 173 - asmlinkage long compat_sys_newstat(char __user * filename, 174 struct compat_stat __user *statbuf) 175 { 176 struct kstat stat; ··· 182 return cp_compat_stat(&stat, statbuf); 183 } 184 185 - asmlinkage long compat_sys_newlstat(char __user * filename, 186 struct compat_stat __user *statbuf) 187 { 188 struct kstat stat; ··· 195 } 196 197 #ifndef __ARCH_WANT_STAT64 198 - asmlinkage long compat_sys_newfstatat(unsigned int dfd, char __user *filename, 199 struct compat_stat __user *statbuf, int flag) 200 { 201 struct kstat stat; ··· 839 #define NCPFS_NAME "ncpfs" 840 #define NFS4_NAME "nfs4" 841 842 - asmlinkage long compat_sys_mount(char __user * dev_name, char __user * dir_name, 843 - char __user * type, unsigned long flags, 844 - void __user * data) 845 { 846 char *kernel_type; 847 unsigned long data_page;
··· 77 * Not all architectures have sys_utime, so implement this in terms 78 * of sys_utimes. 79 */ 80 + asmlinkage long compat_sys_utime(const char __user *filename, 81 + struct compat_utimbuf __user *t) 82 { 83 struct timespec tv[2]; 84 ··· 91 return do_utimes(AT_FDCWD, filename, t ? tv : NULL, 0); 92 } 93 94 + asmlinkage long compat_sys_utimensat(unsigned int dfd, const char __user *filename, struct compat_timespec __user *t, int flags) 95 { 96 struct timespec tv[2]; 97 ··· 106 return do_utimes(dfd, filename, t ? tv : NULL, flags); 107 } 108 109 + asmlinkage long compat_sys_futimesat(unsigned int dfd, const char __user *filename, struct compat_timeval __user *t) 110 { 111 struct timespec tv[2]; 112 ··· 125 return do_utimes(dfd, filename, t ? tv : NULL, 0); 126 } 127 128 + asmlinkage long compat_sys_utimes(const char __user *filename, struct compat_timeval __user *t) 129 { 130 return compat_sys_futimesat(AT_FDCWD, filename, t); 131 } ··· 169 return err; 170 } 171 172 + asmlinkage long compat_sys_newstat(const char __user * filename, 173 struct compat_stat __user *statbuf) 174 { 175 struct kstat stat; ··· 181 return cp_compat_stat(&stat, statbuf); 182 } 183 184 + asmlinkage long compat_sys_newlstat(const char __user * filename, 185 struct compat_stat __user *statbuf) 186 { 187 struct kstat stat; ··· 194 } 195 196 #ifndef __ARCH_WANT_STAT64 197 + asmlinkage long compat_sys_newfstatat(unsigned int dfd, 198 + const char __user *filename, 199 struct compat_stat __user *statbuf, int flag) 200 { 201 struct kstat stat; ··· 837 #define NCPFS_NAME "ncpfs" 838 #define NFS4_NAME "nfs4" 839 840 + asmlinkage long compat_sys_mount(const char __user * dev_name, 841 + const char __user * dir_name, 842 + const char __user * type, unsigned long flags, 843 + const void __user * data) 844 { 845 char *kernel_type; 846 unsigned long data_page;
+18 -11
fs/stat.c
··· 68 } 69 EXPORT_SYMBOL(vfs_fstat); 70 71 - int vfs_fstatat(int dfd, char __user *filename, struct kstat *stat, int flag) 72 { 73 struct path path; 74 int error = -EINVAL; ··· 92 } 93 EXPORT_SYMBOL(vfs_fstatat); 94 95 - int vfs_stat(char __user *name, struct kstat *stat) 96 { 97 return vfs_fstatat(AT_FDCWD, name, stat, 0); 98 } 99 EXPORT_SYMBOL(vfs_stat); 100 101 - int vfs_lstat(char __user *name, struct kstat *stat) 102 { 103 return vfs_fstatat(AT_FDCWD, name, stat, AT_SYMLINK_NOFOLLOW); 104 } ··· 148 return copy_to_user(statbuf,&tmp,sizeof(tmp)) ? -EFAULT : 0; 149 } 150 151 - SYSCALL_DEFINE2(stat, char __user *, filename, struct __old_kernel_stat __user *, statbuf) 152 { 153 struct kstat stat; 154 int error; ··· 161 return cp_old_stat(&stat, statbuf); 162 } 163 164 - SYSCALL_DEFINE2(lstat, char __user *, filename, struct __old_kernel_stat __user *, statbuf) 165 { 166 struct kstat stat; 167 int error; ··· 237 return copy_to_user(statbuf,&tmp,sizeof(tmp)) ? -EFAULT : 0; 238 } 239 240 - SYSCALL_DEFINE2(newstat, char __user *, filename, struct stat __user *, statbuf) 241 { 242 struct kstat stat; 243 int error = vfs_stat(filename, &stat); ··· 248 return cp_new_stat(&stat, statbuf); 249 } 250 251 - SYSCALL_DEFINE2(newlstat, char __user *, filename, struct stat __user *, statbuf) 252 { 253 struct kstat stat; 254 int error; ··· 262 } 263 264 #if !defined(__ARCH_WANT_STAT64) || defined(__ARCH_WANT_SYS_NEWFSTATAT) 265 - SYSCALL_DEFINE4(newfstatat, int, dfd, char __user *, filename, 266 struct stat __user *, statbuf, int, flag) 267 { 268 struct kstat stat; ··· 360 return copy_to_user(statbuf,&tmp,sizeof(tmp)) ? -EFAULT : 0; 361 } 362 363 - SYSCALL_DEFINE2(stat64, char __user *, filename, struct stat64 __user *, statbuf) 364 { 365 struct kstat stat; 366 int error = vfs_stat(filename, &stat); ··· 372 return error; 373 } 374 375 - SYSCALL_DEFINE2(lstat64, char __user *, filename, struct stat64 __user *, statbuf) 376 { 377 struct kstat stat; 378 int error = vfs_lstat(filename, &stat); ··· 395 return error; 396 } 397 398 - SYSCALL_DEFINE4(fstatat64, int, dfd, char __user *, filename, 399 struct stat64 __user *, statbuf, int, flag) 400 { 401 struct kstat stat;
··· 68 } 69 EXPORT_SYMBOL(vfs_fstat); 70 71 + int vfs_fstatat(int dfd, const char __user *filename, struct kstat *stat, 72 + int flag) 73 { 74 struct path path; 75 int error = -EINVAL; ··· 91 } 92 EXPORT_SYMBOL(vfs_fstatat); 93 94 + int vfs_stat(const char __user *name, struct kstat *stat) 95 { 96 return vfs_fstatat(AT_FDCWD, name, stat, 0); 97 } 98 EXPORT_SYMBOL(vfs_stat); 99 100 + int vfs_lstat(const char __user *name, struct kstat *stat) 101 { 102 return vfs_fstatat(AT_FDCWD, name, stat, AT_SYMLINK_NOFOLLOW); 103 } ··· 147 return copy_to_user(statbuf,&tmp,sizeof(tmp)) ? -EFAULT : 0; 148 } 149 150 + SYSCALL_DEFINE2(stat, const char __user *, filename, 151 + struct __old_kernel_stat __user *, statbuf) 152 { 153 struct kstat stat; 154 int error; ··· 159 return cp_old_stat(&stat, statbuf); 160 } 161 162 + SYSCALL_DEFINE2(lstat, const char __user *, filename, 163 + struct __old_kernel_stat __user *, statbuf) 164 { 165 struct kstat stat; 166 int error; ··· 234 return copy_to_user(statbuf,&tmp,sizeof(tmp)) ? -EFAULT : 0; 235 } 236 237 + SYSCALL_DEFINE2(newstat, const char __user *, filename, 238 + struct stat __user *, statbuf) 239 { 240 struct kstat stat; 241 int error = vfs_stat(filename, &stat); ··· 244 return cp_new_stat(&stat, statbuf); 245 } 246 247 + SYSCALL_DEFINE2(newlstat, const char __user *, filename, 248 + struct stat __user *, statbuf) 249 { 250 struct kstat stat; 251 int error; ··· 257 } 258 259 #if !defined(__ARCH_WANT_STAT64) || defined(__ARCH_WANT_SYS_NEWFSTATAT) 260 + SYSCALL_DEFINE4(newfstatat, int, dfd, const char __user *, filename, 261 struct stat __user *, statbuf, int, flag) 262 { 263 struct kstat stat; ··· 355 return copy_to_user(statbuf,&tmp,sizeof(tmp)) ? -EFAULT : 0; 356 } 357 358 + SYSCALL_DEFINE2(stat64, const char __user *, filename, 359 + struct stat64 __user *, statbuf) 360 { 361 struct kstat stat; 362 int error = vfs_stat(filename, &stat); ··· 366 return error; 367 } 368 369 + SYSCALL_DEFINE2(lstat64, const char __user *, filename, 370 + struct stat64 __user *, statbuf) 371 { 372 struct kstat stat; 373 int error = vfs_lstat(filename, &stat); ··· 388 return error; 389 } 390 391 + SYSCALL_DEFINE4(fstatat64, int, dfd, const char __user *, filename, 392 struct stat64 __user *, statbuf, int, flag) 393 { 394 struct kstat stat;
+4 -3
fs/utimes.c
··· 126 * must be owner or have write permission. 127 * Else, update from *times, must be owner or super user. 128 */ 129 - long do_utimes(int dfd, char __user *filename, struct timespec *times, int flags) 130 { 131 int error = -EINVAL; 132 ··· 171 return error; 172 } 173 174 - SYSCALL_DEFINE4(utimensat, int, dfd, char __user *, filename, 175 struct timespec __user *, utimes, int, flags) 176 { 177 struct timespec tstimes[2]; ··· 189 return do_utimes(dfd, filename, utimes ? tstimes : NULL, flags); 190 } 191 192 - SYSCALL_DEFINE3(futimesat, int, dfd, char __user *, filename, 193 struct timeval __user *, utimes) 194 { 195 struct timeval times[2];
··· 126 * must be owner or have write permission. 127 * Else, update from *times, must be owner or super user. 128 */ 129 + long do_utimes(int dfd, const char __user *filename, struct timespec *times, 130 + int flags) 131 { 132 int error = -EINVAL; 133 ··· 170 return error; 171 } 172 173 + SYSCALL_DEFINE4(utimensat, int, dfd, const char __user *, filename, 174 struct timespec __user *, utimes, int, flags) 175 { 176 struct timespec tstimes[2]; ··· 188 return do_utimes(dfd, filename, utimes ? tstimes : NULL, flags); 189 } 190 191 + SYSCALL_DEFINE3(futimesat, int, dfd, const char __user *, filename, 192 struct timeval __user *, utimes) 193 { 194 struct timeval times[2];
+3 -3
include/linux/compat.h
··· 331 const compat_sigset_t __user *sigmask, 332 compat_size_t sigsetsize); 333 334 - asmlinkage long compat_sys_utimensat(unsigned int dfd, char __user *filename, 335 struct compat_timespec __user *t, int flags); 336 337 asmlinkage long compat_sys_signalfd(int ufd, ··· 348 const int __user *nodes, 349 int __user *status, 350 int flags); 351 - asmlinkage long compat_sys_futimesat(unsigned int dfd, char __user *filename, 352 struct compat_timeval __user *t); 353 - asmlinkage long compat_sys_newfstatat(unsigned int dfd, char __user * filename, 354 struct compat_stat __user *statbuf, 355 int flag); 356 asmlinkage long compat_sys_openat(unsigned int dfd, const char __user *filename,
··· 331 const compat_sigset_t __user *sigmask, 332 compat_size_t sigsetsize); 333 334 + asmlinkage long compat_sys_utimensat(unsigned int dfd, const char __user *filename, 335 struct compat_timespec __user *t, int flags); 336 337 asmlinkage long compat_sys_signalfd(int ufd, ··· 348 const int __user *nodes, 349 int __user *status, 350 int flags); 351 + asmlinkage long compat_sys_futimesat(unsigned int dfd, const char __user *filename, 352 struct compat_timeval __user *t); 353 + asmlinkage long compat_sys_newfstatat(unsigned int dfd, const char __user * filename, 354 struct compat_stat __user *statbuf, 355 int flag); 356 asmlinkage long compat_sys_openat(unsigned int dfd, const char __user *filename,
+3 -3
include/linux/fs.h
··· 2320 2321 extern int vfs_readdir(struct file *, filldir_t, void *); 2322 2323 - extern int vfs_stat(char __user *, struct kstat *); 2324 - extern int vfs_lstat(char __user *, struct kstat *); 2325 extern int vfs_fstat(unsigned int, struct kstat *); 2326 - extern int vfs_fstatat(int , char __user *, struct kstat *, int); 2327 2328 extern int do_vfs_ioctl(struct file *filp, unsigned int fd, unsigned int cmd, 2329 unsigned long arg);
··· 2320 2321 extern int vfs_readdir(struct file *, filldir_t, void *); 2322 2323 + extern int vfs_stat(const char __user *, struct kstat *); 2324 + extern int vfs_lstat(const char __user *, struct kstat *); 2325 extern int vfs_fstat(unsigned int, struct kstat *); 2326 + extern int vfs_fstatat(int , const char __user *, struct kstat *, int); 2327 2328 extern int do_vfs_ioctl(struct file *filp, unsigned int fd, unsigned int cmd, 2329 unsigned long arg);
+10 -10
include/linux/syscalls.h
··· 394 asmlinkage long sys_oldumount(char __user *name); 395 asmlinkage long sys_truncate(const char __user *path, long length); 396 asmlinkage long sys_ftruncate(unsigned int fd, unsigned long length); 397 - asmlinkage long sys_stat(char __user *filename, 398 struct __old_kernel_stat __user *statbuf); 399 asmlinkage long sys_statfs(const char __user * path, 400 struct statfs __user *buf); ··· 403 asmlinkage long sys_fstatfs(unsigned int fd, struct statfs __user *buf); 404 asmlinkage long sys_fstatfs64(unsigned int fd, size_t sz, 405 struct statfs64 __user *buf); 406 - asmlinkage long sys_lstat(char __user *filename, 407 struct __old_kernel_stat __user *statbuf); 408 asmlinkage long sys_fstat(unsigned int fd, 409 struct __old_kernel_stat __user *statbuf); 410 - asmlinkage long sys_newstat(char __user *filename, 411 struct stat __user *statbuf); 412 - asmlinkage long sys_newlstat(char __user *filename, 413 struct stat __user *statbuf); 414 asmlinkage long sys_newfstat(unsigned int fd, struct stat __user *statbuf); 415 asmlinkage long sys_ustat(unsigned dev, struct ustat __user *ubuf); 416 #if BITS_PER_LONG == 32 417 - asmlinkage long sys_stat64(char __user *filename, 418 struct stat64 __user *statbuf); 419 asmlinkage long sys_fstat64(unsigned long fd, struct stat64 __user *statbuf); 420 - asmlinkage long sys_lstat64(char __user *filename, 421 struct stat64 __user *statbuf); 422 asmlinkage long sys_truncate64(const char __user *path, loff_t length); 423 asmlinkage long sys_ftruncate64(unsigned int fd, loff_t length); ··· 760 int newdfd, const char __user *newname, int flags); 761 asmlinkage long sys_renameat(int olddfd, const char __user * oldname, 762 int newdfd, const char __user * newname); 763 - asmlinkage long sys_futimesat(int dfd, char __user *filename, 764 struct timeval __user *utimes); 765 asmlinkage long sys_faccessat(int dfd, const char __user *filename, int mode); 766 asmlinkage long sys_fchmodat(int dfd, const char __user * filename, ··· 769 gid_t group, int flag); 770 asmlinkage long sys_openat(int dfd, const char __user *filename, int flags, 771 int mode); 772 - asmlinkage long sys_newfstatat(int dfd, char __user *filename, 773 struct stat __user *statbuf, int flag); 774 - asmlinkage long sys_fstatat64(int dfd, char __user *filename, 775 struct stat64 __user *statbuf, int flag); 776 asmlinkage long sys_readlinkat(int dfd, const char __user *path, char __user *buf, 777 int bufsiz); 778 - asmlinkage long sys_utimensat(int dfd, char __user *filename, 779 struct timespec __user *utimes, int flags); 780 asmlinkage long sys_unshare(unsigned long unshare_flags); 781
··· 394 asmlinkage long sys_oldumount(char __user *name); 395 asmlinkage long sys_truncate(const char __user *path, long length); 396 asmlinkage long sys_ftruncate(unsigned int fd, unsigned long length); 397 + asmlinkage long sys_stat(const char __user *filename, 398 struct __old_kernel_stat __user *statbuf); 399 asmlinkage long sys_statfs(const char __user * path, 400 struct statfs __user *buf); ··· 403 asmlinkage long sys_fstatfs(unsigned int fd, struct statfs __user *buf); 404 asmlinkage long sys_fstatfs64(unsigned int fd, size_t sz, 405 struct statfs64 __user *buf); 406 + asmlinkage long sys_lstat(const char __user *filename, 407 struct __old_kernel_stat __user *statbuf); 408 asmlinkage long sys_fstat(unsigned int fd, 409 struct __old_kernel_stat __user *statbuf); 410 + asmlinkage long sys_newstat(const char __user *filename, 411 struct stat __user *statbuf); 412 + asmlinkage long sys_newlstat(const char __user *filename, 413 struct stat __user *statbuf); 414 asmlinkage long sys_newfstat(unsigned int fd, struct stat __user *statbuf); 415 asmlinkage long sys_ustat(unsigned dev, struct ustat __user *ubuf); 416 #if BITS_PER_LONG == 32 417 + asmlinkage long sys_stat64(const char __user *filename, 418 struct stat64 __user *statbuf); 419 asmlinkage long sys_fstat64(unsigned long fd, struct stat64 __user *statbuf); 420 + asmlinkage long sys_lstat64(const char __user *filename, 421 struct stat64 __user *statbuf); 422 asmlinkage long sys_truncate64(const char __user *path, loff_t length); 423 asmlinkage long sys_ftruncate64(unsigned int fd, loff_t length); ··· 760 int newdfd, const char __user *newname, int flags); 761 asmlinkage long sys_renameat(int olddfd, const char __user * oldname, 762 int newdfd, const char __user * newname); 763 + asmlinkage long sys_futimesat(int dfd, const char __user *filename, 764 struct timeval __user *utimes); 765 asmlinkage long sys_faccessat(int dfd, const char __user *filename, int mode); 766 asmlinkage long sys_fchmodat(int dfd, const char __user * filename, ··· 769 gid_t group, int flag); 770 asmlinkage long sys_openat(int dfd, const char __user *filename, int flags, 771 int mode); 772 + asmlinkage long sys_newfstatat(int dfd, const char __user *filename, 773 struct stat __user *statbuf, int flag); 774 + asmlinkage long sys_fstatat64(int dfd, const char __user *filename, 775 struct stat64 __user *statbuf, int flag); 776 asmlinkage long sys_readlinkat(int dfd, const char __user *path, char __user *buf, 777 int bufsiz); 778 + asmlinkage long sys_utimensat(int dfd, const char __user *filename, 779 struct timespec __user *utimes, int flags); 780 asmlinkage long sys_unshare(unsigned long unshare_flags); 781
+1 -1
include/linux/time.h
··· 150 extern int do_settimeofday(struct timespec *tv); 151 extern int do_sys_settimeofday(struct timespec *tv, struct timezone *tz); 152 #define do_posix_clock_monotonic_gettime(ts) ktime_get_ts(ts) 153 - extern long do_utimes(int dfd, char __user *filename, struct timespec *times, int flags); 154 struct itimerval; 155 extern int do_setitimer(int which, struct itimerval *value, 156 struct itimerval *ovalue);
··· 150 extern int do_settimeofday(struct timespec *tv); 151 extern int do_sys_settimeofday(struct timespec *tv, struct timezone *tz); 152 #define do_posix_clock_monotonic_gettime(ts) ktime_get_ts(ts) 153 + extern long do_utimes(int dfd, const char __user *filename, struct timespec *times, int flags); 154 struct itimerval; 155 extern int do_setitimer(int which, struct itimerval *value, 156 struct itimerval *ovalue);