summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNeilBrown <neilb@suse.de>2008-11-07 14:46:30 +1100
committerNeilBrown <neilb@suse.de>2008-11-07 14:46:30 +1100
commit97f734fde22e64affd46c957d9184e536bcc1026 (patch)
treecc0066d4088c9467c42464eee2796e123b8e834b
parent1679bef2eeb641b77d72bf20e9fbbd555cc0a1cb (diff)
downloadmdadm-97f734fde22e64affd46c957d9184e536bcc1026.tar.gz
A couple of bugfixes found by suse autobuilding:
1/ ia64 appear to have __clone2, not clone. 2/ Including "++" in the arg to a macro is a bad thing to do. Signed-off-by: NeilBrown <neilb@suse.de>
-rw-r--r--mdmon.c14
-rw-r--r--super-intel.c6
2 files changed, 17 insertions, 3 deletions
diff --git a/mdmon.c b/mdmon.c
index fa5a0df..5ee8346 100644
--- a/mdmon.c
+++ b/mdmon.c
@@ -79,13 +79,25 @@ int run_child(void *v)
return 0;
}
-int clone_monitor(struct supertype *container)
+#ifdef __ia64__
+int __clone2(int (*fn)(void *),
+ void *child_stack_base, size_t stack_size,
+ int flags, void *arg, ...
+ /* pid_t *pid, struct user_desc *tls, pid_t *ctid */ );
+#endif
+ int clone_monitor(struct supertype *container)
{
static char stack[4096];
+#ifdef __ia64__
+ mon_tid = __clone2(run_child, stack, sizeof(stack),
+ CLONE_FS|CLONE_FILES|CLONE_VM|CLONE_SIGHAND|CLONE_THREAD,
+ container);
+#else
mon_tid = clone(run_child, stack+4096-64,
CLONE_FS|CLONE_FILES|CLONE_VM|CLONE_SIGHAND|CLONE_THREAD,
container);
+#endif
mgr_tid = syscall(SYS_gettid);
diff --git a/super-intel.c b/super-intel.c
index 34dfb8f..a2b9bd2 100644
--- a/super-intel.c
+++ b/super-intel.c
@@ -271,8 +271,10 @@ static __u32 __gen_imsm_checksum(struct imsm_super *mpb)
__u32 *p = (__u32 *) mpb;
__u32 sum = 0;
- while (end--)
- sum += __le32_to_cpu(*p++);
+ while (end--) {
+ sum += __le32_to_cpu(*p);
+ p++;
+ }
return sum - __le32_to_cpu(mpb->check_sum);
}