Skip to content

Commit c788732

Browse files
dhowellstorvalds
authored andcommitted
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 <[email protected]> Acked-by: David S. Miller <[email protected]> Signed-off-by: Linus Torvalds <[email protected]>
1 parent b84ae4a commit c788732

File tree

44 files changed

+125
-109
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

44 files changed

+125
-109
lines changed

arch/alpha/kernel/osf_sys.c

+3-3
Original file line numberDiff line numberDiff line change
@@ -244,7 +244,7 @@ do_osf_statfs(struct path *path, struct osf_statfs __user *buffer,
244244
return error;
245245
}
246246

247-
SYSCALL_DEFINE3(osf_statfs, char __user *, pathname,
247+
SYSCALL_DEFINE3(osf_statfs, const char __user *, pathname,
248248
struct osf_statfs __user *, buffer, unsigned long, bufsiz)
249249
{
250250
struct path path;
@@ -358,7 +358,7 @@ osf_procfs_mount(char *dirname, struct procfs_args __user *args, int flags)
358358
return do_mount("", dirname, "proc", flags, NULL);
359359
}
360360

361-
SYSCALL_DEFINE4(osf_mount, unsigned long, typenr, char __user *, path,
361+
SYSCALL_DEFINE4(osf_mount, unsigned long, typenr, const char __user *, path,
362362
int, flag, void __user *, data)
363363
{
364364
int retval;
@@ -932,7 +932,7 @@ SYSCALL_DEFINE3(osf_setitimer, int, which, struct itimerval32 __user *, in,
932932

933933
}
934934

935-
SYSCALL_DEFINE2(osf_utimes, char __user *, filename,
935+
SYSCALL_DEFINE2(osf_utimes, const char __user *, filename,
936936
struct timeval32 __user *, tvs)
937937
{
938938
struct timespec tv[2];

arch/alpha/kernel/process.c

+1-1
Original file line numberDiff line numberDiff line change
@@ -387,7 +387,7 @@ EXPORT_SYMBOL(dump_elf_task_fp);
387387
* sys_execve() executes a new program.
388388
*/
389389
asmlinkage int
390-
do_sys_execve(char __user *ufilename, char __user * __user *argv,
390+
do_sys_execve(const char __user *ufilename, char __user * __user *argv,
391391
char __user * __user *envp, struct pt_regs *regs)
392392
{
393393
int error;

arch/arm/kernel/sys_arm.c

+2-2
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ asmlinkage int sys_vfork(struct pt_regs *regs)
6262
/* sys_execve() executes a new program.
6363
* This is called indirectly via a small wrapper
6464
*/
65-
asmlinkage int sys_execve(char __user *filenamei, char __user * __user *argv,
65+
asmlinkage int sys_execve(const char __user *filenamei, char __user * __user *argv,
6666
char __user * __user *envp, struct pt_regs *regs)
6767
{
6868
int error;
@@ -84,7 +84,7 @@ int kernel_execve(const char *filename, char *const argv[], char *const envp[])
8484
int ret;
8585

8686
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,
8888
(char __user * __user *)envp, &regs);
8989
if (ret < 0)
9090
goto out;

arch/arm/kernel/sys_oabi-compat.c

+3-3
Original file line numberDiff line numberDiff line change
@@ -141,7 +141,7 @@ static long cp_oldabi_stat64(struct kstat *stat,
141141
return copy_to_user(statbuf,&tmp,sizeof(tmp)) ? -EFAULT : 0;
142142
}
143143

144-
asmlinkage long sys_oabi_stat64(char __user * filename,
144+
asmlinkage long sys_oabi_stat64(const char __user * filename,
145145
struct oldabi_stat64 __user * statbuf)
146146
{
147147
struct kstat stat;
@@ -151,7 +151,7 @@ asmlinkage long sys_oabi_stat64(char __user * filename,
151151
return error;
152152
}
153153

154-
asmlinkage long sys_oabi_lstat64(char __user * filename,
154+
asmlinkage long sys_oabi_lstat64(const char __user * filename,
155155
struct oldabi_stat64 __user * statbuf)
156156
{
157157
struct kstat stat;
@@ -172,7 +172,7 @@ asmlinkage long sys_oabi_fstat64(unsigned long fd,
172172
}
173173

174174
asmlinkage long sys_oabi_fstatat64(int dfd,
175-
char __user *filename,
175+
const char __user *filename,
176176
struct oldabi_stat64 __user *statbuf,
177177
int flag)
178178
{

arch/avr32/include/asm/syscalls.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ asmlinkage int sys_clone(unsigned long, unsigned long,
2121
unsigned long, unsigned long,
2222
struct pt_regs *);
2323
asmlinkage int sys_vfork(struct pt_regs *);
24-
asmlinkage int sys_execve(char __user *, char __user *__user *,
24+
asmlinkage int sys_execve(const char __user *, char __user *__user *,
2525
char __user *__user *, struct pt_regs *);
2626

2727
/* kernel/signal.c */

arch/avr32/kernel/process.c

+2-1
Original file line numberDiff line numberDiff line change
@@ -383,7 +383,8 @@ asmlinkage int sys_vfork(struct pt_regs *regs)
383383
0, NULL, NULL);
384384
}
385385

386-
asmlinkage int sys_execve(char __user *ufilename, char __user *__user *uargv,
386+
asmlinkage int sys_execve(const char __user *ufilename,
387+
char __user *__user *uargv,
387388
char __user *__user *uenvp, struct pt_regs *regs)
388389
{
389390
int error;

arch/blackfin/kernel/process.c

+1-1
Original file line numberDiff line numberDiff line change
@@ -209,7 +209,7 @@ copy_thread(unsigned long clone_flags,
209209
/*
210210
* sys_execve() executes a new program.
211211
*/
212-
asmlinkage int sys_execve(char __user *name, char __user * __user *argv, char __user * __user *envp)
212+
asmlinkage int sys_execve(const char __user *name, char __user * __user *argv, char __user * __user *envp)
213213
{
214214
int error;
215215
char *filename;

arch/frv/kernel/process.c

+2-1
Original file line numberDiff line numberDiff line change
@@ -250,7 +250,8 @@ int copy_thread(unsigned long clone_flags,
250250
/*
251251
* sys_execve() executes a new program.
252252
*/
253-
asmlinkage int sys_execve(char __user *name, char __user * __user *argv, char __user * __user *envp)
253+
asmlinkage int sys_execve(const char __user *name, char __user * __user *argv,
254+
char __user * __user *envp)
254255
{
255256
int error;
256257
char * filename;

arch/h8300/kernel/process.c

+1-1
Original file line numberDiff line numberDiff line change
@@ -212,7 +212,7 @@ int copy_thread(unsigned long clone_flags,
212212
/*
213213
* sys_execve() executes a new program.
214214
*/
215-
asmlinkage int sys_execve(char *name, char **argv, char **envp,int dummy,...)
215+
asmlinkage int sys_execve(const char *name, char **argv, char **envp,int dummy,...)
216216
{
217217
int error;
218218
char * filename;

arch/ia64/include/asm/unistd.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -353,7 +353,7 @@ asmlinkage unsigned long sys_mmap2(
353353
int fd, long pgoff);
354354
struct pt_regs;
355355
struct sigaction;
356-
long sys_execve(char __user *filename, char __user * __user *argv,
356+
long sys_execve(const char __user *filename, char __user * __user *argv,
357357
char __user * __user *envp, struct pt_regs *regs);
358358
asmlinkage long sys_ia64_pipe(void);
359359
asmlinkage long sys_rt_sigaction(int sig,

arch/ia64/kernel/process.c

+1-1
Original file line numberDiff line numberDiff line change
@@ -633,7 +633,7 @@ dump_fpu (struct pt_regs *pt, elf_fpregset_t dst)
633633
}
634634

635635
long
636-
sys_execve (char __user *filename, char __user * __user *argv, char __user * __user *envp,
636+
sys_execve (const char __user *filename, char __user * __user *argv, char __user * __user *envp,
637637
struct pt_regs *regs)
638638
{
639639
char *fname;

arch/m32r/kernel/process.c

+2-1
Original file line numberDiff line numberDiff line change
@@ -288,7 +288,8 @@ asmlinkage int sys_vfork(unsigned long r0, unsigned long r1, unsigned long r2,
288288
/*
289289
* sys_execve() executes a new program.
290290
*/
291-
asmlinkage int sys_execve(char __user *ufilename, char __user * __user *uargv,
291+
asmlinkage int sys_execve(const char __user *ufilename,
292+
char __user * __user *uargv,
292293
char __user * __user *uenvp,
293294
unsigned long r3, unsigned long r4, unsigned long r5,
294295
unsigned long r6, struct pt_regs regs)

arch/m68k/kernel/process.c

+1-1
Original file line numberDiff line numberDiff line change
@@ -315,7 +315,7 @@ EXPORT_SYMBOL(dump_fpu);
315315
/*
316316
* sys_execve() executes a new program.
317317
*/
318-
asmlinkage int sys_execve(char __user *name, char __user * __user *argv, char __user * __user *envp)
318+
asmlinkage int sys_execve(const char __user *name, char __user * __user *argv, char __user * __user *envp)
319319
{
320320
int error;
321321
char * filename;

arch/m68knommu/kernel/process.c

+1-1
Original file line numberDiff line numberDiff line change
@@ -350,7 +350,7 @@ void dump(struct pt_regs *fp)
350350
/*
351351
* sys_execve() executes a new program.
352352
*/
353-
asmlinkage int sys_execve(char *name, char **argv, char **envp)
353+
asmlinkage int sys_execve(const char *name, char **argv, char **envp)
354354
{
355355
int error;
356356
char * filename;

arch/microblaze/kernel/sys_microblaze.c

+1-1
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ asmlinkage long microblaze_clone(int flags, unsigned long stack, struct pt_regs
4747
return do_fork(flags, stack, regs, 0, NULL, NULL);
4848
}
4949

50-
asmlinkage long microblaze_execve(char __user *filenamei, char __user *__user *argv,
50+
asmlinkage long microblaze_execve(const char __user *filenamei, char __user *__user *argv,
5151
char __user *__user *envp, struct pt_regs *regs)
5252
{
5353
int error;

arch/mips/kernel/syscall.c

+1-1
Original file line numberDiff line numberDiff line change
@@ -254,7 +254,7 @@ asmlinkage int sys_execve(nabi_no_regargs struct pt_regs regs)
254254
int error;
255255
char * filename;
256256

257-
filename = getname((char __user *) (long)regs.regs[4]);
257+
filename = getname((const char __user *) (long)regs.regs[4]);
258258
error = PTR_ERR(filename);
259259
if (IS_ERR(filename))
260260
goto out;

arch/mn10300/kernel/process.c

+1-1
Original file line numberDiff line numberDiff line change
@@ -268,7 +268,7 @@ asmlinkage long sys_vfork(void)
268268
0, NULL, NULL);
269269
}
270270

271-
asmlinkage long sys_execve(char __user *name,
271+
asmlinkage long sys_execve(const char __user *name,
272272
char __user * __user *argv,
273273
char __user * __user *envp)
274274
{

arch/parisc/hpux/fs.c

+4-3
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ int hpux_execve(struct pt_regs *regs)
3636
int error;
3737
char *filename;
3838

39-
filename = getname((char __user *) regs->gr[26]);
39+
filename = getname((const char __user *) regs->gr[26]);
4040
error = PTR_ERR(filename);
4141
if (IS_ERR(filename))
4242
goto out;
@@ -169,7 +169,7 @@ static int cp_hpux_stat(struct kstat *stat, struct hpux_stat64 __user *statbuf)
169169
return copy_to_user(statbuf,&tmp,sizeof(tmp)) ? -EFAULT : 0;
170170
}
171171

172-
long hpux_stat64(char __user *filename, struct hpux_stat64 __user *statbuf)
172+
long hpux_stat64(const char __user *filename, struct hpux_stat64 __user *statbuf)
173173
{
174174
struct kstat stat;
175175
int error = vfs_stat(filename, &stat);
@@ -191,7 +191,8 @@ long hpux_fstat64(unsigned int fd, struct hpux_stat64 __user *statbuf)
191191
return error;
192192
}
193193

194-
long hpux_lstat64(char __user *filename, struct hpux_stat64 __user *statbuf)
194+
long hpux_lstat64(const char __user *filename,
195+
struct hpux_stat64 __user *statbuf)
195196
{
196197
struct kstat stat;
197198
int error = vfs_lstat(filename, &stat);

arch/powerpc/kernel/process.c

+1-1
Original file line numberDiff line numberDiff line change
@@ -1027,7 +1027,7 @@ int sys_execve(unsigned long a0, unsigned long a1, unsigned long a2,
10271027
int error;
10281028
char *filename;
10291029

1030-
filename = getname((char __user *) a0);
1030+
filename = getname((const char __user *) a0);
10311031
error = PTR_ERR(filename);
10321032
if (IS_ERR(filename))
10331033
goto out;

arch/powerpc/kernel/sys_ppc32.c

+1-1
Original file line numberDiff line numberDiff line change
@@ -546,7 +546,7 @@ compat_ssize_t compat_sys_pread64(unsigned int fd, char __user *ubuf, compat_siz
546546
return sys_pread64(fd, ubuf, count, ((loff_t)poshi << 32) | poslo);
547547
}
548548

549-
compat_ssize_t compat_sys_pwrite64(unsigned int fd, char __user *ubuf, compat_size_t count,
549+
compat_ssize_t compat_sys_pwrite64(unsigned int fd, const char __user *ubuf, compat_size_t count,
550550
u32 reg6, u32 poshi, u32 poslo)
551551
{
552552
return sys_pwrite64(fd, ubuf, count, ((loff_t)poshi << 32) | poslo);

arch/s390/kernel/compat_linux.c

+5-5
Original file line numberDiff line numberDiff line change
@@ -436,7 +436,7 @@ sys32_rt_sigqueueinfo(int pid, int sig, compat_siginfo_t __user *uinfo)
436436
* sys32_execve() executes a new program after the asm stub has set
437437
* things up for us. This should basically do what I want it to.
438438
*/
439-
asmlinkage long sys32_execve(char __user *name, compat_uptr_t __user *argv,
439+
asmlinkage long sys32_execve(const char __user *name, compat_uptr_t __user *argv,
440440
compat_uptr_t __user *envp)
441441
{
442442
struct pt_regs *regs = task_pt_regs(current);
@@ -570,7 +570,7 @@ static int cp_stat64(struct stat64_emu31 __user *ubuf, struct kstat *stat)
570570
return copy_to_user(ubuf,&tmp,sizeof(tmp)) ? -EFAULT : 0;
571571
}
572572

573-
asmlinkage long sys32_stat64(char __user * filename, struct stat64_emu31 __user * statbuf)
573+
asmlinkage long sys32_stat64(const char __user * filename, struct stat64_emu31 __user * statbuf)
574574
{
575575
struct kstat stat;
576576
int ret = vfs_stat(filename, &stat);
@@ -579,7 +579,7 @@ asmlinkage long sys32_stat64(char __user * filename, struct stat64_emu31 __user
579579
return ret;
580580
}
581581

582-
asmlinkage long sys32_lstat64(char __user * filename, struct stat64_emu31 __user * statbuf)
582+
asmlinkage long sys32_lstat64(const char __user * filename, struct stat64_emu31 __user * statbuf)
583583
{
584584
struct kstat stat;
585585
int ret = vfs_lstat(filename, &stat);
@@ -597,7 +597,7 @@ asmlinkage long sys32_fstat64(unsigned long fd, struct stat64_emu31 __user * sta
597597
return ret;
598598
}
599599

600-
asmlinkage long sys32_fstatat64(unsigned int dfd, char __user *filename,
600+
asmlinkage long sys32_fstatat64(unsigned int dfd, const char __user *filename,
601601
struct stat64_emu31 __user* statbuf, int flag)
602602
{
603603
struct kstat stat;
@@ -655,7 +655,7 @@ asmlinkage long sys32_read(unsigned int fd, char __user * buf, size_t count)
655655
return sys_read(fd, buf, count);
656656
}
657657

658-
asmlinkage long sys32_write(unsigned int fd, char __user * buf, size_t count)
658+
asmlinkage long sys32_write(unsigned int fd, const char __user * buf, size_t count)
659659
{
660660
if ((compat_ssize_t) count < 0)
661661
return -EINVAL;

arch/s390/kernel/compat_linux.h

+5-5
Original file line numberDiff line numberDiff line change
@@ -193,7 +193,7 @@ long sys32_rt_sigprocmask(int how, compat_sigset_t __user *set,
193193
compat_sigset_t __user *oset, size_t sigsetsize);
194194
long sys32_rt_sigpending(compat_sigset_t __user *set, size_t sigsetsize);
195195
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,
196+
long sys32_execve(const char __user *name, compat_uptr_t __user *argv,
197197
compat_uptr_t __user *envp);
198198
long sys32_init_module(void __user *umod, unsigned long len,
199199
const char __user *uargs);
@@ -207,16 +207,16 @@ long sys32_sendfile(int out_fd, int in_fd, compat_off_t __user *offset,
207207
size_t count);
208208
long sys32_sendfile64(int out_fd, int in_fd, compat_loff_t __user *offset,
209209
s32 count);
210-
long sys32_stat64(char __user * filename, struct stat64_emu31 __user * statbuf);
211-
long sys32_lstat64(char __user * filename,
210+
long sys32_stat64(const char __user * filename, struct stat64_emu31 __user * statbuf);
211+
long sys32_lstat64(const char __user * filename,
212212
struct stat64_emu31 __user * statbuf);
213213
long sys32_fstat64(unsigned long fd, struct stat64_emu31 __user * statbuf);
214-
long sys32_fstatat64(unsigned int dfd, char __user *filename,
214+
long sys32_fstatat64(unsigned int dfd, const char __user *filename,
215215
struct stat64_emu31 __user* statbuf, int flag);
216216
unsigned long old32_mmap(struct mmap_arg_struct_emu31 __user *arg);
217217
long sys32_mmap2(struct mmap_arg_struct_emu31 __user *arg);
218218
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);
219+
long sys32_write(unsigned int fd, const char __user * buf, size_t count);
220220
long sys32_fadvise64(int fd, loff_t offset, size_t len, int advise);
221221
long sys32_fadvise64_64(struct fadvise64_64_args __user *args);
222222
long sys32_sigaction(int sig, const struct old_sigaction32 __user *act,

arch/s390/kernel/entry.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ long sys_clone(unsigned long newsp, unsigned long clone_flags,
4242
int __user *parent_tidptr, int __user *child_tidptr);
4343
long sys_vfork(void);
4444
void execve_tail(void);
45-
long sys_execve(char __user *name, char __user * __user *argv,
45+
long sys_execve(const char __user *name, char __user * __user *argv,
4646
char __user * __user *envp);
4747
long sys_sigsuspend(int history0, int history1, old_sigset_t mask);
4848
long sys_sigaction(int sig, const struct old_sigaction __user *act,

arch/s390/kernel/process.c

+1-1
Original file line numberDiff line numberDiff line change
@@ -267,7 +267,7 @@ asmlinkage void execve_tail(void)
267267
/*
268268
* sys_execve() executes a new program.
269269
*/
270-
SYSCALL_DEFINE3(execve, char __user *, name, char __user * __user *, argv,
270+
SYSCALL_DEFINE3(execve, const char __user *, name, char __user * __user *, argv,
271271
char __user * __user *, envp)
272272
{
273273
struct pt_regs *regs = task_pt_regs(current);

arch/sh/include/asm/syscalls_32.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ asmlinkage int sys_clone(unsigned long clone_flags, unsigned long newsp,
1919
asmlinkage int sys_vfork(unsigned long r4, unsigned long r5,
2020
unsigned long r6, unsigned long r7,
2121
struct pt_regs __regs);
22-
asmlinkage int sys_execve(char __user *ufilename, char __user * __user *uargv,
22+
asmlinkage int sys_execve(const char __user *ufilename, char __user * __user *uargv,
2323
char __user * __user *uenvp, unsigned long r7,
2424
struct pt_regs __regs);
2525
asmlinkage int sys_sigsuspend(old_sigset_t mask, unsigned long r5,

arch/sh/include/asm/syscalls_64.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ asmlinkage int sys_vfork(unsigned long r2, unsigned long r3,
2121
unsigned long r4, unsigned long r5,
2222
unsigned long r6, unsigned long r7,
2323
struct pt_regs *pregs);
24-
asmlinkage int sys_execve(char *ufilename, char **uargv,
24+
asmlinkage int sys_execve(const char *ufilename, char **uargv,
2525
char **uenvp, unsigned long r5,
2626
unsigned long r6, unsigned long r7,
2727
struct pt_regs *pregs);

arch/sh/kernel/process_64.c

+1-1
Original file line numberDiff line numberDiff line change
@@ -483,7 +483,7 @@ asmlinkage int sys_vfork(unsigned long r2, unsigned long r3,
483483
/*
484484
* sys_execve() executes a new program.
485485
*/
486-
asmlinkage int sys_execve(char *ufilename, char **uargv,
486+
asmlinkage int sys_execve(const char *ufilename, char **uargv,
487487
char **uenvp, unsigned long r5,
488488
unsigned long r6, unsigned long r7,
489489
struct pt_regs *pregs)

arch/sparc/kernel/sys_sparc32.c

+4-3
Original file line numberDiff line numberDiff line change
@@ -162,7 +162,7 @@ static int cp_compat_stat64(struct kstat *stat,
162162
return err;
163163
}
164164

165-
asmlinkage long compat_sys_stat64(char __user * filename,
165+
asmlinkage long compat_sys_stat64(const char __user * filename,
166166
struct compat_stat64 __user *statbuf)
167167
{
168168
struct kstat stat;
@@ -173,7 +173,7 @@ asmlinkage long compat_sys_stat64(char __user * filename,
173173
return error;
174174
}
175175

176-
asmlinkage long compat_sys_lstat64(char __user * filename,
176+
asmlinkage long compat_sys_lstat64(const char __user * filename,
177177
struct compat_stat64 __user *statbuf)
178178
{
179179
struct kstat stat;
@@ -195,7 +195,8 @@ asmlinkage long compat_sys_fstat64(unsigned int fd,
195195
return error;
196196
}
197197

198-
asmlinkage long compat_sys_fstatat64(unsigned int dfd, char __user *filename,
198+
asmlinkage long compat_sys_fstatat64(unsigned int dfd,
199+
const char __user *filename,
199200
struct compat_stat64 __user * statbuf, int flag)
200201
{
201202
struct kstat stat;

0 commit comments

Comments
 (0)