Messages in this thread Patch in this message | | | Date | Fri, 18 May 2012 14:27:21 -0700 | From | Greg KH <> | Subject | [ 32/47] MD: Add del_timer_sync to mddev_suspend (fix nasty panic) |
| |
3.3-stable review patch. If anyone has any objections, please let me know.
------------------
From: Jonathan Brassow <jbrassow@redhat.com>
commit 0d9f4f135eb6dea06bdcb7065b1e4ff78274a5e9 upstream.
Use del_timer_sync to remove timer before mddev_suspend finishes.
We don't want a timer going off after an mddev_suspend is called. This is especially true with device-mapper, since it can call the destructor function immediately following a suspend. This results in the removal (kfree) of the structures upon which the timer depends - resulting in a very ugly panic. Therefore, we add a del_timer_sync to mddev_suspend to prevent this.
Signed-off-by: NeilBrown <neilb@suse.de> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
--- drivers/md/md.c | 2 ++ 1 file changed, 2 insertions(+)
--- a/drivers/md/md.c +++ b/drivers/md/md.c @@ -391,6 +391,8 @@ void mddev_suspend(struct mddev *mddev) synchronize_rcu(); wait_event(mddev->sb_wait, atomic_read(&mddev->active_io) == 0); mddev->pers->quiesce(mddev, 1); + + del_timer_sync(&mddev->safemode_timer); } EXPORT_SYMBOL_GPL(mddev_suspend);
| |