From 2fa380a408229d21bc3e53dbc5e1c62e7d017d02 Mon Sep 17 00:00:00 2001 From: NeilBrown Date: Tue, 22 May 2012 13:55:01 +1000 Subject: [PATCH] --- yaml --- r: 305931 b: refs/heads/master c: 4fa2f327681808f653711e14203a42cf4644bda0 h: refs/heads/master i: 305929: f7c3e3640048e8b1f292349f4e53e5f746baddbb 305927: b84084d69ec62c5f73045a176aa388f74439d0c8 v: v3 --- [refs] | 2 +- trunk/drivers/md/md.c | 5 ++--- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/[refs] b/[refs] index 44140cf8f8f1..ad8e9be0ffc3 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 545c87957f4d53867b62921625f36df8c4b1bc08 +refs/heads/master: 4fa2f327681808f653711e14203a42cf4644bda0 diff --git a/trunk/drivers/md/md.c b/trunk/drivers/md/md.c index d557e557ff8f..ac99616f48d4 100644 --- a/trunk/drivers/md/md.c +++ b/trunk/drivers/md/md.c @@ -816,6 +816,8 @@ void md_rdev_clear(struct md_rdev *rdev) put_page(rdev->bb_page); rdev->bb_page = NULL; } + kfree(rdev->badblocks.page); + rdev->badblocks.page = NULL; } EXPORT_SYMBOL_GPL(md_rdev_clear); @@ -2191,9 +2193,7 @@ static void unbind_rdev_from_array(struct md_rdev * rdev) sysfs_remove_link(&rdev->kobj, "block"); sysfs_put(rdev->sysfs_state); rdev->sysfs_state = NULL; - kfree(rdev->badblocks.page); rdev->badblocks.count = 0; - rdev->badblocks.page = NULL; /* We need to delay this, otherwise we can deadlock when * writing to 'remove' to "dev/state". We also need * to delay it due to rcu usage. @@ -3325,7 +3325,6 @@ static struct md_rdev *md_import_device(dev_t newdev, int super_format, int supe if (rdev->bdev) unlock_rdev(rdev); md_rdev_clear(rdev); - kfree(rdev->badblocks.page); kfree(rdev); return ERR_PTR(err); }