--- linux-2.6.12.1.orig/init/do_mounts_md.c 2005-06-24 11:09:29.000000000 -0600 +++ linux-2.6.12.1/init/do_mounts_md.c 2005-06-24 13:34:35.000000000 -0600 @@ -126,6 +126,7 @@ for (ent = 0; ent < md_setup_ents ; ent++) { int fd; + int disknum; int err = 0; char *devname; mdu_disk_info_t dinfo; @@ -142,6 +143,7 @@ else dev = MKDEV(MD_MAJOR, minor); create_dev(name, dev, devfs_name); + disknum = 0; for (i = 0; i < MD_SB_DISKS && devname != 0; i++) { char *p; char comp_name[64]; @@ -149,7 +151,7 @@ p = strchr(devname, ','); if (p) - *p++ = 0; + *p = 0; dev = name_to_dev_t(devname); if (strncmp(devname, "/dev/", 5) == 0) @@ -159,17 +161,22 @@ if (rdev) dev = new_decode_dev(rdev); if (!dev) { - printk(KERN_WARNING "md: Unknown device name: %s\n", devname); - break; + printk(KERN_WARNING "md: Skipping unknown device name: %s\n", devname); + if (p) + *p++ = ','; + devname = p; + continue; } - devices[i] = dev; + devices[disknum++] = dev; + if (p) + *p++ = ','; devname = p; } - devices[i] = 0; + devices[disknum] = 0; - if (!i) + if (!disknum) continue; printk(KERN_INFO "md: Loading md%s%d: %s\n",