Re: [PATCH] Fix get ERESTARTSYS with m32 in x86_64 when debug by GDB

"H. Peter Anvin" <[email protected]>
Newsgroups gmane.comp.gdb.devel,gmane.linux.kernel
Message-ID <[email protected]>
On 04/30/2014 09:35 AM, Hui Zhu wrote:
> 
> I sorry that previous patch has some format issue, post a new one.
> 
> Signed-off-by: Hui Zhu <[email protected]>
> ---
> --- a/arch/x86/kernel/ptrace.c
> +++ b/arch/x86/kernel/ptrace.c
> @@ -452,6 +452,23 @@ static int putreg(struct task_struct *ch
>          if (child->thread.gs != value)
>              return do_arch_prctl(child, ARCH_SET_GS, value);
>          return 0;
> +    case offsetof(struct user_regs_struct, orig_ax):
> +        /*
> +         * A 64-bit debugger setting orig_ax of a 32-bit inferior
> +         * means to restore the state of the task restarting a
> +         * 32-bit syscall.
> +         * Make sure we interpret the -ERESTART* codes correctly
> +         * in case the task is not actually still sitting at the
> +         * exit from a 32-bit syscall with TS_COMPAT still set.
> +         */
> +        if (test_ti_thread_flag(task_thread_info(child), TIF_IA32)) {
> +            struct pt_regs *regs = task_pt_regs(child);
> +            regs->orig_ax = value;
> +            if (syscall_get_nr(child, regs) >= 0)
> +                task_thread_info(child)->status |= TS_COMPAT;
> +            return 0;
> +        }
> +        break;
>  #endif
>      }

You still seems to have botched whitespace, and no patch description in
the same email so it can be automated.

	-hpa
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.