On s390, all tasks have READ_IMPLIES_EXEC set in current->personality, which causes the restart process to map things like the stack and heap as executable. During the restart process, remove this bit and restore the original personality afterwards. This seems a little ugly, but I don't know that there's a better place for it. Cc: orenl@xxxxxxxxxxxxxxx Signed-off-by: Dan Smith <danms@xxxxxxxxxx> --- checkpoint/restart.c | 7 +++++++ 1 files changed, 7 insertions(+), 0 deletions(-) diff --git a/checkpoint/restart.c b/checkpoint/restart.c index adebc1c..8958ec7 100644 --- a/checkpoint/restart.c +++ b/checkpoint/restart.c @@ -13,6 +13,7 @@ #include <linux/wait.h> #include <linux/file.h> #include <linux/magic.h> +#include <linux/personality.h> #include <linux/checkpoint.h> #include <linux/checkpoint_hdr.h> @@ -535,12 +536,18 @@ static int do_restart_root(struct cr_ctx *ctx, pid_t pid) int do_restart(struct cr_ctx *ctx, pid_t pid) { int ret; + unsigned int original_personality; + + original_personality = current->personality; + current->personality &= ~READ_IMPLIES_EXEC; if (ctx) ret = do_restart_root(ctx, pid); else ret = do_restart_task(pid); + current->personality = original_personality; + /* on success, adjust the return value if needed [TODO] */ return ret; } -- 1.6.1 _______________________________________________ Containers mailing list Containers@xxxxxxxxxxxxxxxxxxxxxxxxxx https://lists.linux-foundation.org/mailman/listinfo/containers