--- 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",
