mirror of
https://github.com/checkpoint-restore/criu
synced 2025-08-29 05:18:00 +00:00
cr-restore: align the stack on 8-byte boundary
The section 5.2.1.2 of the AAPCS says that the stack must be 8-byte aligned and this rule is broken when the thread restore_task_with_children() is forked by the function fork_with_pid() since the variable ca and its field stack are likely to be 4-byte aligned. This patch forces 8-byte alingment of the field cr_clone_arg::stack. This made the following tests pass on ARM: * static/shm, * static/ipc_namespace. Particulary the unaligned stack results in incorrect passing of the 64-bit argument to the function snprintf() in the function sysctl_write_u64(). Signed-off-by: Alexander Kartashov <alekskartashov@parallels.com> Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
This commit is contained in:
parent
5d7cfa8fcf
commit
a27f0e5cb0
@ -777,7 +777,7 @@ out:
|
||||
|
||||
/* All arguments should be above stack, because it grows down */
|
||||
struct cr_clone_arg {
|
||||
char stack[PAGE_SIZE];
|
||||
char stack[PAGE_SIZE] __attribute__((aligned (8)));
|
||||
char stack_ptr[0];
|
||||
struct pstree_item *item;
|
||||
unsigned long clone_flags;
|
||||
|
Loading…
x
Reference in New Issue
Block a user