From: Andi Kleen sys_sendfile has a hardcoded 2GB limit. 64bit architectures should probably always use sys_sendfile64() in their native system tables, because for them sizeof(off_t) == sizeof(loff_t). This patch does this. It seemed easier to just change the 64bit entry tables instead of fixing up all the emulation layers to do 2GB checks on their own. I changed all 64bit architectures except for parisc64, which seemed to already have a sendfile64. --- 25-akpm/arch/alpha/kernel/systbls.S | 2 +- 25-akpm/arch/ia64/kernel/entry.S | 2 +- 25-akpm/arch/mips/kernel/scall64-64.S | 2 +- 25-akpm/arch/ppc64/kernel/misc.S | 2 +- 25-akpm/arch/s390/kernel/syscalls.S | 2 +- 25-akpm/arch/sparc64/kernel/systbls.S | 2 +- 25-akpm/include/asm-x86_64/unistd.h | 2 +- 7 files changed, 7 insertions(+), 7 deletions(-) diff -puN arch/alpha/kernel/systbls.S~fixing-sendfile-on-64bit-architectures arch/alpha/kernel/systbls.S --- 25/arch/alpha/kernel/systbls.S~fixing-sendfile-on-64bit-architectures Wed May 19 14:30:31 2004 +++ 25-akpm/arch/alpha/kernel/systbls.S Wed May 19 14:30:31 2004 @@ -389,7 +389,7 @@ sys_call_table: .quad sys_getcwd .quad sys_capget .quad sys_capset - .quad sys_sendfile /* 370 */ + .quad sys_sendfile64 /* 370 */ .quad sys_setresgid .quad sys_getresgid .quad sys_ni_syscall /* sys_dipc */ diff -puN arch/ia64/kernel/entry.S~fixing-sendfile-on-64bit-architectures arch/ia64/kernel/entry.S --- 25/arch/ia64/kernel/entry.S~fixing-sendfile-on-64bit-architectures Wed May 19 14:30:31 2004 +++ 25-akpm/arch/ia64/kernel/entry.S Wed May 19 14:30:31 2004 @@ -1429,7 +1429,7 @@ sys_call_table: data8 sys_getcwd data8 sys_capget // 1185 data8 sys_capset - data8 sys_sendfile + data8 sys_sendfile64 data8 sys_ni_syscall // sys_getpmsg (STREAMS) data8 sys_ni_syscall // sys_putpmsg (STREAMS) data8 sys_socket // 1190 diff -puN arch/mips/kernel/scall64-64.S~fixing-sendfile-on-64bit-architectures arch/mips/kernel/scall64-64.S --- 25/arch/mips/kernel/scall64-64.S~fixing-sendfile-on-64bit-architectures Wed May 19 14:30:31 2004 +++ 25-akpm/arch/mips/kernel/scall64-64.S Wed May 19 14:30:31 2004 @@ -250,7 +250,7 @@ sys_call_table: PTR sys_setitimer PTR sys_alarm PTR sys_getpid - PTR sys_sendfile + PTR sys_sendfile64 PTR sys_socket /* 5040 */ PTR sys_connect PTR sys_accept diff -puN arch/ppc64/kernel/misc.S~fixing-sendfile-on-64bit-architectures arch/ppc64/kernel/misc.S --- 25/arch/ppc64/kernel/misc.S~fixing-sendfile-on-64bit-architectures Wed May 19 14:30:31 2004 +++ 25-akpm/arch/ppc64/kernel/misc.S Wed May 19 14:30:31 2004 @@ -1040,7 +1040,7 @@ _GLOBAL(sys_call_table) .llong .sys_capget .llong .sys_capset .llong .sys_sigaltstack /* 185 */ - .llong .sys_sendfile + .llong .sys_sendfile64 .llong .sys_ni_syscall /* reserved for streams1 */ .llong .sys_ni_syscall /* reserved for streams2 */ .llong .sys_vfork diff -puN arch/sparc64/kernel/systbls.S~fixing-sendfile-on-64bit-architectures arch/sparc64/kernel/systbls.S --- 25/arch/sparc64/kernel/systbls.S~fixing-sendfile-on-64bit-architectures Wed May 19 14:30:31 2004 +++ 25-akpm/arch/sparc64/kernel/systbls.S Wed May 19 14:30:31 2004 @@ -90,7 +90,7 @@ sys_call_table: /*20*/ .word sys_getpid, sys_capget, sys_capset, sys_setuid, sys_getuid /*25*/ .word sys_nis_syscall, 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_sendfile + .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 .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 diff -puN include/asm-x86_64/unistd.h~fixing-sendfile-on-64bit-architectures include/asm-x86_64/unistd.h --- 25/include/asm-x86_64/unistd.h~fixing-sendfile-on-64bit-architectures Wed May 19 14:30:31 2004 +++ 25-akpm/include/asm-x86_64/unistd.h Wed May 19 14:30:31 2004 @@ -98,7 +98,7 @@ __SYSCALL(__NR_setitimer, sys_setitimer) __SYSCALL(__NR_getpid, sys_getpid) #define __NR_sendfile 40 -__SYSCALL(__NR_sendfile, sys_sendfile) +__SYSCALL(__NR_sendfile, sys_sendfile64) #define __NR_socket 41 __SYSCALL(__NR_socket, sys_socket) #define __NR_connect 42 diff -puN arch/s390/kernel/syscalls.S~fixing-sendfile-on-64bit-architectures arch/s390/kernel/syscalls.S --- 25/arch/s390/kernel/syscalls.S~fixing-sendfile-on-64bit-architectures Wed May 19 14:38:23 2004 +++ 25-akpm/arch/s390/kernel/syscalls.S Wed May 19 14:38:23 2004 @@ -195,7 +195,7 @@ SYSCALL(sys_getcwd,sys_getcwd,sys32_getc SYSCALL(sys_capget,sys_capget,sys32_capget_wrapper) SYSCALL(sys_capset,sys_capset,sys32_capset_wrapper) /* 185 */ SYSCALL(sys_sigaltstack_glue,sys_sigaltstack_glue,sys32_sigaltstack_glue) -SYSCALL(sys_sendfile,sys_sendfile,sys32_sendfile_wrapper) +SYSCALL(sys_sendfile,sys_sendfile64,sys32_sendfile_wrapper) NI_SYSCALL /* streams1 */ NI_SYSCALL /* streams2 */ SYSCALL(sys_vfork_glue,sys_vfork_glue,sys_vfork_glue) /* 190 */ _