fs/compat: fix parameter handling for compat readv/writev syscalls
authorHeiko Carstens <[email protected]>
Wed, 29 Jan 2014 22:05:44 +0000 (14:05 -0800)
committerLinus Torvalds <[email protected]>
Thu, 30 Jan 2014 00:22:39 +0000 (16:22 -0800)
commitdfd948e32af2e7b28bcd7a490c0a30d4b8df2a36
tree41f14ee51b5d57387a425b241c67f7d33446076b
parent4a404bea941ac3c62e11b88c9d16197334eee2f1
fs/compat: fix parameter handling for compat readv/writev syscalls

We got a report that the pwritev syscall does not work correctly in
compat mode on s390.

It turned out that with commit 72ec35163f9f ("switch compat readv/writev
variants to COMPAT_SYSCALL_DEFINE") we lost the zero extension of a
couple of syscall parameters because the some parameter types haven't
been converted from unsigned long to compat_ulong_t.

This is needed for architectures where the ABI requires that the caller
of a function performed zero and/or sign extension to 64 bit of all
parameters.

Signed-off-by: Heiko Carstens <[email protected]>
Cc: Al Viro <[email protected]>
Cc: Ingo Molnar <[email protected]>
Cc: "H. Peter Anvin" <[email protected]>
Cc: Hendrik Brueckner <[email protected]>
Cc: Martin Schwidefsky <[email protected]>
Cc: <[email protected]> [v3.10+]
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
fs/read_write.c
include/linux/compat.h