PATCH - md in 2.5.27 - Fix to bugs that would cause sync_sbs to Oops

From: Neil Brown <hidden>
Date: 2002-07-24 12:39:46


Sync_sbs tries to access the ->sb for the first rdev of an mddev.
This can oops as the wrong arg is given to list_entry, and also
if a define was faound to be failed, as failed devices have their ->sb
removed.  But that removal isn't necessary, so now an rdev will always
have an ->sb.



 ----------- Diffstat output ------------
 ./drivers/md/md.c |    4 +---
 1 files changed, 1 insertion(+), 3 deletions(-)
--- ./drivers/md/md.c	2002/07/24 11:16:39	1.1
+++ ./drivers/md/md.c	2002/07/24 11:18:32	1.2
@@ -847,7 +847,7 @@ static void sync_sbs(mddev_t * mddev)
 		MD_BUG();
 		return;
 	}
-	rdev = list_entry(&mddev->disks.next, mdk_rdev_t, same_set);
+	rdev = list_entry(mddev->disks.next, mdk_rdev_t, same_set);
 	sb = rdev->sb;
 
 	memset(sb, 0, sizeof(*sb));
@@ -1044,8 +1044,6 @@ static mdk_rdev_t *md_import_device(dev_
 	}
 	INIT_LIST_HEAD(&rdev->same_set);
 
-	if (rdev->faulty && rdev->sb)
-		free_disk_sb(rdev);
 	return rdev;
 
 abort_free:
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help