linux-user: Fix large seeks by 32 bit guest on 64 bit host
commit0c1592d93585ddce572a71a77534ca765c5f5d34
authorPeter Maydell <peter.maydell@linaro.org>
Tue, 22 Feb 2011 13:02:26 +0000 (22 13:02 +0000)
committerAurelien Jarno <aurelien@aurel32.net>
Sun, 6 Mar 2011 18:06:27 +0000 (6 19:06 +0100)
tree16845c422b05e50130611c851d4e7ac2f115b046
parent26883c699eee60c6f2dd63818a9dd470f2c567fc
linux-user: Fix large seeks by 32 bit guest on 64 bit host

When emulating a 32 bit Linux user-mode program on a 64 bit target
we implement the llseek syscall in terms of lseek. Correct a bug
which meant we were silently casting the result of host lseek()
to a 32 bit integer as it passed through get_errno() and thus
throwing away the top half.

We also don't try to store the result back to userspace unless
the seek succeeded; this matches the kernel behaviour.

Thanks to Eoghan Sherry for identifying the problem and suggesting
a solution.

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
linux-user/syscall.c