[Devel] [PATCH 1/1] mktree: long is bigger on 64-bit

Serge E. Hallyn serue at us.ibm.com
Tue May 12 20:08:30 PDT 2009


mktree's hash function assumes that long is 32 bits.  Fix.

Signed-off-by: Serge Hallyn <serue at us.ibm.com>
---
 mktree.c |    6 ++++--
 1 files changed, 4 insertions(+), 2 deletions(-)

diff --git a/mktree.c b/mktree.c
index 7a8cecc..0195974 100644
--- a/mktree.c
+++ b/mktree.c
@@ -724,6 +724,7 @@ static int ckpt_make_tree(struct ckpt_ctx *ctx, struct task *task)
 	struct task *child;
 	struct pid_swap swap;
 	pid_t newpid;
+	int status;
 	int ret;
 
 	ckpt_dbg("pid %d: pid %d sid %d parent %d\n",
@@ -765,7 +766,7 @@ static int ckpt_make_tree(struct ckpt_ctx *ctx, struct task *task)
 	/* 3rd pass: bring out your deads ... */
 	for (child = task->children; child; child = child->next_sib) {
 		if (child->flags & TASK_DEAD) {
-			ret = waitpid(child->rpid, NULL, 0);
+			ret = waitpid(child->rpid, &status, 0);
 			if (ret < 0) {
 				perror("waitpid");
 				return -1;
@@ -1291,7 +1292,8 @@ static void hash_exit(struct ckpt_ctx *ctx)
 static inline int hash_func(long key)
 {
 	unsigned long hash = key * GOLDEN_RATIO_PRIME_32;
-	return (hash >> (32 - HASH_BITS));
+	//return (hash >> (32 - HASH_BITS));
+	return (hash >> (sizeof(long)*8 - HASH_BITS));
 }
 
 static int hash_insert(struct ckpt_ctx *ctx, long key, void *data)
-- 
1.6.1.1

_______________________________________________
Containers mailing list
Containers at lists.linux-foundation.org
https://lists.linux-foundation.org/mailman/listinfo/containers




More information about the Devel mailing list