aboutsummaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
authorDavid Howells <dhowells@redhat.com>2010-08-11 06:26:22 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2010-08-13 19:53:13 -0400
commitc7887325230aec47d47a32562a6e26014a0fafca (patch)
tree10535943dace59ddb01d3440aa582bc4640e8016 /arch
parentb84ae4a1401a731ef5fee987c0cb08743838dda7 (diff)
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>
Diffstat (limited to 'arch')
-rw-r--r--arch/alpha/kernel/osf_sys.c6
-rw-r--r--arch/alpha/kernel/process.c2
-rw-r--r--arch/arm/kernel/sys_arm.c4
-rw-r--r--arch/arm/kernel/sys_oabi-compat.c6
-rw-r--r--arch/avr32/include/asm/syscalls.h2
-rw-r--r--arch/avr32/kernel/process.c3
-rw-r--r--arch/blackfin/kernel/process.c2
-rw-r--r--arch/frv/kernel/process.c3
-rw-r--r--arch/h8300/kernel/process.c2
-rw-r--r--arch/ia64/include/asm/unistd.h2
-rw-r--r--arch/ia64/kernel/process.c2
-rw-r--r--arch/m32r/kernel/process.c3
-rw-r--r--arch/m68k/kernel/process.c2
-rw-r--r--arch/m68knommu/kernel/process.c2
-rw-r--r--arch/microblaze/kernel/sys_microblaze.c2
-rw-r--r--arch/mips/kernel/syscall.c2
-rw-r--r--arch/mn10300/kernel/process.c2
-rw-r--r--arch/parisc/hpux/fs.c7
-rw-r--r--arch/powerpc/kernel/process.c2
-rw-r--r--arch/powerpc/kernel/sys_ppc32.c2
-rw-r--r--arch/s390/kernel/compat_linux.c10
-rw-r--r--arch/s390/kernel/compat_linux.h10
-rw-r--r--arch/s390/kernel/entry.h2
-rw-r--r--arch/s390/kernel/process.c2
-rw-r--r--arch/sh/include/asm/syscalls_32.h2
-rw-r--r--arch/sh/include/asm/syscalls_64.h2
-rw-r--r--arch/sh/kernel/process_64.c2
-rw-r--r--arch/sparc/kernel/sys_sparc32.c7
-rw-r--r--arch/um/kernel/exec.c6
-rw-r--r--arch/um/kernel/internal.h2
-rw-r--r--arch/um/kernel/syscall.c2
-rw-r--r--arch/x86/ia32/sys_ia32.c14
-rw-r--r--arch/x86/include/asm/sys_ia32.h12
-rw-r--r--arch/x86/include/asm/syscalls.h2
-rw-r--r--arch/x86/kernel/entry_64.S4
-rw-r--r--arch/x86/kernel/process.c2
-rw-r--r--arch/xtensa/kernel/process.c2
37 files changed, 73 insertions, 68 deletions
diff --git a/arch/alpha/kernel/osf_sys.c b/arch/alpha/kernel/osf_sys.c
index 88131c6e42e..fb58150a7e8 100644
--- a/arch/alpha/kernel/osf_sys.c
+++ b/arch/alpha/kernel/osf_sys.c
@@ -244,7 +244,7 @@ do_osf_statfs(struct path *path, struct osf_statfs __user *buffer,
244 return error; 244 return error;
245} 245}
246 246
247SYSCALL_DEFINE3(osf_statfs, char __user *, pathname, 247SYSCALL_DEFINE3(osf_statfs, const char __user *, pathname,
248 struct osf_statfs __user *, buffer, unsigned long, bufsiz) 248 struct osf_statfs __user *, buffer, unsigned long, bufsiz)
249{ 249{
250 struct path path; 250 struct path path;
@@ -358,7 +358,7 @@ osf_procfs_mount(char *dirname, struct procfs_args __user *args, int flags)
358 return do_mount("", dirname, "proc", flags, NULL); 358 return do_mount("", dirname, "proc", flags, NULL);
359} 359}
360 360
361SYSCALL_DEFINE4(osf_mount, unsigned long, typenr, char __user *, path, 361SYSCALL_DEFINE4(osf_mount, unsigned long, typenr, const char __user *, path,
362 int, flag, void __user *, data) 362 int, flag, void __user *, data)
363{ 363{
364 int retval; 364 int retval;
@@ -932,7 +932,7 @@ SYSCALL_DEFINE3(osf_setitimer, int, which, struct itimerval32 __user *, in,
932 932
933} 933}
934 934
935SYSCALL_DEFINE2(osf_utimes, char __user *, filename, 935SYSCALL_DEFINE2(osf_utimes, const char __user *, filename,
936 struct timeval32 __user *, tvs) 936 struct timeval32 __user *, tvs)
937{ 937{
938 struct timespec tv[2]; 938 struct timespec tv[2];
diff --git a/arch/alpha/kernel/process.c b/arch/alpha/kernel/process.c
index 395a464353b..88e608aebc8 100644
--- a/arch/alpha/kernel/process.c
+++ b/arch/alpha/kernel/process.c
@@ -387,7 +387,7 @@ EXPORT_SYMBOL(dump_elf_task_fp);
387 * sys_execve() executes a new program. 387 * sys_execve() executes a new program.
388 */ 388 */
389asmlinkage int 389asmlinkage int
390do_sys_execve(char __user *ufilename, char __user * __user *argv, 390do_sys_execve(const char __user *ufilename, char __user * __user *argv,
391 char __user * __user *envp, struct pt_regs *regs) 391 char __user * __user *envp, struct pt_regs *regs)
392{ 392{
393 int error; 393 int error;
diff --git a/arch/arm/kernel/sys_arm.c b/arch/arm/kernel/sys_arm.c
index c23501842b9..5b7c541a4c6 100644
--- a/arch/arm/kernel/sys_arm.c
+++ b/arch/arm/kernel/sys_arm.c
@@ -62,7 +62,7 @@ asmlinkage int sys_vfork(struct pt_regs *regs)
62/* sys_execve() executes a new program. 62/* sys_execve() executes a new program.
63 * This is called indirectly via a small wrapper 63 * This is called indirectly via a small wrapper
64 */ 64 */
65asmlinkage int sys_execve(char __user *filenamei, char __user * __user *argv, 65asmlinkage int sys_execve(const char __user *filenamei, char __user * __user *argv,
66 char __user * __user *envp, struct pt_regs *regs) 66 char __user * __user *envp, struct pt_regs *regs)
67{ 67{
68 int error; 68 int error;
@@ -84,7 +84,7 @@ int kernel_execve(const char *filename, char *const argv[], char *const envp[])
84 int ret; 84 int ret;
85 85
86 memset(&regs, 0, sizeof(struct pt_regs)); 86 memset(&regs, 0, sizeof(struct pt_regs));
87 ret = do_execve((char *)filename, (char __user * __user *)argv, 87 ret = do_execve(filename, (char __user * __user *)argv,
88 (char __user * __user *)envp, &regs); 88 (char __user * __user *)envp, &regs);
89 if (ret < 0) 89 if (ret < 0)
90 goto out; 90 goto out;
diff --git a/arch/arm/kernel/sys_oabi-compat.c b/arch/arm/kernel/sys_oabi-compat.c
index 33ff678e32f..4ad8da15ef2 100644
--- a/arch/arm/kernel/sys_oabi-compat.c
+++ b/arch/arm/kernel/sys_oabi-compat.c
@@ -141,7 +141,7 @@ static long cp_oldabi_stat64(struct kstat *stat,
141 return copy_to_user(statbuf,&tmp,sizeof(tmp)) ? -EFAULT : 0; 141 return copy_to_user(statbuf,&tmp,sizeof(tmp)) ? -EFAULT : 0;
142} 142}
143 143
144asmlinkage long sys_oabi_stat64(char __user * filename, 144asmlinkage long sys_oabi_stat64(const char __user * filename,
145 struct oldabi_stat64 __user * statbuf) 145 struct oldabi_stat64 __user * statbuf)
146{ 146{
147 struct kstat stat; 147 struct kstat stat;
@@ -151,7 +151,7 @@ asmlinkage long sys_oabi_stat64(char __user * filename,
151 return error; 151 return error;
152} 152}
153 153
154asmlinkage long sys_oabi_lstat64(char __user * filename, 154asmlinkage long sys_oabi_lstat64(const char __user * filename,
155 struct oldabi_stat64 __user * statbuf) 155 struct oldabi_stat64 __user * statbuf)
156{ 156{
157 struct kstat stat; 157 struct kstat stat;
@@ -172,7 +172,7 @@ asmlinkage long sys_oabi_fstat64(unsigned long fd,
172} 172}
173 173
174asmlinkage long sys_oabi_fstatat64(int dfd, 174asmlinkage long sys_oabi_fstatat64(int dfd,
175 char __user *filename, 175 const char __user *filename,
176 struct oldabi_stat64 __user *statbuf, 176 struct oldabi_stat64 __user *statbuf,
177 int flag) 177 int flag)
178{ 178{
diff --git a/arch/avr32/include/asm/syscalls.h b/arch/avr32/include/asm/syscalls.h
index 66a19726663..ab608b70b24 100644
--- a/arch/avr32/include/asm/syscalls.h
+++ b/arch/avr32/include/asm/syscalls.h
@@ -21,7 +21,7 @@ asmlinkage int sys_clone(unsigned long, unsigned long,
21 unsigned long, unsigned long, 21 unsigned long, unsigned long,
22 struct pt_regs *); 22 struct pt_regs *);
23asmlinkage int sys_vfork(struct pt_regs *); 23asmlinkage int sys_vfork(struct pt_regs *);
24asmlinkage int sys_execve(char __user *, char __user *__user *, 24asmlinkage int sys_execve(const char __user *, char __user *__user *,
25 char __user *__user *, struct pt_regs *); 25 char __user *__user *, struct pt_regs *);
26 26
27/* kernel/signal.c */ 27/* kernel/signal.c */
diff --git a/arch/avr32/kernel/process.c b/arch/avr32/kernel/process.c
index 2d76515745a..e5daddff397 100644
--- a/arch/avr32/kernel/process.c
+++ b/arch/avr32/kernel/process.c
@@ -383,7 +383,8 @@ asmlinkage int sys_vfork(struct pt_regs *regs)
383 0, NULL, NULL); 383 0, NULL, NULL);
384} 384}
385 385
386asmlinkage int sys_execve(char __user *ufilename, char __user *__user *uargv, 386asmlinkage int sys_execve(const char __user *ufilename,
387 char __user *__user *uargv,
387 char __user *__user *uenvp, struct pt_regs *regs) 388 char __user *__user *uenvp, struct pt_regs *regs)
388{ 389{
389 int error; 390 int error;
diff --git a/arch/blackfin/kernel/process.c b/arch/blackfin/kernel/process.c
index 93ec07da2e5..a566f61c002 100644
--- a/arch/blackfin/kernel/process.c
+++ b/arch/blackfin/kernel/process.c
@@ -209,7 +209,7 @@ copy_thread(unsigned long clone_flags,
209/* 209/*
210 * sys_execve() executes a new program. 210 * sys_execve() executes a new program.
211 */ 211 */
212asmlinkage int sys_execve(char __user *name, char __user * __user *argv, char __user * __user *envp) 212asmlinkage int sys_execve(const char __user *name, char __user * __user *argv, char __user * __user *envp)
213{ 213{
214 int error; 214 int error;
215 char *filename; 215 char *filename;
diff --git a/arch/frv/kernel/process.c b/arch/frv/kernel/process.c
index 21d0fd19276..428931cf2f0 100644
--- a/arch/frv/kernel/process.c
+++ b/arch/frv/kernel/process.c
@@ -250,7 +250,8 @@ int copy_thread(unsigned long clone_flags,
250/* 250/*
251 * sys_execve() executes a new program. 251 * sys_execve() executes a new program.
252 */ 252 */
253asmlinkage int sys_execve(char __user *name, char __user * __user *argv, char __user * __user *envp) 253asmlinkage int sys_execve(const char __user *name, char __user * __user *argv,
254 char __user * __user *envp)
254{ 255{
255 int error; 256 int error;
256 char * filename; 257 char * filename;
diff --git a/arch/h8300/kernel/process.c b/arch/h8300/kernel/process.c
index 8c8b0ffa6ad..8b7b78d77d5 100644
--- a/arch/h8300/kernel/process.c
+++ b/arch/h8300/kernel/process.c
@@ -212,7 +212,7 @@ int copy_thread(unsigned long clone_flags,
212/* 212/*
213 * sys_execve() executes a new program. 213 * sys_execve() executes a new program.
214 */ 214 */
215asmlinkage int sys_execve(char *name, char **argv, char **envp,int dummy,...) 215asmlinkage int sys_execve(const char *name, char **argv, char **envp,int dummy,...)
216{ 216{
217 int error; 217 int error;
218 char * filename; 218 char * filename;
diff --git a/arch/ia64/include/asm/unistd.h b/arch/ia64/include/asm/unistd.h
index bb8b0fff32b..46f36fc5125 100644
--- a/arch/ia64/include/asm/unistd.h
+++ b/arch/ia64/include/asm/unistd.h
@@ -353,7 +353,7 @@ asmlinkage unsigned long sys_mmap2(
353 int fd, long pgoff); 353 int fd, long pgoff);
354struct pt_regs; 354struct pt_regs;
355struct sigaction; 355struct sigaction;
356long sys_execve(char __user *filename, char __user * __user *argv, 356long sys_execve(const char __user *filename, char __user * __user *argv,
357 char __user * __user *envp, struct pt_regs *regs); 357 char __user * __user *envp, struct pt_regs *regs);
358asmlinkage long sys_ia64_pipe(void); 358asmlinkage long sys_ia64_pipe(void);
359asmlinkage long sys_rt_sigaction(int sig, 359asmlinkage long sys_rt_sigaction(int sig,
diff --git a/arch/ia64/kernel/process.c b/arch/ia64/kernel/process.c
index 53f1648c8b8..a879c03b7f1 100644
--- a/arch/ia64/kernel/process.c
+++ b/arch/ia64/kernel/process.c
@@ -633,7 +633,7 @@ dump_fpu (struct pt_regs *pt, elf_fpregset_t dst)
633} 633}
634 634
635long 635long
636sys_execve (char __user *filename, char __user * __user *argv, char __user * __user *envp, 636sys_execve (const char __user *filename, char __user * __user *argv, char __user * __user *envp,
637 struct pt_regs *regs) 637 struct pt_regs *regs)
638{ 638{
639 char *fname; 639 char *fname;
diff --git a/arch/m32r/kernel/process.c b/arch/m32r/kernel/process.c
index bc8c8c1511b..8665a4d868e 100644
--- a/arch/m32r/kernel/process.c
+++ b/arch/m32r/kernel/process.c
@@ -288,7 +288,8 @@ asmlinkage int sys_vfork(unsigned long r0, unsigned long r1, unsigned long r2,
288/* 288/*
289 * sys_execve() executes a new program. 289 * sys_execve() executes a new program.
290 */ 290 */
291asmlinkage int sys_execve(char __user *ufilename, char __user * __user *uargv, 291asmlinkage int sys_execve(const char __user *ufilename,
292 char __user * __user *uargv,
292 char __user * __user *uenvp, 293 char __user * __user *uenvp,
293 unsigned long r3, unsigned long r4, unsigned long r5, 294 unsigned long r3, unsigned long r4, unsigned long r5,
294 unsigned long r6, struct pt_regs regs) 295 unsigned long r6, struct pt_regs regs)
diff --git a/arch/m68k/kernel/process.c b/arch/m68k/kernel/process.c
index 1a6be27cf16..221d0b71ce3 100644
--- a/arch/m68k/kernel/process.c
+++ b/arch/m68k/kernel/process.c
@@ -315,7 +315,7 @@ EXPORT_SYMBOL(dump_fpu);
315/* 315/*
316 * sys_execve() executes a new program. 316 * sys_execve() executes a new program.
317 */ 317 */
318asmlinkage int sys_execve(char __user *name, char __user * __user *argv, char __user * __user *envp) 318asmlinkage int sys_execve(const char __user *name, char __user * __user *argv, char __user * __user *envp)
319{ 319{
320 int error; 320 int error;
321 char * filename; 321 char * filename;
diff --git a/arch/m68knommu/kernel/process.c b/arch/m68knommu/kernel/process.c
index 6aa66134b43..6350f68cd02 100644
--- a/arch/m68knommu/kernel/process.c
+++ b/arch/m68knommu/kernel/process.c
@@ -350,7 +350,7 @@ void dump(struct pt_regs *fp)
350/* 350/*
351 * sys_execve() executes a new program. 351 * sys_execve() executes a new program.
352 */ 352 */
353asmlinkage int sys_execve(char *name, char **argv, char **envp) 353asmlinkage int sys_execve(const char *name, char **argv, char **envp)
354{ 354{
355 int error; 355 int error;
356 char * filename; 356 char * filename;
diff --git a/arch/microblaze/kernel/sys_microblaze.c b/arch/microblaze/kernel/sys_microblaze.c
index f4e00b7f125..6abab6ebedb 100644
--- a/arch/microblaze/kernel/sys_microblaze.c
+++ b/arch/microblaze/kernel/sys_microblaze.c
@@ -47,7 +47,7 @@ asmlinkage long microblaze_clone(int flags, unsigned long stack, struct pt_regs
47 return do_fork(flags, stack, regs, 0, NULL, NULL); 47 return do_fork(flags, stack, regs, 0, NULL, NULL);
48} 48}
49 49
50asmlinkage long microblaze_execve(char __user *filenamei, char __user *__user *argv, 50asmlinkage long microblaze_execve(const char __user *filenamei, char __user *__user *argv,
51 char __user *__user *envp, struct pt_regs *regs) 51 char __user *__user *envp, struct pt_regs *regs)
52{ 52{
53 int error; 53 int error;
diff --git a/arch/mips/kernel/syscall.c b/arch/mips/kernel/syscall.c
index 58bab2ef257..bddce0bca19 100644
--- a/arch/mips/kernel/syscall.c
+++ b/arch/mips/kernel/syscall.c
@@ -254,7 +254,7 @@ asmlinkage int sys_execve(nabi_no_regargs struct pt_regs regs)
254 int error; 254 int error;
255 char * filename; 255 char * filename;
256 256
257 filename = getname((char __user *) (long)regs.regs[4]); 257 filename = getname((const char __user *) (long)regs.regs[4]);
258 error = PTR_ERR(filename); 258 error = PTR_ERR(filename);
259 if (IS_ERR(filename)) 259 if (IS_ERR(filename))
260 goto out; 260 goto out;
diff --git a/arch/mn10300/kernel/process.c b/arch/mn10300/kernel/process.c
index 82b817c7f7b..762eb325b94 100644
--- a/arch/mn10300/kernel/process.c
+++ b/arch/mn10300/kernel/process.c
@@ -268,7 +268,7 @@ asmlinkage long sys_vfork(void)
268 0, NULL, NULL); 268 0, NULL, NULL);
269} 269}
270 270
271asmlinkage long sys_execve(char __user *name, 271asmlinkage long sys_execve(const char __user *name,
272 char __user * __user *argv, 272 char __user * __user *argv,
273 char __user * __user *envp) 273 char __user * __user *envp)
274{ 274{
diff --git a/arch/parisc/hpux/fs.c b/arch/parisc/hpux/fs.c
index 6935123178e..1444875a761 100644
--- a/arch/parisc/hpux/fs.c
+++ b/arch/parisc/hpux/fs.c
@@ -36,7 +36,7 @@ int hpux_execve(struct pt_regs *regs)
36 int error; 36 int error;
37 char *filename; 37 char *filename;
38 38
39 filename = getname((char __user *) regs->gr[26]); 39 filename = getname((const char __user *) regs->gr[26]);
40 error = PTR_ERR(filename); 40 error = PTR_ERR(filename);
41 if (IS_ERR(filename)) 41 if (IS_ERR(filename))
42 goto out; 42 goto out;
@@ -169,7 +169,7 @@ static int cp_hpux_stat(struct kstat *stat, struct hpux_stat64 __user *statbuf)
169 return copy_to_user(statbuf,&tmp,sizeof(tmp)) ? -EFAULT : 0; 169 return copy_to_user(statbuf,&tmp,sizeof(tmp)) ? -EFAULT : 0;
170} 170}
171 171
172long hpux_stat64(char __user *filename, struct hpux_stat64 __user *statbuf) 172long hpux_stat64(const char __user *filename, struct hpux_stat64 __user *statbuf)
173{ 173{
174 struct kstat stat; 174 struct kstat stat;
175 int error = vfs_stat(filename, &stat); 175 int error = vfs_stat(filename, &stat);
@@ -191,7 +191,8 @@ long hpux_fstat64(unsigned int fd, struct hpux_stat64 __user *statbuf)
191 return error; 191 return error;
192} 192}
193 193
194long hpux_lstat64(char __user *filename, struct hpux_stat64 __user *statbuf) 194long hpux_lstat64(const char __user *filename,
195 struct hpux_stat64 __user *statbuf)
195{ 196{
196 struct kstat stat; 197 struct kstat stat;
197 int error = vfs_lstat(filename, &stat); 198 int error = vfs_lstat(filename, &stat);
diff --git a/arch/powerpc/kernel/process.c b/arch/powerpc/kernel/process.c
index e78a5add7f1..feacfb78968 100644
--- a/arch/powerpc/kernel/process.c
+++ b/arch/powerpc/kernel/process.c
@@ -1027,7 +1027,7 @@ int sys_execve(unsigned long a0, unsigned long a1, unsigned long a2,
1027 int error; 1027 int error;
1028 char *filename; 1028 char *filename;
1029 1029
1030 filename = getname((char __user *) a0); 1030 filename = getname((const char __user *) a0);
1031 error = PTR_ERR(filename); 1031 error = PTR_ERR(filename);
1032 if (IS_ERR(filename)) 1032 if (IS_ERR(filename))
1033 goto out; 1033 goto out;
diff --git a/arch/powerpc/kernel/sys_ppc32.c b/arch/powerpc/kernel/sys_ppc32.c
index 19471a1cef1..20fd701a686 100644
--- a/arch/powerpc/kernel/sys_ppc32.c
+++ b/arch/powerpc/kernel/sys_ppc32.c
@@ -546,7 +546,7 @@ compat_ssize_t compat_sys_pread64(unsigned int fd, char __user *ubuf, compat_siz
546 return sys_pread64(fd, ubuf, count, ((loff_t)poshi << 32) | poslo); 546 return sys_pread64(fd, ubuf, count, ((loff_t)poshi << 32) | poslo);
547} 547}
548 548
549compat_ssize_t compat_sys_pwrite64(unsigned int fd, char __user *ubuf, compat_size_t count, 549compat_ssize_t compat_sys_pwrite64(unsigned int fd, const char __user *ubuf, compat_size_t count,
550 u32 reg6, u32 poshi, u32 poslo) 550 u32 reg6, u32 poshi, u32 poslo)
551{ 551{
552 return sys_pwrite64(fd, ubuf, count, ((loff_t)poshi << 32) | poslo); 552 return sys_pwrite64(fd, ubuf, count, ((loff_t)poshi << 32) | poslo);
diff --git a/arch/s390/kernel/compat_linux.c b/arch/s390/kernel/compat_linux.c
index 73b624ed9cd..1e6449c79ab 100644
--- a/arch/s390/kernel/compat_linux.c
+++ b/arch/s390/kernel/compat_linux.c
@@ -436,7 +436,7 @@ sys32_rt_sigqueueinfo(int pid, int sig, compat_siginfo_t __user *uinfo)
436 * sys32_execve() executes a new program after the asm stub has set 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. 437 * things up for us. This should basically do what I want it to.
438 */ 438 */
439asmlinkage long sys32_execve(char __user *name, compat_uptr_t __user *argv, 439asmlinkage long sys32_execve(const char __user *name, compat_uptr_t __user *argv,
440 compat_uptr_t __user *envp) 440 compat_uptr_t __user *envp)
441{ 441{
442 struct pt_regs *regs = task_pt_regs(current); 442 struct pt_regs *regs = task_pt_regs(current);
@@ -570,7 +570,7 @@ static int cp_stat64(struct stat64_emu31 __user *ubuf, struct kstat *stat)
570 return copy_to_user(ubuf,&tmp,sizeof(tmp)) ? -EFAULT : 0; 570 return copy_to_user(ubuf,&tmp,sizeof(tmp)) ? -EFAULT : 0;
571} 571}
572 572
573asmlinkage long sys32_stat64(char __user * filename, struct stat64_emu31 __user * statbuf) 573asmlinkage long sys32_stat64(const char __user * filename, struct stat64_emu31 __user * statbuf)
574{ 574{
575 struct kstat stat; 575 struct kstat stat;
576 int ret = vfs_stat(filename, &stat); 576 int ret = vfs_stat(filename, &stat);
@@ -579,7 +579,7 @@ asmlinkage long sys32_stat64(char __user * filename, struct stat64_emu31 __user
579 return ret; 579 return ret;
580} 580}
581 581
582asmlinkage long sys32_lstat64(char __user * filename, struct stat64_emu31 __user * statbuf) 582asmlinkage long sys32_lstat64(const char __user * filename, struct stat64_emu31 __user * statbuf)
583{ 583{
584 struct kstat stat; 584 struct kstat stat;
585 int ret = vfs_lstat(filename, &stat); 585 int ret = vfs_lstat(filename, &stat);
@@ -597,7 +597,7 @@ asmlinkage long sys32_fstat64(unsigned long fd, struct stat64_emu31 __user * sta
597 return ret; 597 return ret;
598} 598}
599 599
600asmlinkage long sys32_fstatat64(unsigned int dfd, char __user *filename, 600asmlinkage long sys32_fstatat64(unsigned int dfd, const char __user *filename,
601 struct stat64_emu31 __user* statbuf, int flag) 601 struct stat64_emu31 __user* statbuf, int flag)
602{ 602{
603 struct kstat stat; 603 struct kstat stat;
@@ -655,7 +655,7 @@ asmlinkage long sys32_read(unsigned int fd, char __user * buf, size_t count)
655 return sys_read(fd, buf, count); 655 return sys_read(fd, buf, count);
656} 656}
657 657
658asmlinkage long sys32_write(unsigned int fd, char __user * buf, size_t count) 658asmlinkage long sys32_write(unsigned int fd, const char __user * buf, size_t count)
659{ 659{
660 if ((compat_ssize_t) count < 0) 660 if ((compat_ssize_t) count < 0)
661 return -EINVAL; 661 return -EINVAL;
diff --git a/arch/s390/kernel/compat_linux.h b/arch/s390/kernel/compat_linux.h
index cb97afc85c9..9635d759c2b 100644
--- a/arch/s390/kernel/compat_linux.h
+++ b/arch/s390/kernel/compat_linux.h
@@ -193,7 +193,7 @@ long sys32_rt_sigprocmask(int how, compat_sigset_t __user *set,
193 compat_sigset_t __user *oset, size_t sigsetsize); 193 compat_sigset_t __user *oset, size_t sigsetsize);
194long sys32_rt_sigpending(compat_sigset_t __user *set, size_t sigsetsize); 194long sys32_rt_sigpending(compat_sigset_t __user *set, size_t sigsetsize);
195long sys32_rt_sigqueueinfo(int pid, int sig, compat_siginfo_t __user *uinfo); 195long sys32_rt_sigqueueinfo(int pid, int sig, compat_siginfo_t __user *uinfo);
196long sys32_execve(char __user *name, compat_uptr_t __user *argv, 196long sys32_execve(const char __user *name, compat_uptr_t __user *argv,
197 compat_uptr_t __user *envp); 197 compat_uptr_t __user *envp);
198long sys32_init_module(void __user *umod, unsigned long len, 198long sys32_init_module(void __user *umod, unsigned long len,
199 const char __user *uargs); 199 const char __user *uargs);
@@ -207,16 +207,16 @@ long sys32_sendfile(int out_fd, int in_fd, compat_off_t __user *offset,
207 size_t count); 207 size_t count);
208long sys32_sendfile64(int out_fd, int in_fd, compat_loff_t __user *offset, 208long sys32_sendfile64(int out_fd, int in_fd, compat_loff_t __user *offset,
209 s32 count); 209 s32 count);
210long sys32_stat64(char __user * filename, struct stat64_emu31 __user * statbuf); 210long sys32_stat64(const char __user * filename, struct stat64_emu31 __user * statbuf);
211long sys32_lstat64(char __user * filename, 211long sys32_lstat64(const char __user * filename,
212 struct stat64_emu31 __user * statbuf); 212 struct stat64_emu31 __user * statbuf);
213long sys32_fstat64(unsigned long fd, struct stat64_emu31 __user * statbuf); 213long sys32_fstat64(unsigned long fd, struct stat64_emu31 __user * statbuf);
214long sys32_fstatat64(unsigned int dfd, char __user *filename, 214long sys32_fstatat64(unsigned int dfd, const char __user *filename,
215 struct stat64_emu31 __user* statbuf, int flag); 215 struct stat64_emu31 __user* statbuf, int flag);
216unsigned long old32_mmap(struct mmap_arg_struct_emu31 __user *arg); 216unsigned long old32_mmap(struct mmap_arg_struct_emu31 __user *arg);
217long sys32_mmap2(struct mmap_arg_struct_emu31 __user *arg); 217long sys32_mmap2(struct mmap_arg_struct_emu31 __user *arg);
218long sys32_read(unsigned int fd, char __user * buf, size_t count); 218long sys32_read(unsigned int fd, char __user * buf, size_t count);
219long sys32_write(unsigned int fd, char __user * buf, size_t count); 219long sys32_write(unsigned int fd, const char __user * buf, size_t count);
220long sys32_fadvise64(int fd, loff_t offset, size_t len, int advise); 220long sys32_fadvise64(int fd, loff_t offset, size_t len, int advise);
221long sys32_fadvise64_64(struct fadvise64_64_args __user *args); 221long sys32_fadvise64_64(struct fadvise64_64_args __user *args);
222long sys32_sigaction(int sig, const struct old_sigaction32 __user *act, 222long sys32_sigaction(int sig, const struct old_sigaction32 __user *act,
diff --git a/arch/s390/kernel/entry.h b/arch/s390/kernel/entry.h
index 5bb1e6b5db2..403fb430a89 100644
--- a/arch/s390/kernel/entry.h
+++ b/arch/s390/kernel/entry.h
@@ -42,7 +42,7 @@ long sys_clone(unsigned long newsp, unsigned long clone_flags,
42 int __user *parent_tidptr, int __user *child_tidptr); 42 int __user *parent_tidptr, int __user *child_tidptr);
43long sys_vfork(void); 43long sys_vfork(void);
44void execve_tail(void); 44void execve_tail(void);
45long sys_execve(char __user *name, char __user * __user *argv, 45long sys_execve(const char __user *name, char __user * __user *argv,
46 char __user * __user *envp); 46 char __user * __user *envp);
47long sys_sigsuspend(int history0, int history1, old_sigset_t mask); 47long sys_sigsuspend(int history0, int history1, old_sigset_t mask);
48long sys_sigaction(int sig, const struct old_sigaction __user *act, 48long sys_sigaction(int sig, const struct old_sigaction __user *act,
diff --git a/arch/s390/kernel/process.c b/arch/s390/kernel/process.c
index 1039fdea15b..7eafaf2662b 100644
--- a/arch/s390/kernel/process.c
+++ b/arch/s390/kernel/process.c
@@ -267,7 +267,7 @@ asmlinkage void execve_tail(void)
267/* 267/*
268 * sys_execve() executes a new program. 268 * sys_execve() executes a new program.
269 */ 269 */
270SYSCALL_DEFINE3(execve, char __user *, name, char __user * __user *, argv, 270SYSCALL_DEFINE3(execve, const char __user *, name, char __user * __user *, argv,
271 char __user * __user *, envp) 271 char __user * __user *, envp)
272{ 272{
273 struct pt_regs *regs = task_pt_regs(current); 273 struct pt_regs *regs = task_pt_regs(current);
diff --git a/arch/sh/include/asm/syscalls_32.h b/arch/sh/include/asm/syscalls_32.h
index 8b30200305c..be201fdc97a 100644
--- a/arch/sh/include/asm/syscalls_32.h
+++ b/arch/sh/include/asm/syscalls_32.h
@@ -19,7 +19,7 @@ asmlinkage int sys_clone(unsigned long clone_flags, unsigned long newsp,
19asmlinkage int sys_vfork(unsigned long r4, unsigned long r5, 19asmlinkage int sys_vfork(unsigned long r4, unsigned long r5,
20 unsigned long r6, unsigned long r7, 20 unsigned long r6, unsigned long r7,
21 struct pt_regs __regs); 21 struct pt_regs __regs);
22asmlinkage int sys_execve(char __user *ufilename, char __user * __user *uargv, 22asmlinkage int sys_execve(const char __user *ufilename, char __user * __user *uargv,
23 char __user * __user *uenvp, unsigned long r7, 23 char __user * __user *uenvp, unsigned long r7,
24 struct pt_regs __regs); 24 struct pt_regs __regs);
25asmlinkage int sys_sigsuspend(old_sigset_t mask, unsigned long r5, 25asmlinkage int sys_sigsuspend(old_sigset_t mask, unsigned long r5,
diff --git a/arch/sh/include/asm/syscalls_64.h b/arch/sh/include/asm/syscalls_64.h
index 751fd881136..ee519f41d95 100644
--- a/arch/sh/include/asm/syscalls_64.h
+++ b/arch/sh/include/asm/syscalls_64.h
@@ -21,7 +21,7 @@ asmlinkage int sys_vfork(unsigned long r2, unsigned long r3,
21 unsigned long r4, unsigned long r5, 21 unsigned long r4, unsigned long r5,
22 unsigned long r6, unsigned long r7, 22 unsigned long r6, unsigned long r7,
23 struct pt_regs *pregs); 23 struct pt_regs *pregs);
24asmlinkage int sys_execve(char *ufilename, char **uargv, 24asmlinkage int sys_execve(const char *ufilename, char **uargv,
25 char **uenvp, unsigned long r5, 25 char **uenvp, unsigned long r5,
26 unsigned long r6, unsigned long r7, 26 unsigned long r6, unsigned long r7,
27 struct pt_regs *pregs); 27 struct pt_regs *pregs);
diff --git a/arch/sh/kernel/process_64.c b/arch/sh/kernel/process_64.c
index d4ca6480e35..68d128d651b 100644
--- a/arch/sh/kernel/process_64.c
+++ b/arch/sh/kernel/process_64.c
@@ -483,7 +483,7 @@ asmlinkage int sys_vfork(unsigned long r2, unsigned long r3,
483/* 483/*
484 * sys_execve() executes a new program. 484 * sys_execve() executes a new program.
485 */ 485 */
486asmlinkage int sys_execve(char *ufilename, char **uargv, 486asmlinkage int sys_execve(const char *ufilename, char **uargv,
487 char **uenvp, unsigned long r5, 487 char **uenvp, unsigned long r5,
488 unsigned long r6, unsigned long r7, 488 unsigned long r6, unsigned long r7,
489 struct pt_regs *pregs) 489 struct pt_regs *pregs)
diff --git a/arch/sparc/kernel/sys_sparc32.c b/arch/sparc/kernel/sys_sparc32.c
index c0ca87553e1..e6375a750d9 100644
--- a/arch/sparc/kernel/sys_sparc32.c
+++ b/arch/sparc/kernel/sys_sparc32.c
@@ -162,7 +162,7 @@ static int cp_compat_stat64(struct kstat *stat,
162 return err; 162 return err;
163} 163}
164 164
165asmlinkage long compat_sys_stat64(char __user * filename, 165asmlinkage long compat_sys_stat64(const char __user * filename,
166 struct compat_stat64 __user *statbuf) 166 struct compat_stat64 __user *statbuf)
167{ 167{
168 struct kstat stat; 168 struct kstat stat;
@@ -173,7 +173,7 @@ asmlinkage long compat_sys_stat64(char __user * filename,
173 return error; 173 return error;
174} 174}
175 175
176asmlinkage long compat_sys_lstat64(char __user * filename, 176asmlinkage long compat_sys_lstat64(const char __user * filename,
177 struct compat_stat64 __user *statbuf) 177 struct compat_stat64 __user *statbuf)
178{ 178{
179 struct kstat stat; 179 struct kstat stat;
@@ -195,7 +195,8 @@ asmlinkage long compat_sys_fstat64(unsigned int fd,
195 return error; 195 return error;
196} 196}
197 197
198asmlinkage long compat_sys_fstatat64(unsigned int dfd, char __user *filename, 198asmlinkage long compat_sys_fstatat64(unsigned int dfd,
199 const char __user *filename,
199 struct compat_stat64 __user * statbuf, int flag) 200 struct compat_stat64 __user * statbuf, int flag)
200{ 201{
201 struct kstat stat; 202 struct kstat stat;
diff --git a/arch/um/kernel/exec.c b/arch/um/kernel/exec.c
index 97974c1bdd1..59b20d93b6d 100644
--- a/arch/um/kernel/exec.c
+++ b/arch/um/kernel/exec.c
@@ -44,7 +44,7 @@ void start_thread(struct pt_regs *regs, unsigned long eip, unsigned long esp)
44 PT_REGS_SP(regs) = esp; 44 PT_REGS_SP(regs) = esp;
45} 45}
46 46
47static long execve1(char *file, char __user * __user *argv, 47static long execve1(const char *file, char __user * __user *argv,
48 char __user *__user *env) 48 char __user *__user *env)
49{ 49{
50 long error; 50 long error;
@@ -61,7 +61,7 @@ static long execve1(char *file, char __user * __user *argv,
61 return error; 61 return error;
62} 62}
63 63
64long um_execve(char *file, char __user *__user *argv, char __user *__user *env) 64long um_execve(const char *file, char __user *__user *argv, char __user *__user *env)
65{ 65{
66 long err; 66 long err;
67 67
@@ -71,7 +71,7 @@ long um_execve(char *file, char __user *__user *argv, char __user *__user *env)
71 return err; 71 return err;
72} 72}
73 73
74long sys_execve(char __user *file, char __user *__user *argv, 74long sys_execve(const char __user *file, char __user *__user *argv,
75 char __user *__user *env) 75 char __user *__user *env)
76{ 76{
77 long error; 77 long error;
diff --git a/arch/um/kernel/internal.h b/arch/um/kernel/internal.h
index 3bda43c7a78..1303a105fe9 100644
--- a/arch/um/kernel/internal.h
+++ b/arch/um/kernel/internal.h
@@ -1 +1 @@
extern long um_execve(char *file, char __user *__user *argv, char __user *__user *env); extern long um_execve(const char *file, char __user *__user *argv, char __user *__user *env);
diff --git a/arch/um/kernel/syscall.c b/arch/um/kernel/syscall.c
index 4393173923f..7427c0b1930 100644
--- a/arch/um/kernel/syscall.c
+++ b/arch/um/kernel/syscall.c
@@ -58,7 +58,7 @@ int kernel_execve(const char *filename, char *const argv[], char *const envp[])
58 58
59 fs = get_fs(); 59 fs = get_fs();
60 set_fs(KERNEL_DS); 60 set_fs(KERNEL_DS);
61 ret = um_execve((char *)filename, (char __user *__user *)argv, 61 ret = um_execve(filename, (char __user *__user *)argv,
62 (char __user *__user *) envp); 62 (char __user *__user *) envp);
63 set_fs(fs); 63 set_fs(fs);
64 64
diff --git a/arch/x86/ia32/sys_ia32.c b/arch/x86/ia32/sys_ia32.c
index 3d093311d5e..849813f398e 100644
--- a/arch/x86/ia32/sys_ia32.c
+++ b/arch/x86/ia32/sys_ia32.c
@@ -51,7 +51,7 @@
51#define AA(__x) ((unsigned long)(__x)) 51#define AA(__x) ((unsigned long)(__x))
52 52
53 53
54asmlinkage long sys32_truncate64(char __user *filename, 54asmlinkage long sys32_truncate64(const char __user *filename,
55 unsigned long offset_low, 55 unsigned long offset_low,
56 unsigned long offset_high) 56 unsigned long offset_high)
57{ 57{
@@ -96,7 +96,7 @@ static int cp_stat64(struct stat64 __user *ubuf, struct kstat *stat)
96 return 0; 96 return 0;
97} 97}
98 98
99asmlinkage long sys32_stat64(char __user *filename, 99asmlinkage long sys32_stat64(const char __user *filename,
100 struct stat64 __user *statbuf) 100 struct stat64 __user *statbuf)
101{ 101{
102 struct kstat stat; 102 struct kstat stat;
@@ -107,7 +107,7 @@ asmlinkage long sys32_stat64(char __user *filename,
107 return ret; 107 return ret;
108} 108}
109 109
110asmlinkage long sys32_lstat64(char __user *filename, 110asmlinkage long sys32_lstat64(const char __user *filename,
111 struct stat64 __user *statbuf) 111 struct stat64 __user *statbuf)
112{ 112{
113 struct kstat stat; 113 struct kstat stat;
@@ -126,7 +126,7 @@ asmlinkage long sys32_fstat64(unsigned int fd, struct stat64 __user *statbuf)
126 return ret; 126 return ret;
127} 127}
128 128
129asmlinkage long sys32_fstatat(unsigned int dfd, char __user *filename, 129asmlinkage long sys32_fstatat(unsigned int dfd, const char __user *filename,
130 struct stat64 __user *statbuf, int flag) 130 struct stat64 __user *statbuf, int flag)
131{ 131{
132 struct kstat stat; 132 struct kstat stat;
@@ -408,8 +408,8 @@ asmlinkage long sys32_pread(unsigned int fd, char __user *ubuf, u32 count,
408 ((loff_t)AA(poshi) << 32) | AA(poslo)); 408 ((loff_t)AA(poshi) << 32) | AA(poslo));
409} 409}
410 410
411asmlinkage long sys32_pwrite(unsigned int fd, char __user *ubuf, u32 count, 411asmlinkage long sys32_pwrite(unsigned int fd, const char __user *ubuf,
412 u32 poslo, u32 poshi) 412 u32 count, u32 poslo, u32 poshi)
413{ 413{
414 return sys_pwrite64(fd, ubuf, count, 414 return sys_pwrite64(fd, ubuf, count,
415 ((loff_t)AA(poshi) << 32) | AA(poslo)); 415 ((loff_t)AA(poshi) << 32) | AA(poslo));
@@ -449,7 +449,7 @@ asmlinkage long sys32_sendfile(int out_fd, int in_fd,
449 return ret; 449 return ret;
450} 450}
451 451
452asmlinkage long sys32_execve(char __user *name, compat_uptr_t __user *argv, 452asmlinkage long sys32_execve(const char __user *name, compat_uptr_t __user *argv,
453 compat_uptr_t __user *envp, struct pt_regs *regs) 453 compat_uptr_t __user *envp, struct pt_regs *regs)
454{ 454{
455 long error; 455 long error;
diff --git a/arch/x86/include/asm/sys_ia32.h b/arch/x86/include/asm/sys_ia32.h
index cf4e2e381cb..cb238526a9f 100644
--- a/arch/x86/include/asm/sys_ia32.h
+++ b/arch/x86/include/asm/sys_ia32.h
@@ -18,13 +18,13 @@
18#include <asm/ia32.h> 18#include <asm/ia32.h>
19 19
20/* ia32/sys_ia32.c */ 20/* ia32/sys_ia32.c */
21asmlinkage long sys32_truncate64(char __user *, unsigned long, unsigned long); 21asmlinkage long sys32_truncate64(const char __user *, unsigned long, unsigned long);
22asmlinkage long sys32_ftruncate64(unsigned int, unsigned long, unsigned long); 22asmlinkage long sys32_ftruncate64(unsigned int, unsigned long, unsigned long);
23 23
24asmlinkage long sys32_stat64(char __user *, struct stat64 __user *); 24asmlinkage long sys32_stat64(const char __user *, struct stat64 __user *);
25asmlinkage long sys32_lstat64(char __user *, struct stat64 __user *); 25asmlinkage long sys32_lstat64(const char __user *, struct stat64 __user *);
26asmlinkage long sys32_fstat64(unsigned int, struct stat64 __user *); 26asmlinkage long sys32_fstat64(unsigned int, struct stat64 __user *);
27asmlinkage long sys32_fstatat(unsigned int, char __user *, 27asmlinkage long sys32_fstatat(unsigned int, const char __user *,
28 struct stat64 __user *, int); 28 struct stat64 __user *, int);
29struct mmap_arg_struct32; 29struct mmap_arg_struct32;
30asmlinkage long sys32_mmap(struct mmap_arg_struct32 __user *); 30asmlinkage long sys32_mmap(struct mmap_arg_struct32 __user *);
@@ -49,12 +49,12 @@ asmlinkage long sys32_rt_sigpending(compat_sigset_t __user *, compat_size_t);
49asmlinkage long sys32_rt_sigqueueinfo(int, int, compat_siginfo_t __user *); 49asmlinkage long sys32_rt_sigqueueinfo(int, int, compat_siginfo_t __user *);
50 50
51asmlinkage long sys32_pread(unsigned int, char __user *, u32, u32, u32); 51asmlinkage long sys32_pread(unsigned int, char __user *, u32, u32, u32);
52asmlinkage long sys32_pwrite(unsigned int, char __user *, u32, u32, u32); 52asmlinkage long sys32_pwrite(unsigned int, const char __user *, u32, u32, u32);
53 53
54asmlinkage long sys32_personality(unsigned long); 54asmlinkage long sys32_personality(unsigned long);
55asmlinkage long sys32_sendfile(int, int, compat_off_t __user *, s32); 55asmlinkage long sys32_sendfile(int, int, compat_off_t __user *, s32);
56 56
57asmlinkage long sys32_execve(char __user *, compat_uptr_t __user *, 57asmlinkage long sys32_execve(const char __user *, compat_uptr_t __user *,
58 compat_uptr_t __user *, struct pt_regs *); 58 compat_uptr_t __user *, struct pt_regs *);
59asmlinkage long sys32_clone(unsigned int, unsigned int, struct pt_regs *); 59asmlinkage long sys32_clone(unsigned int, unsigned int, struct pt_regs *);
60 60
diff --git a/arch/x86/include/asm/syscalls.h b/arch/x86/include/asm/syscalls.h
index 5c044b43e9a..feb2ff9bfc2 100644
--- a/arch/x86/include/asm/syscalls.h
+++ b/arch/x86/include/asm/syscalls.h
@@ -23,7 +23,7 @@ long sys_iopl(unsigned int, struct pt_regs *);
23/* kernel/process.c */ 23/* kernel/process.c */
24int sys_fork(struct pt_regs *); 24int sys_fork(struct pt_regs *);
25int sys_vfork(struct pt_regs *); 25int sys_vfork(struct pt_regs *);
26long sys_execve(char __user *, char __user * __user *, 26long sys_execve(const char __user *, char __user * __user *,
27 char __user * __user *, struct pt_regs *); 27 char __user * __user *, struct pt_regs *);
28long sys_clone(unsigned long, unsigned long, void __user *, 28long sys_clone(unsigned long, unsigned long, void __user *,
29 void __user *, struct pt_regs *); 29 void __user *, struct pt_regs *);
diff --git a/arch/x86/kernel/entry_64.S b/arch/x86/kernel/entry_64.S
index c5ea5cdbe7b..17be5ec7cbb 100644
--- a/arch/x86/kernel/entry_64.S
+++ b/arch/x86/kernel/entry_64.S
@@ -1185,13 +1185,13 @@ END(kernel_thread_helper)
1185 * execve(). This function needs to use IRET, not SYSRET, to set up all state properly. 1185 * execve(). This function needs to use IRET, not SYSRET, to set up all state properly.
1186 * 1186 *
1187 * C extern interface: 1187 * C extern interface:
1188 * extern long execve(char *name, char **argv, char **envp) 1188 * extern long execve(const char *name, char **argv, char **envp)
1189 * 1189 *
1190 * asm input arguments: 1190 * asm input arguments:
1191 * rdi: name, rsi: argv, rdx: envp 1191 * rdi: name, rsi: argv, rdx: envp
1192 * 1192 *
1193 * We want to fallback into: 1193 * We want to fallback into:
1194 * extern long sys_execve(char *name, char **argv,char **envp, struct pt_regs *regs) 1194 * extern long sys_execve(const char *name, char **argv,char **envp, struct pt_regs *regs)
1195 * 1195 *
1196 * do_sys_execve asm fallback arguments: 1196 * do_sys_execve asm fallback arguments:
1197 * rdi: name, rsi: argv, rdx: envp, rcx: fake frame on the stack 1197 * rdi: name, rsi: argv, rdx: envp, rcx: fake frame on the stack
diff --git a/arch/x86/kernel/process.c b/arch/x86/kernel/process.c
index d401f1d2d06..64ecaf0af9a 100644
--- a/arch/x86/kernel/process.c
+++ b/arch/x86/kernel/process.c
@@ -301,7 +301,7 @@ EXPORT_SYMBOL(kernel_thread);
301/* 301/*
302 * sys_execve() executes a new program. 302 * sys_execve() executes a new program.
303 */ 303 */
304long sys_execve(char __user *name, char __user * __user *argv, 304long sys_execve(const char __user *name, char __user * __user *argv,
305 char __user * __user *envp, struct pt_regs *regs) 305 char __user * __user *envp, struct pt_regs *regs)
306{ 306{
307 long error; 307 long error;
diff --git a/arch/xtensa/kernel/process.c b/arch/xtensa/kernel/process.c
index f167e0f5e05..7c2f38f68eb 100644
--- a/arch/xtensa/kernel/process.c
+++ b/arch/xtensa/kernel/process.c
@@ -318,7 +318,7 @@ long xtensa_clone(unsigned long clone_flags, unsigned long newsp,
318 */ 318 */
319 319
320asmlinkage 320asmlinkage
321long xtensa_execve(char __user *name, char __user * __user *argv, 321long xtensa_execve(const char __user *name, char __user * __user *argv,
322 char __user * __user *envp, 322 char __user * __user *envp,
323 long a3, long a4, long a5, 323 long a3, long a4, long a5,
324 struct pt_regs *regs) 324 struct pt_regs *regs)