X-Git-Url: http://git.ipfire.org/?a=blobdiff_plain;f=util.c;h=60fe6c0a0c2f9f1d97727da18a9de7f449f41793;hb=0c0c44db5ae98452c9c69bffc35b031c9fd7acea;hp=fe46f3b02d9c20a58079e0f70f8b48d41308d1e5;hpb=44d2e36556921e82a9fde02b554f799741c92531;p=thirdparty%2Fmdadm.git diff --git a/util.c b/util.c index fe46f3b0..60fe6c0a 100644 --- a/util.c +++ b/util.c @@ -31,6 +31,7 @@ #include "md_p.h" #include #include +#include #include #include #include @@ -820,7 +821,7 @@ struct supertype *super_by_fd(int fd) sprintf(version, "%d.%d", vers, minor); verstr = version; } - if (minor == -2 && verstr[0] == '/') { + if (minor == -2 && is_subarray(verstr)) { char *dev = verstr+1; subarray = strchr(dev, '/'); int devnum; @@ -1078,6 +1079,8 @@ int start_mdmon(int devnum) { int i; int len; + pid_t pid; + int status; char pathbuf[1024]; char *paths[4] = { pathbuf, @@ -1117,7 +1120,10 @@ int start_mdmon(int devnum) case -1: fprintf(stderr, Name ": cannot run mdmon. " "Array remains readonly\n"); return -1; - default: ; /* parent - good */ + default: /* parent - good */ + pid = wait(&status); + if (pid < 0 || status != 0) + return -1; } return 0; }