]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
MD: Add del_timer_sync to mddev_suspend (fix nasty panic)
authorJonathan Brassow <jbrassow@redhat.com>
Wed, 16 May 2012 09:06:14 +0000 (04:06 -0500)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 21 May 2012 17:46:22 +0000 (10:46 -0700)
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

index 58027d8477c6072aa4b156d807fdb22c115c5bf5..363aaf40500ef46f4622efdf5014d5ea81f6f65c 100644 (file)
@@ -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);