[CRIU] [PATCH 1/2] restore: fix restoring signal blocking mask on arm
Alexander Kartashov
alekskartashov at parallels.com
Thu Apr 25 02:30:53 EDT 2013
Thank you, Andrew. However, this hunk doesn't apply:
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