]> git.ipfire.org Git - thirdparty/mdadm.git/commitdiff
mdmon: close small window of invalid mon_tid
authorDan Williams <dan.j.williams@intel.com>
Mon, 14 Jul 2008 21:59:39 +0000 (14:59 -0700)
committerDan Williams <dan.j.williams@intel.com>
Mon, 14 Jul 2008 21:59:39 +0000 (14:59 -0700)
There is a small chance that the manager tries to wake the monitor before
mon_tid is set.

Signed-off-by: Dan Williams <dan.j.williams@intel.com>
mdmon.c

diff --git a/mdmon.c b/mdmon.c
index 99f2f2c419ba052c6a78d55dc3c7d69a3ba84389..c7d7f680db574c31fb58b5c627e05b8f08432b56 100644 (file)
--- a/mdmon.c
+++ b/mdmon.c
@@ -52,7 +52,6 @@ int run_child(void *v)
 {
        struct supertype *c = v;
 
-       mon_tid = syscall(SYS_gettid);
        do_monitor(c);
        return 0;
 }
@@ -60,16 +59,14 @@ int run_child(void *v)
 int clone_monitor(struct supertype *container)
 {
        static char stack[4096];
-       int rv;
 
-
-       rv = clone(run_child, stack+4096-64,
+       mon_tid = clone(run_child, stack+4096-64,
                   CLONE_FS|CLONE_FILES|CLONE_VM|CLONE_SIGHAND|CLONE_THREAD,
                   container);
 
        mgr_tid = syscall(SYS_gettid);
-       
-       return rv;
+
+       return mon_tid;
 }
 
 static struct superswitch *find_metadata_methods(char *vers)