Messages in this thread Patch in this message | | | Date | Fri, 06 Jun 2008 18:03:02 -0700 | From | Chris Wright <> | Subject | [patch 47/50] md: fix uninitialized use of mddev->recovery_wait |
| |
-stable review patch. If anyone has any objections, please let us know. ---------------------
From: Dan Williams <dan.j.williams@intel.com>
upstream commit: a6d8113a986c66aeb379a26b6e0062488b3e59e1
If an array was created with --assume-clean we will oops when trying to set ->resync_max.
Fix this by initializing ->recovery_wait in mddev_find.
Cc: <stable@kernel.org> Signed-off-by: Dan Williams <dan.j.williams@intel.com> Signed-off-by: Neil Brown <neilb@suse.de> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org> Signed-off-by: Chris Wright <chrisw@sous-sol.org> --- drivers/md/md.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
--- a/drivers/md/md.c +++ b/drivers/md/md.c @@ -274,6 +274,7 @@ static mddev_t * mddev_find(dev_t unit) atomic_set(&new->active, 1); spin_lock_init(&new->write_lock); init_waitqueue_head(&new->sb_wait); + init_waitqueue_head(&new->recovery_wait); new->reshape_position = MaxSector; new->resync_max = MaxSector; @@ -5559,7 +5560,6 @@ void md_do_sync(mddev_t *mddev) window/2,(unsigned long long) max_sectors/2); atomic_set(&mddev->recovery_active, 0); - init_waitqueue_head(&mddev->recovery_wait); last_check = 0; if (j>2) { --
| |