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/sparc64/kernel/systbls.S |    2 +-
 25-akpm/include/asm-x86_64/unistd.h   |    2 +-
 6 files changed, 6 insertions(+), 6 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	2004-05-19 02:52:46.556964376 -0700
+++ 25-akpm/arch/alpha/kernel/systbls.S	2004-05-19 02:52:46.571962096 -0700
@@ -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	2004-05-19 02:52:46.558964072 -0700
+++ 25-akpm/arch/ia64/kernel/entry.S	2004-05-19 02:52:46.570962248 -0700
@@ -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	2004-05-19 02:52:46.559963920 -0700
+++ 25-akpm/arch/mips/kernel/scall64-64.S	2004-05-19 02:52:46.571962096 -0700
@@ -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	2004-05-19 02:52:46.561963616 -0700
+++ 25-akpm/arch/ppc64/kernel/misc.S	2004-05-19 02:52:46.581960576 -0700
@@ -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	2004-05-19 02:52:46.563963312 -0700
+++ 25-akpm/arch/sparc64/kernel/systbls.S	2004-05-19 02:52:46.569962400 -0700
@@ -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	2004-05-19 02:52:46.565963008 -0700
+++ 25-akpm/include/asm-x86_64/unistd.h	2004-05-19 02:52:46.568962552 -0700
@@ -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

_