Commit 1134723e authored by Heiko Carstens's avatar Heiko Carstens

[CVE-2009-0029] Remove __attribute__((weak)) from sys_pipe/sys_pipe2

Remove __attribute__((weak)) from common code sys_pipe implemantation.
IA64, ALPHA, SUPERH (32bit) and SPARC (32bit) have own implemantations
with the same name. Just rename them.
For sys_pipe2 there is no architecture specific implementation.

Cc: Richard Henderson <rth@twiddle.net>
Cc: David S. Miller <davem@davemloft.net>
Cc: Paul Mundt <lethal@linux-sh.org>
Cc: Tony Luck <tony.luck@intel.com>
Signed-off-by: default avatarHeiko Carstens <heiko.carstens@de.ibm.com>
parent e55380ed
...@@ -896,9 +896,9 @@ sys_getxpid: ...@@ -896,9 +896,9 @@ sys_getxpid:
.end sys_getxpid .end sys_getxpid
.align 4 .align 4
.globl sys_pipe .globl sys_alpha_pipe
.ent sys_pipe .ent sys_alpha_pipe
sys_pipe: sys_alpha_pipe:
lda $sp, -16($sp) lda $sp, -16($sp)
stq $26, 0($sp) stq $26, 0($sp)
.prologue 0 .prologue 0
...@@ -916,7 +916,7 @@ sys_pipe: ...@@ -916,7 +916,7 @@ sys_pipe:
stq $1, 80+16($sp) stq $1, 80+16($sp)
1: lda $sp, 16($sp) 1: lda $sp, 16($sp)
ret ret
.end sys_pipe .end sys_alpha_pipe
.align 4 .align 4
.globl sys_execve .globl sys_execve
......
...@@ -52,7 +52,7 @@ sys_call_table: ...@@ -52,7 +52,7 @@ sys_call_table:
.quad sys_setpgid .quad sys_setpgid
.quad alpha_ni_syscall /* 40 */ .quad alpha_ni_syscall /* 40 */
.quad sys_dup .quad sys_dup
.quad sys_pipe .quad sys_alpha_pipe
.quad osf_set_program_attributes .quad osf_set_program_attributes
.quad alpha_ni_syscall .quad alpha_ni_syscall
.quad sys_open /* 45 */ .quad sys_open /* 45 */
......
...@@ -220,7 +220,7 @@ ia32_syscall_table: ...@@ -220,7 +220,7 @@ ia32_syscall_table:
data8 sys_mkdir data8 sys_mkdir
data8 sys_rmdir /* 40 */ data8 sys_rmdir /* 40 */
data8 sys_dup data8 sys_dup
data8 sys_pipe data8 sys_ia64_pipe
data8 compat_sys_times data8 compat_sys_times
data8 sys_ni_syscall /* old prof syscall holder */ data8 sys_ni_syscall /* old prof syscall holder */
data8 sys32_brk /* 45 */ data8 sys32_brk /* 45 */
......
...@@ -364,7 +364,7 @@ struct pt_regs; ...@@ -364,7 +364,7 @@ struct pt_regs;
struct sigaction; struct sigaction;
long sys_execve(char __user *filename, char __user * __user *argv, long sys_execve(char __user *filename, char __user * __user *argv,
char __user * __user *envp, struct pt_regs *regs); char __user * __user *envp, struct pt_regs *regs);
asmlinkage long sys_pipe(void); asmlinkage long sys_ia64_pipe(void);
asmlinkage long sys_rt_sigaction(int sig, asmlinkage long sys_rt_sigaction(int sig,
const struct sigaction __user *act, const struct sigaction __user *act,
struct sigaction __user *oact, struct sigaction __user *oact,
......
...@@ -1442,7 +1442,7 @@ sys_call_table: ...@@ -1442,7 +1442,7 @@ sys_call_table:
data8 sys_mkdir // 1055 data8 sys_mkdir // 1055
data8 sys_rmdir data8 sys_rmdir
data8 sys_dup data8 sys_dup
data8 sys_pipe data8 sys_ia64_pipe
data8 sys_times data8 sys_times
data8 ia64_brk // 1060 data8 ia64_brk // 1060
data8 sys_setgid data8 sys_setgid
......
...@@ -154,7 +154,7 @@ out: ...@@ -154,7 +154,7 @@ out:
* and r9) as this is faster than doing a copy_to_user(). * and r9) as this is faster than doing a copy_to_user().
*/ */
asmlinkage long asmlinkage long
sys_pipe (void) sys_ia64_pipe (void)
{ {
struct pt_regs *regs = task_pt_regs(current); struct pt_regs *regs = task_pt_regs(current);
int fd[2]; int fd[2];
......
...@@ -30,7 +30,6 @@ struct fadvise64_64_args; ...@@ -30,7 +30,6 @@ struct fadvise64_64_args;
struct old_sigaction; struct old_sigaction;
struct sel_arg_struct; struct sel_arg_struct;
long sys_pipe(unsigned long __user *fildes);
long sys_mmap2(struct mmap_arg_struct __user *arg); long sys_mmap2(struct mmap_arg_struct __user *arg);
long old_mmap(struct mmap_arg_struct __user *arg); long old_mmap(struct mmap_arg_struct __user *arg);
long sys_ipc(uint call, int first, unsigned long second, long sys_ipc(uint call, int first, unsigned long second,
......
...@@ -36,9 +36,9 @@ asmlinkage int sys_sigreturn(unsigned long r4, unsigned long r5, ...@@ -36,9 +36,9 @@ asmlinkage int sys_sigreturn(unsigned long r4, unsigned long r5,
asmlinkage int sys_rt_sigreturn(unsigned long r4, unsigned long r5, asmlinkage int sys_rt_sigreturn(unsigned long r4, unsigned long r5,
unsigned long r6, unsigned long r7, unsigned long r6, unsigned long r7,
struct pt_regs __regs); struct pt_regs __regs);
asmlinkage int sys_pipe(unsigned long r4, unsigned long r5, asmlinkage int sys_sh_pipe(unsigned long r4, unsigned long r5,
unsigned long r6, unsigned long r7, unsigned long r6, unsigned long r7,
struct pt_regs __regs); struct pt_regs __regs);
asmlinkage ssize_t sys_pread_wrapper(unsigned int fd, char __user *buf, asmlinkage ssize_t sys_pread_wrapper(unsigned int fd, char __user *buf,
size_t count, long dummy, loff_t pos); size_t count, long dummy, loff_t pos);
asmlinkage ssize_t sys_pwrite_wrapper(unsigned int fd, const char __user *buf, asmlinkage ssize_t sys_pwrite_wrapper(unsigned int fd, const char __user *buf,
......
...@@ -22,7 +22,7 @@ ...@@ -22,7 +22,7 @@
* sys_pipe() is the normal C calling standard for creating * sys_pipe() is the normal C calling standard for creating
* a pipe. It's not the way Unix traditionally does this, though. * a pipe. It's not the way Unix traditionally does this, though.
*/ */
asmlinkage int sys_pipe(unsigned long r4, unsigned long r5, asmlinkage int sys_sh_pipe(unsigned long r4, unsigned long r5,
unsigned long r6, unsigned long r7, unsigned long r6, unsigned long r7,
struct pt_regs __regs) struct pt_regs __regs)
{ {
......
...@@ -58,7 +58,7 @@ ENTRY(sys_call_table) ...@@ -58,7 +58,7 @@ ENTRY(sys_call_table)
.long sys_mkdir .long sys_mkdir
.long sys_rmdir /* 40 */ .long sys_rmdir /* 40 */
.long sys_dup .long sys_dup
.long sys_pipe .long sys_sh_pipe
.long sys_times .long sys_times
.long sys_ni_syscall /* old prof syscall holder */ .long sys_ni_syscall /* old prof syscall holder */
.long sys_brk /* 45 */ .long sys_brk /* 45 */
......
...@@ -1088,8 +1088,8 @@ sunos_execv: ...@@ -1088,8 +1088,8 @@ sunos_execv:
ld [%sp + STACKFRAME_SZ + PT_I0], %o0 ld [%sp + STACKFRAME_SZ + PT_I0], %o0
.align 4 .align 4
.globl sys_pipe .globl sys_sparc_pipe
sys_pipe: sys_sparc_pipe:
mov %o7, %l5 mov %o7, %l5
add %sp, STACKFRAME_SZ, %o0 ! pt_regs *regs arg add %sp, STACKFRAME_SZ, %o0 ! pt_regs *regs arg
call sparc_pipe call sparc_pipe
......
...@@ -20,7 +20,7 @@ execve_merge: ...@@ -20,7 +20,7 @@ execve_merge:
add %sp, PTREGS_OFF, %o0 add %sp, PTREGS_OFF, %o0
.align 32 .align 32
sys_pipe: sys_sparc_pipe:
ba,pt %xcc, sparc_pipe ba,pt %xcc, sparc_pipe
add %sp, PTREGS_OFF, %o0 add %sp, PTREGS_OFF, %o0
sys_nis_syscall: sys_nis_syscall:
......
...@@ -24,7 +24,7 @@ sys_call_table: ...@@ -24,7 +24,7 @@ sys_call_table:
/*25*/ .long sys_vmsplice, sys_ptrace, sys_alarm, sys_sigaltstack, sys_pause /*25*/ .long sys_vmsplice, sys_ptrace, sys_alarm, sys_sigaltstack, sys_pause
/*30*/ .long sys_utime, sys_lchown, sys_fchown, sys_access, sys_nice /*30*/ .long sys_utime, sys_lchown, sys_fchown, sys_access, sys_nice
/*35*/ .long sys_chown, sys_sync, sys_kill, sys_newstat, sys_sendfile /*35*/ .long sys_chown, sys_sync, sys_kill, sys_newstat, sys_sendfile
/*40*/ .long sys_newlstat, sys_dup, sys_pipe, sys_times, sys_getuid /*40*/ .long sys_newlstat, sys_dup, sys_sparc_pipe, sys_times, sys_getuid
/*45*/ .long sys_umount, sys_setgid16, sys_getgid16, sys_signal, sys_geteuid16 /*45*/ .long sys_umount, sys_setgid16, sys_getgid16, sys_signal, sys_geteuid16
/*50*/ .long sys_getegid16, sys_acct, sys_nis_syscall, sys_getgid, sys_ioctl /*50*/ .long sys_getegid16, sys_acct, sys_nis_syscall, sys_getgid, sys_ioctl
/*55*/ .long sys_reboot, sys_mmap2, sys_symlink, sys_readlink, sys_execve /*55*/ .long sys_reboot, sys_mmap2, sys_symlink, sys_readlink, sys_execve
......
...@@ -26,7 +26,7 @@ sys_call_table32: ...@@ -26,7 +26,7 @@ sys_call_table32:
/*25*/ .word sys32_vmsplice, compat_sys_ptrace, sys_alarm, sys32_sigaltstack, sys_pause /*25*/ .word sys32_vmsplice, compat_sys_ptrace, sys_alarm, sys32_sigaltstack, sys_pause
/*30*/ .word compat_sys_utime, sys_lchown, sys_fchown, sys32_access, sys32_nice /*30*/ .word compat_sys_utime, sys_lchown, sys_fchown, sys32_access, sys32_nice
.word sys_chown, sys_sync, sys32_kill, compat_sys_newstat, sys32_sendfile .word sys_chown, sys_sync, sys32_kill, compat_sys_newstat, sys32_sendfile
/*40*/ .word compat_sys_newlstat, sys_dup, sys_pipe, compat_sys_times, sys_getuid /*40*/ .word compat_sys_newlstat, sys_dup, sys_sparc_pipe, compat_sys_times, sys_getuid
.word sys32_umount, sys_setgid16, sys_getgid16, sys32_signal, sys_geteuid16 .word sys32_umount, sys_setgid16, sys_getgid16, sys32_signal, sys_geteuid16
/*50*/ .word sys_getegid16, sys_acct, sys_nis_syscall, sys_getgid, compat_sys_ioctl /*50*/ .word sys_getegid16, sys_acct, sys_nis_syscall, sys_getgid, compat_sys_ioctl
.word sys32_reboot, sys32_mmap2, sys_symlink, sys32_readlink, sys32_execve .word sys32_reboot, sys32_mmap2, sys_symlink, sys32_readlink, sys32_execve
...@@ -100,7 +100,7 @@ sys_call_table: ...@@ -100,7 +100,7 @@ sys_call_table:
/*25*/ .word sys_vmsplice, sys_ptrace, sys_alarm, sys_sigaltstack, sys_nis_syscall /*25*/ .word sys_vmsplice, sys_ptrace, sys_alarm, sys_sigaltstack, sys_nis_syscall
/*30*/ .word sys_utime, sys_nis_syscall, sys_nis_syscall, sys_access, sys_nice /*30*/ .word sys_utime, sys_nis_syscall, sys_nis_syscall, sys_access, sys_nice
.word sys_nis_syscall, sys_sync, sys_kill, sys_newstat, sys_sendfile64 .word sys_nis_syscall, sys_sync, sys_kill, sys_newstat, sys_sendfile64
/*40*/ .word sys_newlstat, sys_dup, sys_pipe, sys_times, sys_nis_syscall /*40*/ .word sys_newlstat, sys_dup, sys_sparc_pipe, sys_times, sys_nis_syscall
.word sys_umount, sys_setgid, sys_getgid, sys_signal, sys_geteuid .word sys_umount, sys_setgid, sys_getgid, sys_signal, sys_geteuid
/*50*/ .word sys_getegid, sys_acct, sys_memory_ordering, sys_nis_syscall, sys_ioctl /*50*/ .word sys_getegid, sys_acct, sys_memory_ordering, sys_nis_syscall, sys_ioctl
.word sys_reboot, sys_nis_syscall, sys_symlink, sys_readlink, sys_execve .word sys_reboot, sys_nis_syscall, sys_symlink, sys_readlink, sys_execve
......
...@@ -1043,7 +1043,7 @@ int do_pipe(int *fd) ...@@ -1043,7 +1043,7 @@ int do_pipe(int *fd)
* sys_pipe() is the normal C calling standard for creating * sys_pipe() is the normal C calling standard for creating
* a pipe. It's not the way Unix traditionally does this, though. * a pipe. It's not the way Unix traditionally does this, though.
*/ */
asmlinkage long __weak sys_pipe2(int __user *fildes, int flags) asmlinkage long sys_pipe2(int __user *fildes, int flags)
{ {
int fd[2]; int fd[2];
int error; int error;
...@@ -1059,7 +1059,7 @@ asmlinkage long __weak sys_pipe2(int __user *fildes, int flags) ...@@ -1059,7 +1059,7 @@ asmlinkage long __weak sys_pipe2(int __user *fildes, int flags)
return error; return error;
} }
asmlinkage long __weak sys_pipe(int __user *fildes) asmlinkage long sys_pipe(int __user *fildes)
{ {
return sys_pipe2(fildes, 0); return sys_pipe2(fildes, 0);
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment