From: "Serge E. Hallyn" <serue-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
To: Oren Laadan <orenl-eQaUEPhvms7ENvBUuze7eA@public.gmane.org>
Cc: Linux Containers <containers-qjLDD68F18O7TbgM5vRIOg@public.gmane.org>
Subject: [PATCH linux-cr] x86-32 and ia32 eclone, checkpoint, restart fixes
Date: Fri, 22 Jan 2010 18:34:47 -0600 [thread overview]
Message-ID: <20100123003447.GA5285@us.ibm.com> (raw)
Eclone on x86-32 should use esi for 4th arg (upids), not
edi, which is 5th arg. This will require a corresponding fix
to user-cr, but (a) it's correct and (b) it's required so that
IA32_ARG_FIXUP can put upids in the right register for
process_64.c:sys_eclone(). IA32_ARG_FIXUP will (of course) put
edi into r8, the 5th arg.
Add the ptregs_syscall stubs for eclone, checkpoint, and restart
for 32-bit api on x86-64.
With this patch (and proper user-cr), checkpoint and eclone work
on x86-32, x86-64, and in 32-bit mode on x86-64. (restart has not
yet been tested)
Signed-off-by: Serge E. Hallyn <serue-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
---
arch/x86/ia32/ia32entry.S | 11 +++++++++++
arch/x86/kernel/process_32.c | 2 +-
2 files changed, 12 insertions(+), 1 deletions(-)
diff --git a/arch/x86/ia32/ia32entry.S b/arch/x86/ia32/ia32entry.S
index 581b056..67bf4dc 100644
--- a/arch/x86/ia32/ia32entry.S
+++ b/arch/x86/ia32/ia32entry.S
@@ -477,6 +477,14 @@ quiet_ni_syscall:
PTREGSCALL stub32_clone, sys32_clone, %rdx
PTREGSCALL stub32_vfork, sys_vfork, %rdi
PTREGSCALL stub32_iopl, sys_iopl, %rsi
+ PTREGSCALL stub32_eclone, sys_eclone, %r8
+#ifdef CONFIG_CHECKPOINT
+ PTREGSCALL stub32_checkpoint, sys_checkpoint, %r8
+ PTREGSCALL stub32_restart, sys_restart, %r8
+#else
+ PTREGSCALL stub32_checkpoint, sys_ni_syscall, %r8
+ PTREGSCALL stub32_restart, sys_ni_syscall, %r8
+#endif
ENTRY(ia32_ptregs_common)
popq %r11
@@ -841,4 +849,7 @@ ia32_sys_call_table:
.quad compat_sys_pwritev
.quad compat_sys_rt_tgsigqueueinfo /* 335 */
.quad sys_perf_event_open
+ .quad stub32_eclone
+ .quad stub32_checkpoint
+ .quad stub32_restart
ia32_syscall_end:
diff --git a/arch/x86/kernel/process_32.c b/arch/x86/kernel/process_32.c
index ed8b53c..2416b62 100644
--- a/arch/x86/kernel/process_32.c
+++ b/arch/x86/kernel/process_32.c
@@ -455,7 +455,7 @@ int sys_eclone(struct pt_regs *regs)
flags_low = regs->bx;
uca = (struct clone_args __user *)regs->cx;
args_size = regs->dx;
- pids = (pid_t __user *)regs->di;
+ pids = (pid_t __user *)regs->si;
return do_eclone_common(regs, flags_low, uca, args_size, pids);
}
--
1.6.0.6
next reply other threads:[~2010-01-23 0:34 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-01-23 0:34 Serge E. Hallyn [this message]
[not found] ` <20100123003447.GA5285-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
2010-01-23 2:38 ` [PATCH linux-cr] x86-32 and ia32 eclone, checkpoint, restart fixes Sukadev Bhattiprolu
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20100123003447.GA5285@us.ibm.com \
--to=serue-r/jw6+rmf7hqt0dzr+alfa@public.gmane.org \
--cc=containers-qjLDD68F18O7TbgM5vRIOg@public.gmane.org \
--cc=orenl-eQaUEPhvms7ENvBUuze7eA@public.gmane.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.