* [PATCH 1/9] Use CKPT_ARCH_X86_32 for all x86 CKPT_ARCH_IDs
[not found] ` <1265680806-13295-1-git-send-email-serue-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
@ 2010-02-09 1:59 ` serue-r/Jw6+rmf7HQT0dZR+AlfA
[not found] ` <1265680806-13295-2-git-send-email-serue-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
2010-02-09 1:59 ` [PATCH 2/9] restart only same bit-ness serue-r/Jw6+rmf7HQT0dZR+AlfA
` (8 subsequent siblings)
9 siblings, 1 reply; 20+ messages in thread
From: serue-r/Jw6+rmf7HQT0dZR+AlfA @ 2010-02-09 1:59 UTC (permalink / raw)
To: orenl-eQaUEPhvms7ENvBUuze7eA; +Cc: containers-qjLDD68F18O7TbgM5vRIOg
From: Serge E. Hallyn <serue-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
Sure we can rename it eventually, but I'm still just experimenting...
Signed-off-by: Serge E. Hallyn <serue-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
---
arch/x86/include/asm/checkpoint_hdr.h | 6 ------
1 files changed, 0 insertions(+), 6 deletions(-)
diff --git a/arch/x86/include/asm/checkpoint_hdr.h b/arch/x86/include/asm/checkpoint_hdr.h
index 535a9c6..a1edeb6 100644
--- a/arch/x86/include/asm/checkpoint_hdr.h
+++ b/arch/x86/include/asm/checkpoint_hdr.h
@@ -36,13 +36,7 @@
#include <asm/processor.h>
#endif
-#ifdef CONFIG_X86_64
-#define CKPT_ARCH_ID CKPT_ARCH_X86_64
-#endif
-
-#ifdef CONFIG_X86_32
#define CKPT_ARCH_ID CKPT_ARCH_X86_32
-#endif
/* arch dependent header types */
enum {
--
1.6.0.4
^ permalink raw reply related [flat|nested] 20+ messages in thread* [PATCH 2/9] restart only same bit-ness
[not found] ` <1265680806-13295-1-git-send-email-serue-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
2010-02-09 1:59 ` [PATCH 1/9] Use CKPT_ARCH_X86_32 for all x86 CKPT_ARCH_IDs serue-r/Jw6+rmf7HQT0dZR+AlfA
@ 2010-02-09 1:59 ` serue-r/Jw6+rmf7HQT0dZR+AlfA
2010-02-09 2:00 ` [PATCH 3/9] x86_64: keep __u32s in even groups serue-r/Jw6+rmf7HQT0dZR+AlfA
` (7 subsequent siblings)
9 siblings, 0 replies; 20+ messages in thread
From: serue-r/Jw6+rmf7HQT0dZR+AlfA @ 2010-02-09 1:59 UTC (permalink / raw)
To: orenl-eQaUEPhvms7ENvBUuze7eA; +Cc: containers-qjLDD68F18O7TbgM5vRIOg
From: Serge E. Hallyn <serue-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
Signed-off-by: Serge E. Hallyn <serue-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
---
arch/x86/kernel/checkpoint.c | 21 +++++++++++++++------
1 files changed, 15 insertions(+), 6 deletions(-)
diff --git a/arch/x86/kernel/checkpoint.c b/arch/x86/kernel/checkpoint.c
index 5952e27..b01a2fc 100644
--- a/arch/x86/kernel/checkpoint.c
+++ b/arch/x86/kernel/checkpoint.c
@@ -283,12 +283,21 @@ int restore_thread(struct ckpt_ctx *ctx)
load_TLS(thread, cpu);
put_cpu();
-#if defined(CONFIG_X86_64) && defined(CONFIG_COMPAT)
- if (h->thread_info_flags & _TIF_IA32)
- set_thread_flag(TIF_IA32);
- else
- clear_thread_flag(TIF_IA32);
-#endif
+ {
+ int pre, post;
+ /*
+ * Eventually we'd like to support mixed-bit restart, but for
+ * now don't pretend to.
+ */
+ pre = test_thread_flag(TIF_IA32);
+ post = h->thread_info_flags & _TIF_IA32;
+ if ((pre && !post) || (post && !pre)) {
+ ret = -EINVAL;
+ ckpt_err(ctx, ret, "%d-bit restarting %d-bit\n",
+ pre ? 32 : 64, post ? 32 : 64);
+ goto out;
+ }
+ }
/* TODO: restore TIF flags as necessary (e.g. TIF_NOTSC) */
--
1.6.0.4
^ permalink raw reply related [flat|nested] 20+ messages in thread* [PATCH 3/9] x86_64: keep __u32s in even groups
[not found] ` <1265680806-13295-1-git-send-email-serue-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
2010-02-09 1:59 ` [PATCH 1/9] Use CKPT_ARCH_X86_32 for all x86 CKPT_ARCH_IDs serue-r/Jw6+rmf7HQT0dZR+AlfA
2010-02-09 1:59 ` [PATCH 2/9] restart only same bit-ness serue-r/Jw6+rmf7HQT0dZR+AlfA
@ 2010-02-09 2:00 ` serue-r/Jw6+rmf7HQT0dZR+AlfA
2010-02-09 2:00 ` [PATCH 4/9] x86_32: add TIF_IA32 to thread flags serue-r/Jw6+rmf7HQT0dZR+AlfA
` (6 subsequent siblings)
9 siblings, 0 replies; 20+ messages in thread
From: serue-r/Jw6+rmf7HQT0dZR+AlfA @ 2010-02-09 2:00 UTC (permalink / raw)
To: orenl-eQaUEPhvms7ENvBUuze7eA; +Cc: containers-qjLDD68F18O7TbgM5vRIOg
From: Serge E. Hallyn <serue-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
Otherwise the struct will be different size on x86-32 and x86-64.
Signed-off-by: Serge E. Hallyn <serue-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
---
include/linux/checkpoint_hdr.h | 6 +++---
1 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/include/linux/checkpoint_hdr.h b/include/linux/checkpoint_hdr.h
index e591fd1..5a68178 100644
--- a/include/linux/checkpoint_hdr.h
+++ b/include/linux/checkpoint_hdr.h
@@ -345,6 +345,9 @@ struct ckpt_hdr_task {
__u32 exit_code;
__u32 exit_signal;
__u32 pdeath_signal;
+ __u32 compat_robust_futex_head_len;
+ __u32 compat_robust_futex_list; /* a compat __user ptr */
+ __u32 robust_futex_head_len;
#ifdef CONFIG_AUDITSYSCALL
/* would audit want to track the checkpointed ids,
@@ -354,9 +357,6 @@ struct ckpt_hdr_task {
__u64 set_child_tid;
__u64 clear_child_tid;
- __u32 compat_robust_futex_head_len;
- __u32 compat_robust_futex_list; /* a compat __user ptr */
- __u32 robust_futex_head_len;
__u64 robust_futex_list; /* a __user ptr */
} __attribute__((aligned(8)));
--
1.6.0.4
^ permalink raw reply related [flat|nested] 20+ messages in thread* [PATCH 4/9] x86_32: add TIF_IA32 to thread flags
[not found] ` <1265680806-13295-1-git-send-email-serue-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
` (2 preceding siblings ...)
2010-02-09 2:00 ` [PATCH 3/9] x86_64: keep __u32s in even groups serue-r/Jw6+rmf7HQT0dZR+AlfA
@ 2010-02-09 2:00 ` serue-r/Jw6+rmf7HQT0dZR+AlfA
2010-02-09 2:00 ` [PATCH 5/9] use ckpt_err for architecture mismatch errors serue-r/Jw6+rmf7HQT0dZR+AlfA
` (5 subsequent siblings)
9 siblings, 0 replies; 20+ messages in thread
From: serue-r/Jw6+rmf7HQT0dZR+AlfA @ 2010-02-09 2:00 UTC (permalink / raw)
To: orenl-eQaUEPhvms7ENvBUuze7eA; +Cc: containers-qjLDD68F18O7TbgM5vRIOg
From: Serge E. Hallyn <serue-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
X86-32 does not set TIF_IA32 on tasks. But since we now use the
same CKPT_ARCH_ID for X86-32 and X86-64, this means that when we
restart a task from X86-32 on X86-64, we can't tell that it should
have been 32-bit.
So always set TIF_IA32 in thread_info_flags for a task when
checkpointing on X86-32.
Likewise, at restart, when comparing the current task (the running
restart binary) to the checkpointed one (to be restarted) to make
sure both are either 32-bit or 64-bit, we obviously can't count
on TIF_IA32 being set in current_flags on X86-32.
Signed-off-by: Serge E. Hallyn <serue-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
---
arch/x86/kernel/checkpoint.c | 7 +++++++
1 files changed, 7 insertions(+), 0 deletions(-)
diff --git a/arch/x86/kernel/checkpoint.c b/arch/x86/kernel/checkpoint.c
index b01a2fc..961b131 100644
--- a/arch/x86/kernel/checkpoint.c
+++ b/arch/x86/kernel/checkpoint.c
@@ -103,6 +103,9 @@ int checkpoint_thread(struct ckpt_ctx *ctx, struct task_struct *t)
h->thread_info_flags =
task_thread_info(t)->flags & ~CKPT_X86_TIF_UNSUPPORTED;
+#ifndef CONFIG_X86_64
+ h->thread_info_flags |= _TIF_IA32;
+#endif
h->gdt_entry_tls_entries = GDT_ENTRY_TLS_ENTRIES;
h->sizeof_tls_array = tls_size;
@@ -289,7 +292,11 @@ int restore_thread(struct ckpt_ctx *ctx)
* Eventually we'd like to support mixed-bit restart, but for
* now don't pretend to.
*/
+#ifndef CONFIG_X86_64
+ pre = 1;
+#else
pre = test_thread_flag(TIF_IA32);
+#endif
post = h->thread_info_flags & _TIF_IA32;
if ((pre && !post) || (post && !pre)) {
ret = -EINVAL;
--
1.6.0.4
^ permalink raw reply related [flat|nested] 20+ messages in thread* [PATCH 5/9] use ckpt_err for architecture mismatch errors
[not found] ` <1265680806-13295-1-git-send-email-serue-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
` (3 preceding siblings ...)
2010-02-09 2:00 ` [PATCH 4/9] x86_32: add TIF_IA32 to thread flags serue-r/Jw6+rmf7HQT0dZR+AlfA
@ 2010-02-09 2:00 ` serue-r/Jw6+rmf7HQT0dZR+AlfA
[not found] ` <1265680806-13295-6-git-send-email-serue-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
2010-02-09 2:00 ` [PATCH 6/9] Make AT_VECTOR_SIZE_ARCH 2 for x86-32 serue-r/Jw6+rmf7HQT0dZR+AlfA
` (4 subsequent siblings)
9 siblings, 1 reply; 20+ messages in thread
From: serue-r/Jw6+rmf7HQT0dZR+AlfA @ 2010-02-09 2:00 UTC (permalink / raw)
To: orenl-eQaUEPhvms7ENvBUuze7eA; +Cc: containers-qjLDD68F18O7TbgM5vRIOg
From: Serge E. Hallyn <serue-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
Signed-off-by: Serge E. Hallyn <serue-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
---
arch/x86/kernel/checkpoint.c | 4 +++-
checkpoint/restart.c | 18 ++++++++++++++----
2 files changed, 17 insertions(+), 5 deletions(-)
diff --git a/arch/x86/kernel/checkpoint.c b/arch/x86/kernel/checkpoint.c
index 961b131..7c73983 100644
--- a/arch/x86/kernel/checkpoint.c
+++ b/arch/x86/kernel/checkpoint.c
@@ -465,8 +465,10 @@ int restore_read_header_arch(struct ckpt_ctx *ctx)
/* verify FPU capabilities */
if (h->has_fxsr != cpu_has_fxsr ||
h->has_xsave != cpu_has_xsave ||
- h->xstate_size != xstate_size)
+ h->xstate_size != xstate_size) {
ret = -EINVAL;
+ ckpt_err(ctx, ret, "incompatible FPU capabilities");
+ }
ckpt_hdr_put(ctx, h);
return ret;
diff --git a/checkpoint/restart.c b/checkpoint/restart.c
index fcd07fa..9bb17fc 100644
--- a/checkpoint/restart.c
+++ b/checkpoint/restart.c
@@ -569,12 +569,14 @@ static int check_kernel_const(struct ckpt_const *h)
return -EINVAL;
if (h->uts_nodename_len != sizeof(uts->nodename))
return -EINVAL;
+#if 0
if (h->uts_release_len != sizeof(uts->release))
return -EINVAL;
if (h->uts_version_len != sizeof(uts->version))
return -EINVAL;
if (h->uts_machine_len != sizeof(uts->machine))
return -EINVAL;
+#endif
if (h->uts_domainname_len != sizeof(uts->domainname))
return -EINVAL;
/* rlimit */
@@ -601,20 +603,28 @@ static int restore_read_header(struct ckpt_ctx *ctx)
return PTR_ERR(h);
ret = -EINVAL;
- if (le16_to_cpu(h->arch_id) != CKPT_ARCH_ID)
+ if (le16_to_cpu(h->arch_id) != CKPT_ARCH_ID) {
+ ckpt_err(ctx, ret, "incompatible ARCH_ID");
goto out;
+ }
if (h->magic != CHECKPOINT_MAGIC_HEAD ||
h->rev != CHECKPOINT_VERSION ||
h->major != ((LINUX_VERSION_CODE >> 16) & 0xff) ||
h->minor != ((LINUX_VERSION_CODE >> 8) & 0xff) ||
- h->patch != ((LINUX_VERSION_CODE) & 0xff))
+ h->patch != ((LINUX_VERSION_CODE) & 0xff)) {
+ ckpt_err(ctx, ret, "incompatible VERSION");
goto out;
- if (h->uflags & ~CHECKPOINT_USER_FLAGS)
+ }
+ if (h->uflags & ~CHECKPOINT_USER_FLAGS) {
+ ckpt_err(ctx, ret, "bad restart user flags");
goto out;
+ }
ret = check_kernel_const(&h->constants);
- if (ret < 0)
+ if (ret < 0) {
+ ckpt_err(ctx, ret, "incompatible kernel constants");
goto out;
+ }
ret = -ENOMEM;
uts = kmalloc(sizeof(*uts), GFP_KERNEL);
--
1.6.0.4
^ permalink raw reply related [flat|nested] 20+ messages in thread* [PATCH 6/9] Make AT_VECTOR_SIZE_ARCH 2 for x86-32
[not found] ` <1265680806-13295-1-git-send-email-serue-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
` (4 preceding siblings ...)
2010-02-09 2:00 ` [PATCH 5/9] use ckpt_err for architecture mismatch errors serue-r/Jw6+rmf7HQT0dZR+AlfA
@ 2010-02-09 2:00 ` serue-r/Jw6+rmf7HQT0dZR+AlfA
[not found] ` <1265680806-13295-7-git-send-email-serue-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
2010-02-09 2:00 ` [PATCH 7/9] cr: checkpoint saved_auxv as u64s serue-r/Jw6+rmf7HQT0dZR+AlfA
` (3 subsequent siblings)
9 siblings, 1 reply; 20+ messages in thread
From: serue-r/Jw6+rmf7HQT0dZR+AlfA @ 2010-02-09 2:00 UTC (permalink / raw)
To: orenl-eQaUEPhvms7ENvBUuze7eA; +Cc: containers-qjLDD68F18O7TbgM5vRIOg
From: Serge E. Hallyn <serue-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
Both x86-32 and x86-64 with 32-bit compat use ARCH_DLINFO_IA32,
which defines two saved_auxv entries. But system.h only defines
AT_VECTOR_SIZE_ARCH as 2 for CONFIG_IA32_EMULATION, not for
CONFIG_X86_32. Fix that.
Signed-off-by: Serge E. Hallyn <serue-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
---
arch/x86/include/asm/system.h | 4 ++--
1 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/arch/x86/include/asm/system.h b/arch/x86/include/asm/system.h
index ecb544e..e04740f 100644
--- a/arch/x86/include/asm/system.h
+++ b/arch/x86/include/asm/system.h
@@ -11,9 +11,9 @@
#include <linux/irqflags.h>
/* entries in ARCH_DLINFO: */
-#ifdef CONFIG_IA32_EMULATION
+#if defined(CONFIG_IA32_EMULATION) || !defined(CONFIG_X86_64)
# define AT_VECTOR_SIZE_ARCH 2
-#else
+#else /* else it's non-compat x86-64 */
# define AT_VECTOR_SIZE_ARCH 1
#endif
--
1.6.0.4
^ permalink raw reply related [flat|nested] 20+ messages in thread* [PATCH 7/9] cr: checkpoint saved_auxv as u64s
[not found] ` <1265680806-13295-1-git-send-email-serue-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
` (5 preceding siblings ...)
2010-02-09 2:00 ` [PATCH 6/9] Make AT_VECTOR_SIZE_ARCH 2 for x86-32 serue-r/Jw6+rmf7HQT0dZR+AlfA
@ 2010-02-09 2:00 ` serue-r/Jw6+rmf7HQT0dZR+AlfA
[not found] ` <1265680806-13295-8-git-send-email-serue-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
2010-02-09 2:00 ` [PATCH 8/9] fix potential use-before-set ret in arch/x86/vdso/vma.c serue-r/Jw6+rmf7HQT0dZR+AlfA
` (2 subsequent siblings)
9 siblings, 1 reply; 20+ messages in thread
From: serue-r/Jw6+rmf7HQT0dZR+AlfA @ 2010-02-09 2:00 UTC (permalink / raw)
To: orenl-eQaUEPhvms7ENvBUuze7eA; +Cc: containers-qjLDD68F18O7TbgM5vRIOg
From: Serge E. Hallyn <serue-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
unsigned longs are not a good value to checkpoint between
x86-32 and x86-64 32-bit tasks :)
Signed-off-by: Serge E. Hallyn <serue-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
---
checkpoint/checkpoint.c | 5 +--
checkpoint/memory.c | 53 +++++++++++++++++++++++++++++++++++++--
checkpoint/restart.c | 6 ++--
include/linux/checkpoint_hdr.h | 2 +-
4 files changed, 56 insertions(+), 10 deletions(-)
diff --git a/checkpoint/checkpoint.c b/checkpoint/checkpoint.c
index b4e0021..b3c1c4f 100644
--- a/checkpoint/checkpoint.c
+++ b/checkpoint/checkpoint.c
@@ -103,13 +103,12 @@ int ckpt_write_string(struct ckpt_ctx *ctx, char *str, int len)
static void fill_kernel_const(struct ckpt_const *h)
{
struct task_struct *tsk;
- struct mm_struct *mm;
struct new_utsname *uts;
/* task */
h->task_comm_len = sizeof(tsk->comm);
- /* mm */
- h->mm_saved_auxv_len = sizeof(mm->saved_auxv);
+ /* mm->saved_auxv size */
+ h->at_vector_size = AT_VECTOR_SIZE;
/* signal */
h->signal_nsig = _NSIG;
/* uts */
diff --git a/checkpoint/memory.c b/checkpoint/memory.c
index d51f94b..5058ab3 100644
--- a/checkpoint/memory.c
+++ b/checkpoint/memory.c
@@ -661,6 +661,25 @@ static int checkpoint_vmas(struct ckpt_ctx *ctx, struct mm_struct *mm)
return ret < 0 ? ret : map_count;
}
+#define CKPT_AT_SZ (AT_VECTOR_SIZE * sizeof(u64))
+/*
+ * We always write saved_auxv out as an array of u64s, though it is
+ * an array of u32s on 32-bit arch.
+ */
+static int ckpt_write_auxv(struct ckpt_ctx *ctx, struct mm_struct *mm)
+{
+ int i, ret;
+ u64 *buf = kzalloc(CKPT_AT_SZ, GFP_KERNEL);
+
+ if (!buf)
+ return -ENOMEM;
+ for (i=0; i<AT_VECTOR_SIZE; i++)
+ buf[i] = mm->saved_auxv[i];
+ ret = ckpt_write_buffer(ctx, buf, CKPT_AT_SZ);
+ kfree(buf);
+ return ret;
+}
+
static int do_checkpoint_mm(struct ckpt_ctx *ctx, struct mm_struct *mm)
{
struct ckpt_hdr_mm *h;
@@ -718,7 +737,7 @@ static int do_checkpoint_mm(struct ckpt_ctx *ctx, struct mm_struct *mm)
if (ret < 0)
goto out;
- ret = ckpt_write_buffer(ctx, mm->saved_auxv, sizeof(mm->saved_auxv));
+ ret = ckpt_write_auxv(ctx, mm);
if (ret < 0)
return ret;
@@ -1205,6 +1224,32 @@ static int restore_vma(struct ckpt_ctx *ctx, struct mm_struct *mm)
return ret;
}
+static int ckpt_read_auxv(struct ckpt_ctx *ctx, struct mm_struct *mm)
+{
+ int i, ret;
+ u64 *buf = kmalloc(CKPT_AT_SZ, GFP_KERNEL);
+
+ if (!buf)
+ return -ENOMEM;
+ ret = _ckpt_read_buffer(ctx, buf, CKPT_AT_SZ);
+ if (ret < 0) {
+ kfree(buf);
+ return ret;
+ }
+
+ for (i=0; i<AT_VECTOR_SIZE; i++)
+ if (buf[i] > (u64) ULONG_MAX) {
+ kfree(buf);
+ return -E2BIG;
+ }
+
+ for (i=0; i<AT_VECTOR_SIZE; i++)
+ mm->saved_auxv[i] = buf[i];
+
+ kfree(buf);
+ return 0;
+}
+
static struct mm_struct *do_restore_mm(struct ckpt_ctx *ctx)
{
struct ckpt_hdr_mm *h;
@@ -1270,9 +1315,11 @@ static struct mm_struct *do_restore_mm(struct ckpt_ctx *ctx)
}
up_write(&mm->mmap_sem);
- ret = _ckpt_read_buffer(ctx, mm->saved_auxv, sizeof(mm->saved_auxv));
- if (ret < 0)
+ ret = ckpt_read_auxv(ctx, mm);
+ if (ret < 0) {
+ ckpt_err(ctx, ret, "Error restoring auxv\n");
goto out;
+ }
for (nr = h->map_count; nr; nr--) {
ret = restore_vma(ctx, mm);
diff --git a/checkpoint/restart.c b/checkpoint/restart.c
index 9bb17fc..a5f30f2 100644
--- a/checkpoint/restart.c
+++ b/checkpoint/restart.c
@@ -552,15 +552,15 @@ int ckpt_read_consume(struct ckpt_ctx *ctx, int len, int type)
static int check_kernel_const(struct ckpt_const *h)
{
struct task_struct *tsk;
- struct mm_struct *mm;
struct new_utsname *uts;
/* task */
if (h->task_comm_len != sizeof(tsk->comm))
return -EINVAL;
- /* mm */
- if (h->mm_saved_auxv_len != sizeof(mm->saved_auxv))
+ /* mm->saved_auxv size */
+ if (h->at_vector_size != AT_VECTOR_SIZE)
return -EINVAL;
+
/* signal */
if (h->signal_nsig != _NSIG)
return -EINVAL;
diff --git a/include/linux/checkpoint_hdr.h b/include/linux/checkpoint_hdr.h
index 5a68178..b5dd95c 100644
--- a/include/linux/checkpoint_hdr.h
+++ b/include/linux/checkpoint_hdr.h
@@ -262,7 +262,7 @@ struct ckpt_const {
/* task */
__u16 task_comm_len;
/* mm */
- __u16 mm_saved_auxv_len;
+ __u16 at_vector_size;
/* signal */
__u16 signal_nsig;
/* uts */
--
1.6.0.4
^ permalink raw reply related [flat|nested] 20+ messages in thread* [PATCH 8/9] fix potential use-before-set ret in arch/x86/vdso/vma.c
[not found] ` <1265680806-13295-1-git-send-email-serue-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
` (6 preceding siblings ...)
2010-02-09 2:00 ` [PATCH 7/9] cr: checkpoint saved_auxv as u64s serue-r/Jw6+rmf7HQT0dZR+AlfA
@ 2010-02-09 2:00 ` serue-r/Jw6+rmf7HQT0dZR+AlfA
2010-02-09 2:00 ` [PATCH 9/9] mm/mmap.c:do_munmap(): remove unused local vars serue-r/Jw6+rmf7HQT0dZR+AlfA
2010-02-09 22:04 ` [PATCH 0/9] ckpt-v19-rc3 cleanups Oren Laadan
9 siblings, 0 replies; 20+ messages in thread
From: serue-r/Jw6+rmf7HQT0dZR+AlfA @ 2010-02-09 2:00 UTC (permalink / raw)
To: orenl-eQaUEPhvms7ENvBUuze7eA; +Cc: containers-qjLDD68F18O7TbgM5vRIOg
From: Serge E. Hallyn <serue-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
(should be folded into
"c/r: extend arch_setup_additional_pages()"
)
Signed-off-by: Serge E. Hallyn <serue-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
---
arch/x86/vdso/vma.c | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/arch/x86/vdso/vma.c b/arch/x86/vdso/vma.c
index 393b22a..b10ed32 100644
--- a/arch/x86/vdso/vma.c
+++ b/arch/x86/vdso/vma.c
@@ -104,7 +104,7 @@ int arch_setup_additional_pages(struct linux_binprm *bprm,
{
struct mm_struct *mm = current->mm;
unsigned long addr;
- int ret;
+ int ret = -EINVAL;
if (!vdso_enabled)
return 0;
--
1.6.0.4
^ permalink raw reply related [flat|nested] 20+ messages in thread* [PATCH 9/9] mm/mmap.c:do_munmap(): remove unused local vars
[not found] ` <1265680806-13295-1-git-send-email-serue-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
` (7 preceding siblings ...)
2010-02-09 2:00 ` [PATCH 8/9] fix potential use-before-set ret in arch/x86/vdso/vma.c serue-r/Jw6+rmf7HQT0dZR+AlfA
@ 2010-02-09 2:00 ` serue-r/Jw6+rmf7HQT0dZR+AlfA
2010-02-09 22:04 ` [PATCH 0/9] ckpt-v19-rc3 cleanups Oren Laadan
9 siblings, 0 replies; 20+ messages in thread
From: serue-r/Jw6+rmf7HQT0dZR+AlfA @ 2010-02-09 2:00 UTC (permalink / raw)
To: orenl-eQaUEPhvms7ENvBUuze7eA; +Cc: containers-qjLDD68F18O7TbgM5vRIOg
From: Serge E. Hallyn <serue-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
Signed-off-by: Serge E. Hallyn <serue-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
---
mm/mmap.c | 3 ---
1 files changed, 0 insertions(+), 3 deletions(-)
diff --git a/mm/mmap.c b/mm/mmap.c
index 89c3d9c..75f5de3 100644
--- a/mm/mmap.c
+++ b/mm/mmap.c
@@ -2014,9 +2014,6 @@ int do_munmap_nocheck(struct mm_struct *mm, unsigned long start, size_t len)
int do_munmap(struct mm_struct *mm, unsigned long start, size_t len)
{
- unsigned long end;
- struct vm_area_struct *vma, *prev, *last;
-
if ((start & ~PAGE_MASK) || start > TASK_SIZE || len > TASK_SIZE-start)
return -EINVAL;
--
1.6.0.4
^ permalink raw reply related [flat|nested] 20+ messages in thread* Re: [PATCH 0/9] ckpt-v19-rc3 cleanups
[not found] ` <1265680806-13295-1-git-send-email-serue-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
` (8 preceding siblings ...)
2010-02-09 2:00 ` [PATCH 9/9] mm/mmap.c:do_munmap(): remove unused local vars serue-r/Jw6+rmf7HQT0dZR+AlfA
@ 2010-02-09 22:04 ` Oren Laadan
9 siblings, 0 replies; 20+ messages in thread
From: Oren Laadan @ 2010-02-09 22:04 UTC (permalink / raw)
To: serue-r/Jw6+rmf7HQT0dZR+AlfA; +Cc: containers-qjLDD68F18O7TbgM5vRIOg
I applied patches 2,4,5,7,8,9.
Patches 1,3,6 are related to mixed bit-ness restart -> for v20.
Thanks,
Oren.
serue-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org wrote:
> Sorry, some of these I've sent before, but here is the set I currently
> have on top of ckpt-v19-rc3. Boy is this painful - there are at least
> still 32->64 or vice-versa problems with: ipc_shm restore, signals
> (I think) and, in 32-bit restore of a x86-64 32-bit image, restore_cpu.
> I'll keep pushing at this tomorrow.
>
>
^ permalink raw reply [flat|nested] 20+ messages in thread