mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-28 22:54:05 +08:00
[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: Heiko Carstens <heiko.carstens@de.ibm.com>
This commit is contained in:
parent
e55380edf6
commit
1134723e96
@ -896,9 +896,9 @@ sys_getxpid:
|
||||
.end sys_getxpid
|
||||
|
||||
.align 4
|
||||
.globl sys_pipe
|
||||
.ent sys_pipe
|
||||
sys_pipe:
|
||||
.globl sys_alpha_pipe
|
||||
.ent sys_alpha_pipe
|
||||
sys_alpha_pipe:
|
||||
lda $sp, -16($sp)
|
||||
stq $26, 0($sp)
|
||||
.prologue 0
|
||||
@ -916,7 +916,7 @@ sys_pipe:
|
||||
stq $1, 80+16($sp)
|
||||
1: lda $sp, 16($sp)
|
||||
ret
|
||||
.end sys_pipe
|
||||
.end sys_alpha_pipe
|
||||
|
||||
.align 4
|
||||
.globl sys_execve
|
||||
|
@ -52,7 +52,7 @@ sys_call_table:
|
||||
.quad sys_setpgid
|
||||
.quad alpha_ni_syscall /* 40 */
|
||||
.quad sys_dup
|
||||
.quad sys_pipe
|
||||
.quad sys_alpha_pipe
|
||||
.quad osf_set_program_attributes
|
||||
.quad alpha_ni_syscall
|
||||
.quad sys_open /* 45 */
|
||||
|
@ -220,7 +220,7 @@ ia32_syscall_table:
|
||||
data8 sys_mkdir
|
||||
data8 sys_rmdir /* 40 */
|
||||
data8 sys_dup
|
||||
data8 sys_pipe
|
||||
data8 sys_ia64_pipe
|
||||
data8 compat_sys_times
|
||||
data8 sys_ni_syscall /* old prof syscall holder */
|
||||
data8 sys32_brk /* 45 */
|
||||
|
@ -364,7 +364,7 @@ struct pt_regs;
|
||||
struct sigaction;
|
||||
long sys_execve(char __user *filename, char __user * __user *argv,
|
||||
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,
|
||||
const struct sigaction __user *act,
|
||||
struct sigaction __user *oact,
|
||||
|
@ -1442,7 +1442,7 @@ sys_call_table:
|
||||
data8 sys_mkdir // 1055
|
||||
data8 sys_rmdir
|
||||
data8 sys_dup
|
||||
data8 sys_pipe
|
||||
data8 sys_ia64_pipe
|
||||
data8 sys_times
|
||||
data8 ia64_brk // 1060
|
||||
data8 sys_setgid
|
||||
|
@ -154,7 +154,7 @@ out:
|
||||
* and r9) as this is faster than doing a copy_to_user().
|
||||
*/
|
||||
asmlinkage long
|
||||
sys_pipe (void)
|
||||
sys_ia64_pipe (void)
|
||||
{
|
||||
struct pt_regs *regs = task_pt_regs(current);
|
||||
int fd[2];
|
||||
|
@ -30,7 +30,6 @@ struct fadvise64_64_args;
|
||||
struct old_sigaction;
|
||||
struct sel_arg_struct;
|
||||
|
||||
long sys_pipe(unsigned long __user *fildes);
|
||||
long sys_mmap2(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,
|
||||
|
@ -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,
|
||||
unsigned long r6, unsigned long r7,
|
||||
struct pt_regs __regs);
|
||||
asmlinkage int sys_pipe(unsigned long r4, unsigned long r5,
|
||||
unsigned long r6, unsigned long r7,
|
||||
struct pt_regs __regs);
|
||||
asmlinkage int sys_sh_pipe(unsigned long r4, unsigned long r5,
|
||||
unsigned long r6, unsigned long r7,
|
||||
struct pt_regs __regs);
|
||||
asmlinkage ssize_t sys_pread_wrapper(unsigned int fd, char __user *buf,
|
||||
size_t count, long dummy, loff_t pos);
|
||||
asmlinkage ssize_t sys_pwrite_wrapper(unsigned int fd, const char __user *buf,
|
||||
|
@ -22,7 +22,7 @@
|
||||
* sys_pipe() is the normal C calling standard for creating
|
||||
* 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,
|
||||
struct pt_regs __regs)
|
||||
{
|
||||
|
@ -58,7 +58,7 @@ ENTRY(sys_call_table)
|
||||
.long sys_mkdir
|
||||
.long sys_rmdir /* 40 */
|
||||
.long sys_dup
|
||||
.long sys_pipe
|
||||
.long sys_sh_pipe
|
||||
.long sys_times
|
||||
.long sys_ni_syscall /* old prof syscall holder */
|
||||
.long sys_brk /* 45 */
|
||||
|
@ -1088,8 +1088,8 @@ sunos_execv:
|
||||
ld [%sp + STACKFRAME_SZ + PT_I0], %o0
|
||||
|
||||
.align 4
|
||||
.globl sys_pipe
|
||||
sys_pipe:
|
||||
.globl sys_sparc_pipe
|
||||
sys_sparc_pipe:
|
||||
mov %o7, %l5
|
||||
add %sp, STACKFRAME_SZ, %o0 ! pt_regs *regs arg
|
||||
call sparc_pipe
|
||||
|
@ -20,7 +20,7 @@ execve_merge:
|
||||
add %sp, PTREGS_OFF, %o0
|
||||
|
||||
.align 32
|
||||
sys_pipe:
|
||||
sys_sparc_pipe:
|
||||
ba,pt %xcc, sparc_pipe
|
||||
add %sp, PTREGS_OFF, %o0
|
||||
sys_nis_syscall:
|
||||
|
@ -24,7 +24,7 @@ sys_call_table:
|
||||
/*25*/ .long sys_vmsplice, sys_ptrace, sys_alarm, sys_sigaltstack, sys_pause
|
||||
/*30*/ .long sys_utime, sys_lchown, sys_fchown, sys_access, sys_nice
|
||||
/*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
|
||||
/*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
|
||||
|
@ -26,7 +26,7 @@ sys_call_table32:
|
||||
/*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
|
||||
.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
|
||||
/*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
|
||||
@ -100,7 +100,7 @@ sys_call_table:
|
||||
/*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
|
||||
.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
|
||||
/*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
|
||||
|
@ -1043,7 +1043,7 @@ int do_pipe(int *fd)
|
||||
* sys_pipe() is the normal C calling standard for creating
|
||||
* 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 error;
|
||||
@ -1059,7 +1059,7 @@ asmlinkage long __weak sys_pipe2(int __user *fildes, int flags)
|
||||
return error;
|
||||
}
|
||||
|
||||
asmlinkage long __weak sys_pipe(int __user *fildes)
|
||||
asmlinkage long sys_pipe(int __user *fildes)
|
||||
{
|
||||
return sys_pipe2(fildes, 0);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user