
From: Andi Kleen <ak@suse.de>

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 */

_
