All three applied, thanks ! Oren. Nathan Lynch wrote: > This reverts commit 64dab5da66f4fe212b43272ffa5e7a3403a64deb. > > This way of handling syscall restart is incorrect -- it occurs too > early in the restart process, and restore_retval is doing the wrong > thing for powerpc anyway (fixed in a later patch). While the reverted > patch managed to address the case of system calls with restart blocks, > other restartable system calls behave incorrectly after restart. > --- > arch/powerpc/kernel/checkpoint.c | 25 ------------------------- > 1 files changed, 0 insertions(+), 25 deletions(-) > > diff --git a/arch/powerpc/kernel/checkpoint.c b/arch/powerpc/kernel/checkpoint.c > index cd384df..2634011 100644 > --- a/arch/powerpc/kernel/checkpoint.c > +++ b/arch/powerpc/kernel/checkpoint.c > @@ -307,31 +307,6 @@ static int restore_gprs(const struct ckpt_hdr_cpu *cpu_hdr, > regs->orig_gpr3 = cpu_hdr->orig_gpr3; > > regs->msr = sanitize_msr(regs->msr); > - > - /* The normal servicing of the freezer's fake signal is > - * short-circuited by checkpoint/restart. See > - * arch/powerpc/kernel/signal.c::do_signal_pending(). > - */ > - if (TRAP(regs) != 0x0C00) > - goto out; > - if (!(regs->ccr & 0x10000000)) > - goto out; > - > - switch (regs->gpr[3]) { > - case ERESTARTNOHAND: > - case ERESTARTSYS: > - case ERESTARTNOINTR: > - regs->gpr[3] = regs->orig_gpr3; > - break; > - case ERESTART_RESTARTBLOCK: > - regs->gpr[0] = __NR_restart_syscall; > - break; > - default: > - goto out; > - } > - > - regs->nip -= 4; > - regs->result = 0; > out: > return rc; > } _______________________________________________ Containers mailing list Containers@xxxxxxxxxxxxxxxxxxxxxxxxxx https://lists.linux-foundation.org/mailman/listinfo/containers