[CRIU] [PATCH 1/2] restore: fix restoring signal blocking mask on arm
Andrew Vagin
avagin at parallels.com
Thu Apr 25 03:36:24 EDT 2013
On Thu, Apr 25, 2013 at 10:30:53AM +0400, Alexander Kartashov wrote:
> Thank you, Andrew. However, this hunk doesn't apply:
Sorry, it's my mistake. Could you try out the attached patch.
>
> On 04/24/2013 08:09 PM, Andrey Vagin wrote:
> >diff --git a/pie/restorer.c b/pie/restorer.c
> >index 2a30b29..8ed94cc 100644
> >--- a/pie/restorer.c
> >+++ b/pie/restorer.c
> >@@ -219,7 +219,7 @@ static int restore_thread_common(struct rt_sigframe *sigframe,
> > }
> > if (args->has_blk_sigset)
> >- RT_SIGFRAME_UC(sigframe).uc_sigmask.sig = args->blk_sigset;
> >+ RT_SIGFRAME_UC(sigframe).uc_sigmask = args->blk_sigset;
> > restore_sched_info(&args->sp);
> > if (restore_fpu(sigframe, args))
>
> since the removed line is
>
> RT_SIGFRAME_UC(sigframe).uc_sigmask.sig[0] = args->blk_sigset;
>
> Moreover, the replaced line can't be compiled since it's impossible to
> assign an u64 to a struct. So, I think, this hunk should look like this:
>
> @@ -219,7 +220,7 @@ static int restore_thread_common(struct
> rt_sigframe *sigframe,
> }
>
> if (args->has_blk_sigset)
> - RT_SIGFRAME_UC(sigframe).uc_sigmask.sig[0] =
> args->blk_sigset;
> + builtin_memcpy(&RT_SIGFRAME_UC(sigframe).uc_sigmask,
> &args->blk_sigset, sizeof(k_rtsigset_t));
>
> restore_sched_info(&args->sp);
> if (restore_fpu(sigframe, args))
>
> Alternatively, we may force k_rtsigset_t be u64 on x86 and ARM.
>
> --
> Sincerely yours,
> Alexander Kartashov
>
> Intern
> Core team
>
> www.parallels.com
>
> Skype: aleksandr.kartashov
> Email: alekskartashov at parallels.com
>
More information about the CRIU
mailing list