@@ -36,6 +36,8 @@ struct rt_sigcontext {
unsigned long reserved1[8];
};
+#define SIGFRAME_MAX_OFFSET 8
+
#include "sigframe.h"
struct rt_sigframe {
@@ -140,7 +142,6 @@ struct rt_sigframe {
#define SIGFRAME_OFFSET 8
-
int restore_gpregs(struct rt_sigframe *f, UserX86RegsEntry *r);
int restore_nonsigframe_gpregs(UserX86RegsEntry *r);
@@ -10,8 +10,13 @@
struct rt_sigframe;
+#ifndef SIGFRAME_MAX_OFFSET
+#define SIGFRAME_MAX_OFFSET SIGFRAME_OFFSET
+#endif
+
/* sigframe should be aligned on 64 byte for x86 and 8 bytes for arm */
-#define RESTORE_STACK_SIGFRAME ALIGN(sizeof(struct rt_sigframe) + SIGFRAME_OFFSET, 64)
+#define RESTORE_STACK_SIGFRAME \
+ ALIGN(sizeof(struct rt_sigframe) + SIGFRAME_MAX_OFFSET, 64)
#ifndef __ARCH_SI_PREAMBLE_SIZE
#define __ARCH_SI_PREAMBLE_SIZE (3 * sizeof(int))
For x86 there are different SIGFRAME_OFFSET for native and compatible tasks. In the next patches I will make SIGFRAME_OFFSET(rt_sigframe) macro (depending on rt_sigframe). As RESTORE_STACK_SIGFRAME used only for allocation sizes, I don't want to introduce RESTORE_STACK_SIGFRAME(rt_sigframe) dependency on rt_sigframe type. Let's just use for this porpose max sigframe offset of native/compat tasks. Cc: Cyrill Gorcunov <gorcunov@openvz.org> Signed-off-by: Dmitry Safonov <dsafonov@virtuozzo.com> --- criu/arch/x86/include/asm/restorer.h | 3 ++- criu/include/sigframe.h | 7 ++++++- 2 files changed, 8 insertions(+), 2 deletions(-)