about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorRich Felker <dalias@aerifal.cx>2014-05-30 01:12:42 -0400
committerRich Felker <dalias@aerifal.cx>2014-05-30 01:12:42 -0400
commit55f45bc7222ec50b72aa8411c61e30184d0ade23 (patch)
tree05a4769f5104721323c58363aa746367416f5875 /src
parentdd5f50da6f6c3df5647e922e47f8568a8896a752 (diff)
downloadmusl-55f45bc7222ec50b72aa8411c61e30184d0ade23.tar.gz
musl-55f45bc7222ec50b72aa8411c61e30184d0ade23.tar.xz
musl-55f45bc7222ec50b72aa8411c61e30184d0ade23.zip
fix sendfile syscall to use 64-bit off_t
somehow the remapping of this syscall to the 64-bit version was
overlooked. the issue was found, and patch provided, by Stefan
Kristiansson. presumably the reason this bug was not caught earlier is
that the syscall takes a pointer to off_t rather than a value, so on
little-endian systems, everything appears to work as long as the
offset value fits in the low 31 bits. on big-endian systems, though,
sendfile was presumably completely non-functional.
Diffstat (limited to 'src')
-rw-r--r--src/internal/syscall.h5
1 files changed, 5 insertions, 0 deletions
diff --git a/src/internal/syscall.h b/src/internal/syscall.h
index 08a85784..3f4490e1 100644
--- a/src/internal/syscall.h
+++ b/src/internal/syscall.h
@@ -163,6 +163,11 @@ long __syscall_ret(unsigned long), __syscall(syscall_arg_t, ...),
 #define SYS_fadvise SYS_fadvise64_64
 #endif
 
+#ifdef SYS_sendfile64
+#undef SYS_sendfile
+#define SYS_sendfile SYS_sendfile64
+#endif
+
 /* socketcall calls */
 
 #define __SC_socket      1