svn commit: r220192 - projects/graid/head/sys/geom/raid

Alexander Motin mav at FreeBSD.org
Thu Mar 31 12:43:40 UTC 2011


Author: mav
Date: Thu Mar 31 12:43:39 2011
New Revision: 220192
URL: http://svn.freebsd.org/changeset/base/220192

Log:
  Only disk with metadata could be part of the array. Accidental ID match for
  newly inserted disk should not cause NULL dereference. Such disk should be
  always handled as new.
  
  Found with:	Coverity Prevent(tm)
  CID:		9658

Modified:
  projects/graid/head/sys/geom/raid/md_jmicron.c

Modified: projects/graid/head/sys/geom/raid/md_jmicron.c
==============================================================================
--- projects/graid/head/sys/geom/raid/md_jmicron.c	Thu Mar 31 12:17:37 2011	(r220191)
+++ projects/graid/head/sys/geom/raid/md_jmicron.c	Thu Mar 31 12:43:39 2011	(r220192)
@@ -431,7 +431,10 @@ g_raid_md_jmicron_start_disk(struct g_ra
 	olddisk = NULL;
 
 	/* Find disk position in metadata by it's serial. */
-	disk_pos = jmicron_meta_find_disk(meta, pd->pd_disk_id);
+	if (pd->pd_meta != NULL)
+		disk_pos = jmicron_meta_find_disk(meta, pd->pd_disk_id);
+	else
+		disk_pos = -1;
 	if (disk_pos < 0) {
 		G_RAID_DEBUG1(1, sc, "Unknown, probably new or stale disk");
 		/* If we are in the start process, that's all for now. */
@@ -522,7 +525,7 @@ nofit:
 		 * Different disks may have different sizes/offsets,
 		 * especially in concat mode. Update.
 		 */
-		if (pd->pd_meta != NULL && !resurrection) {
+		if (!resurrection) {
 			sd->sd_offset =
 			    (off_t)pd->pd_meta->offset * 16 * 512; //ZZZ
 			sd->sd_size =


More information about the svn-src-projects mailing list