From: "Andreas Färber" <afaerber@suse.de>
To: Petar Jovanovic <petar.jovanovic@rt-rk.com>, qemu-devel@nongnu.org
Cc: riku.voipio@linaro.org, petar.jovanovic@imgtec.com
Subject: Re: [Qemu-devel] [PATCH] linux-user: fix getrusage and wait4 failures with invalid rusage struct
Date: Mon, 05 May 2014 11:55:42 +0200 [thread overview]
Message-ID: <5367601E.7030807@suse.de> (raw)
In-Reply-To: <1396977870-108623-1-git-send-email-petar.jovanovic@rt-rk.com>
Am 08.04.2014 19:24, schrieb Petar Jovanovic:
> From: Petar Jovanovic <petar.jovanovic@imgtec.com>
>
> Implementations of system calls getrusage and wait4 have not previously
> handled correctly cases when incorrect address of struct rusage is
> passed.
> This change makes sure return values are correctly set for these cases.
>
> Signed-off-by: Petar Jovanovic <petar.jovanovic@imgtec.com>
> ---
> linux-user/syscall.c | 11 ++++++++---
> 1 file changed, 8 insertions(+), 3 deletions(-)
>
> diff --git a/linux-user/syscall.c b/linux-user/syscall.c
> index 9864813..fc52f0b 100644
> --- a/linux-user/syscall.c
> +++ b/linux-user/syscall.c
> @@ -6309,7 +6309,7 @@ abi_long do_syscall(void *cpu_env, int num, abi_long arg1,
> struct rusage rusage;
> ret = get_errno(getrusage(arg1, &rusage));
> if (!is_error(ret)) {
> - host_to_target_rusage(arg2, &rusage);
> + ret = host_to_target_rusage(arg2, &rusage);
> }
> }
> break;
Why do you always set ret here ...
> @@ -6974,6 +6974,7 @@ abi_long do_syscall(void *cpu_env, int num, abi_long arg1,
> abi_long status_ptr = arg2;
> struct rusage rusage, *rusage_ptr;
> abi_ulong target_rusage = arg4;
> + abi_long rusage_err;
> if (target_rusage)
> rusage_ptr = &rusage;
> else
> @@ -6985,8 +6986,12 @@ abi_long do_syscall(void *cpu_env, int num, abi_long arg1,
> if (put_user_s32(status, status_ptr))
> goto efault;
> }
> - if (target_rusage)
> - host_to_target_rusage(target_rusage, &rusage);
> + if (target_rusage) {
> + rusage_err = host_to_target_rusage(target_rusage, &rusage);
> + if (rusage_err) {
> + ret = rusage_err;
> + }
> + }
> }
> }
> break;
... but only on error here? Isn't obvious from the commit message.
Regards,
Andreas
--
SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 Nürnberg, Germany
GF: Jeff Hawn, Jennifer Guild, Felix Imendörffer; HRB 16746 AG Nürnberg
next prev parent reply other threads:[~2014-05-05 9:55 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-04-08 17:24 [Qemu-devel] [PATCH] linux-user: fix getrusage and wait4 failures with invalid rusage struct Petar Jovanovic
2014-05-05 9:02 ` Petar Jovanovic
2014-05-05 12:27 ` Riku Voipio
2014-05-05 12:29 ` Peter Maydell
2014-05-05 9:55 ` Andreas Färber [this message]
2014-05-05 10:12 ` Petar Jovanovic
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=5367601E.7030807@suse.de \
--to=afaerber@suse.de \
--cc=petar.jovanovic@imgtec.com \
--cc=petar.jovanovic@rt-rk.com \
--cc=qemu-devel@nongnu.org \
--cc=riku.voipio@linaro.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).