Message ID | mvmpp8gg7d4.fsf@hawking.suse.de |
---|---|
State | New |
Headers | show |
On 10 March 2015 at 16:11, Andreas Schwab <schwab@suse.de> wrote: > The second and fourth argument are in/out parameters, store them back > after the syscall. Also, the fourth argument was mishandled, and EFAULT > handling was missing. > > Signed-off-by: Andreas Schwab <schwab@suse.de> Is this a v2 of the patch for this you sent a while back? What's changed? -- PMM
Peter Maydell <peter.maydell@linaro.org> writes:
> What's changed?
Only the title.
Andreas.
On 10 March 2015 at 16:23, Andreas Schwab <schwab@suse.de> wrote: > Peter Maydell <peter.maydell@linaro.org> writes: > >> What's changed? > > Only the title. Please don't drop all the reviewed-by: you got on the first version, then! -- PMM
Am 10.03.2015 um 17:27 schrieb Peter Maydell: > On 10 March 2015 at 16:23, Andreas Schwab <schwab@suse.de> wrote: >> Peter Maydell <peter.maydell@linaro.org> writes: >> >>> What's changed? >> >> Only the title. > > Please don't drop all the reviewed-by: you got on the first > version, then! i.e., Reviewed-by: Peter Maydell <peter.maydell@linaro.org> Ping for -rc1. Andreas F.
diff --git a/linux-user/syscall.c b/linux-user/syscall.c index 5720195..4bd9543 100644 --- a/linux-user/syscall.c +++ b/linux-user/syscall.c @@ -9351,15 +9351,29 @@ abi_long do_syscall(void *cpu_env, int num, abi_long arg1, { loff_t loff_in, loff_out; loff_t *ploff_in = NULL, *ploff_out = NULL; - if(arg2) { - get_user_u64(loff_in, arg2); + if (arg2) { + if (get_user_u64(loff_in, arg2)) { + goto efault; + } ploff_in = &loff_in; } - if(arg4) { - get_user_u64(loff_out, arg2); + if (arg4) { + if (get_user_u64(loff_out, arg4)) { + goto efault; + } ploff_out = &loff_out; } ret = get_errno(splice(arg1, ploff_in, arg3, ploff_out, arg5, arg6)); + if (arg2) { + if (put_user_u64(loff_in, arg2)) { + goto efault; + } + } + if (arg4) { + if (put_user_u64(loff_out, arg4)) { + goto efault; + } + } } break; #endif
The second and fourth argument are in/out parameters, store them back after the syscall. Also, the fourth argument was mishandled, and EFAULT handling was missing. Signed-off-by: Andreas Schwab <schwab@suse.de> --- linux-user/syscall.c | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-)