[CRIU] [PATCH] restore/x86: restore_gpregs() needs to initialize ->ss as well

Andrey Wagin avagin at gmail.com
Thu Mar 19 13:26:55 PDT 2015


2015-03-19 19:14 GMT+03:00 Oleg Nesterov <oleg at redhat.com>:
> Before the recent "x86_64,signal: Fix SS handling for signals delivered
> to 64-bit programs" kernel patch, sigreturn paths forgot to restore ->ss
> after return from the signal handler.
>
> Now that the kernel was fixed, restore_gpregs() has to initialize ->ss
> too, it is no longer ignored.
>
> Note: this is the minimal fix. In the long term we probably should not
> dump/restore the segment registers at all. We can use sigcontext filled
> by the target kernel and modify the general-purpose regs.
>
> Reported-and-tested-by: Andrey Wagin <avagin at gmail.com>
> Signed-off-by: Oleg Nesterov <oleg at redhat.com>

Acked-by: Andrew Vagin <avagin at openvz.org>

Thanks!

> ---
>  arch/x86/crtools.c              |    1 +
>  arch/x86/include/asm/restorer.h |    2 +-
>  2 files changed, 2 insertions(+), 1 deletions(-)
>
> diff --git a/arch/x86/crtools.c b/arch/x86/crtools.c
> index cbbcb9d..29e18d6 100644
> --- a/arch/x86/crtools.c
> +++ b/arch/x86/crtools.c
> @@ -475,6 +475,7 @@ int restore_gpregs(struct rt_sigframe *f, UserX86RegsEntry *r)
>         CPREG2(rip, ip);
>         CPREG2(eflags, flags);
>         CPREG1(cs);
> +       CPREG1(ss);
>         CPREG1(gs);
>         CPREG1(fs);
>
> diff --git a/arch/x86/include/asm/restorer.h b/arch/x86/include/asm/restorer.h
> index 70199fb..c04fb94 100644
> --- a/arch/x86/include/asm/restorer.h
> +++ b/arch/x86/include/asm/restorer.h
> @@ -53,7 +53,7 @@ struct rt_sigcontext {
>         unsigned short                  cs;
>         unsigned short                  gs;
>         unsigned short                  fs;
> -       unsigned short                  __pad0;
> +       unsigned short                  ss;
>         unsigned long                   err;
>         unsigned long                   trapno;
>         unsigned long                   oldmask;
> --
> 1.5.5.1
>
>


More information about the CRIU mailing list