| From 1631fcea8399da5e80a80084b3b8c5bfd99d21e7 Mon Sep 17 00:00:00 2001 |
| From: Chris Metcalf <cmetcalf@tilera.com> |
| Date: Mon, 26 Mar 2012 16:26:12 -0400 |
| Subject: compat: use sys_sendfile64() implementation for sendfile syscall |
| |
| From: Chris Metcalf <cmetcalf@tilera.com> |
| |
| commit 1631fcea8399da5e80a80084b3b8c5bfd99d21e7 upstream. |
| |
| <asm-generic/unistd.h> was set up to use sys_sendfile() for the 32-bit |
| compat API instead of sys_sendfile64(), but in fact the right thing to |
| do is to use sys_sendfile64() in all cases. The 32-bit sendfile64() API |
| in glibc uses the sendfile64 syscall, so it has to be capable of doing |
| full 64-bit operations. But the sys_sendfile() kernel implementation |
| has a MAX_NON_LFS test in it which explicitly limits the offset to 2^32. |
| So, we need to use the sys_sendfile64() implementation in the kernel |
| for this case. |
| |
| Acked-by: Arnd Bergmann <arnd@arndb.de> |
| Signed-off-by: Chris Metcalf <cmetcalf@tilera.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| include/asm-generic/unistd.h | 2 +- |
| 1 file changed, 1 insertion(+), 1 deletion(-) |
| |
| --- a/include/asm-generic/unistd.h |
| +++ b/include/asm-generic/unistd.h |
| @@ -218,7 +218,7 @@ __SC_COMP(__NR_pwritev, sys_pwritev, com |
| |
| /* fs/sendfile.c */ |
| #define __NR3264_sendfile 71 |
| -__SC_3264(__NR3264_sendfile, sys_sendfile64, sys_sendfile) |
| +__SYSCALL(__NR3264_sendfile, sys_sendfile64) |
| |
| /* fs/select.c */ |
| #define __NR_pselect6 72 |