]> git.ipfire.org Git - thirdparty/mdadm.git/blobdiff - mdmon.c
mdmon: Fix crash if /proc/mdstat lists 0.9 superblocks
[thirdparty/mdadm.git] / mdmon.c
diff --git a/mdmon.c b/mdmon.c
index 4936260615a06193f0930a011d1f75835886e894..a51a94fa9e3526481efb81323caebaf281b7bbc8 100644 (file)
--- a/mdmon.c
+++ b/mdmon.c
@@ -300,7 +300,8 @@ int main(int argc, char *argv[])
                /* launch an mdmon instance for each container found */
                mdstat = mdstat_read(0, 0);
                for (e = mdstat; e; e = e->next) {
-                       if (strncmp(e->metadata_version, "external:", 9) == 0 &&
+                       if (e->metadata_version &&
+                           strncmp(e->metadata_version, "external:", 9) == 0 &&
                            !is_subarray(&e->metadata_version[9])) {
                                devname = devnum2devname(e->devnum);
                                /* update cmdline so this mdmon instance can be
@@ -468,7 +469,7 @@ static int mdmon(char *devname, int devnum, int must_fork, int takeover)
                }
                close(victim_sock);
        }
-       if (container->ss->load_super(container, mdfd, devname)) {
+       if (container->ss->load_container(container, mdfd, devname)) {
                fprintf(stderr, "mdmon: Cannot load metadata for %s\n",
                        devname);
                exit(3);
@@ -517,3 +518,12 @@ static int mdmon(char *devname, int devnum, int must_fork, int takeover)
 
        exit(0);
 }
+
+/* Some stub functions so super-* can link with us */
+int child_monitor(int afd, struct mdinfo *sra, struct reshape *reshape,
+                 struct supertype *st, unsigned long blocks,
+                 int *fds, unsigned long long *offsets,
+                 int dests, int *destfd, unsigned long long *destoffsets)
+{
+       return 0;
+}