Got it Serge E. Hallyn wrote: > This patch makes it possible to compile with CONFIG_COMPAT=y. It > also refuses checkpoint of a 31-bit task, or restart from a 31-bit > task. That's just a temporary restriction as there won't be time > to get 31-bit support for v19. > > Signed-off-by: Serge E. Hallyn <serue@xxxxxxxxxx> > --- > arch/s390/kernel/checkpoint.c | 9 +++++++++ > arch/s390/kernel/compat_wrapper.S | 12 +++++++----- > arch/s390/kernel/process.c | 12 ++++++++++++ > arch/s390/kernel/syscalls.S | 2 +- > 4 files changed, 29 insertions(+), 6 deletions(-) > > diff --git a/arch/s390/kernel/checkpoint.c b/arch/s390/kernel/checkpoint.c > index 40dd417..8ec12c6 100644 > --- a/arch/s390/kernel/checkpoint.c > +++ b/arch/s390/kernel/checkpoint.c > @@ -83,6 +83,11 @@ static void s390_mm(int op, struct ckpt_hdr_mm_context *h, > > int checkpoint_thread(struct ckpt_ctx *ctx, struct task_struct *t) > { > + /* we will eventually support this, as we do on x86-64 */ > + if (test_tsk_thread_flag(t, TIF_31BIT)) { > + ckpt_err(ctx, -EINVAL, "checkpoint of 31-bit task\n"); > + return -EINVAL; > + } > return 0; > } > > @@ -143,6 +148,10 @@ int checkpoint_mm_context(struct ckpt_ctx *ctx, struct mm_struct *mm) > > int restore_thread(struct ckpt_ctx *ctx) > { > + if (test_tsk_thread_flag(current, TIF_31BIT)) { > + ckpt_err(ctx, -EINVAL, "restart from 31-bit task\n"); > + return -EINVAL; > + } > return 0; > } > > diff --git a/arch/s390/kernel/compat_wrapper.S b/arch/s390/kernel/compat_wrapper.S > index 8d0ba6a..bb38630 100644 > --- a/arch/s390/kernel/compat_wrapper.S > +++ b/arch/s390/kernel/compat_wrapper.S > @@ -1869,11 +1869,13 @@ sys_checkpoint_wrapper: > lgfr %r2,%r2 # pid_t > lgfr %r3,%r3 # int > llgfr %r4,%r4 # unsigned long > - jg compat_sys_checkpoint > + lgfr %r5,%r5 # int > + jg sys_checkpoint > > - .globl sys_restore_wrapper > -sys_restore_wrapper: > - lgfr %r2,%r2 # int > + .globl sys_restart_wrapper > +sys_restart_wrapper: > + lgfr %r2,%r2 # pid_t > lgfr %r3,%r3 # int > llgfr %r4,%r4 # unsigned long > - jg compat_sys_restore > + lgfr %r5,%r5 # int > + jg sys_restart > diff --git a/arch/s390/kernel/process.c b/arch/s390/kernel/process.c > index a7cb6bc..61b469f 100644 > --- a/arch/s390/kernel/process.c > +++ b/arch/s390/kernel/process.c > @@ -258,6 +258,18 @@ SYSCALL_DEFINE4(restart, pid_t, pid, int, fd, unsigned long, flags, > { > return do_sys_restart(pid, fd, flags, logfd); > } > +#else > +SYSCALL_DEFINE4(checkpoint, pid_t, pid, int, fd, unsigned long, flags, > + int, logfd) > +{ > + return -ENOSYS; > +} > + > +SYSCALL_DEFINE4(restart, pid_t, pid, int, fd, unsigned long, flags, > + int, logfd) > +{ > + return -ENOSYS; > +} > #endif > > SYSCALL_DEFINE4(eclone, unsigned int, flags_low, struct clone_args __user *, > diff --git a/arch/s390/kernel/syscalls.S b/arch/s390/kernel/syscalls.S > index ff222e1..a29f9e1 100644 > --- a/arch/s390/kernel/syscalls.S > +++ b/arch/s390/kernel/syscalls.S > @@ -342,4 +342,4 @@ SYSCALL(sys_rt_tgsigqueueinfo,sys_rt_tgsigqueueinfo,compat_sys_rt_tgsigqueueinfo > SYSCALL(sys_perf_event_open,sys_perf_event_open,sys_perf_event_open_wrapper) > SYSCALL(sys_eclone,sys_eclone,sys_eclone_wrapper) > SYSCALL(sys_checkpoint,sys_checkpoint,sys_checkpoint_wrapper) > -SYSCALL(sys_restart,sys_restart,sys_restore_wrapper) > +SYSCALL(sys_restart,sys_restart,sys_restart_wrapper) _______________________________________________ Containers mailing list Containers@xxxxxxxxxxxxxxxxxxxxxxxxxx https://lists.linux-foundation.org/mailman/listinfo/containers