[CRIU] Re: [PATCH] dump: Fix test for syscall return
Pavel Emelyanov
xemul at parallels.com
Fri Feb 10 09:53:57 EST 2012
On 02/10/2012 06:52 PM, Cyrill Gorcunov wrote:
> On Fri, Feb 10, 2012 at 06:44:54PM +0400, Pavel Emelyanov wrote:
>> Comment sucks.
>>
>
> Would such one be better?
>
> Cyrill
> ---
> From: Cyrill Gorcunov <gorcunov at openvz.org>
> Date: Fri, 10 Feb 2012 18:34:09 +0400
> Subject: [PATCH] dump: Fix test for syscall return
>
> Only the low 32 bits of orig_ax are meaningful
> for obtaining syscall number so we need to test
> if sign extended bits are greater than 0.
>
> Reported-by: Kir Kolyshkin <kir at openvz.org>
> Signed-off-by: Cyrill Gorcunov <gorcunov at openvz.org>
Acked-by: Pavel Emelyanov <xemul at parallels.com>
> ---
> cr-dump.c | 6 +++---
> 1 files changed, 3 insertions(+), 3 deletions(-)
>
> diff --git a/cr-dump.c b/cr-dump.c
> index 97c0ca6..2251d96 100644
> --- a/cr-dump.c
> +++ b/cr-dump.c
> @@ -582,21 +582,21 @@ static int get_task_regs(pid_t pid, struct core_entry *core)
> jerr(ptrace(PTRACE_GETFPREGS, pid, NULL, &fpregs), err);
>
> /* Did we come from a system call? */
> - if (regs.orig_ax >= 0)
> + if ((int)regs.orig_ax >= 0) {
> /* Restart the system call */
> - switch (regs.ax) {
> + switch ((long)(int)regs.ax) {
> case -ERESTARTNOHAND:
> case -ERESTARTSYS:
> case -ERESTARTNOINTR:
> regs.ax = regs.orig_ax;
> regs.ip -= 2;
> break;
> -
> case -ERESTART_RESTARTBLOCK:
> regs.ax = __NR_restart_syscall;
> regs.ip -= 2;
> break;
> }
> + }
>
> assign_reg(core->arch.gpregs, regs, r15);
> assign_reg(core->arch.gpregs, regs, r14);
More information about the CRIU
mailing list