[Devel] [PATCH 5/9] use ckpt_err for architecture mismatch errors
serue at us.ibm.com
serue at us.ibm.com
Mon Feb 8 18:00:02 PST 2010
From: Serge E. Hallyn <serue at us.ibm.com>
Signed-off-by: Serge E. Hallyn <serue at us.ibm.com>
---
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
_______________________________________________
Containers mailing list
Containers at lists.linux-foundation.org
https://lists.linux-foundation.org/mailman/listinfo/containers
More information about the Devel
mailing list