Skip to content

Commit

Permalink
MD: Add del_timer_sync to mddev_suspend (fix nasty panic)
Browse files Browse the repository at this point in the history
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.

Cc: [email protected]
Signed-off-by: NeilBrown <[email protected]>
  • Loading branch information
jbrassow authored and neilbrown committed May 17, 2012
1 parent 6508fdb commit 0d9f4f1
Showing 1 changed file with 2 additions and 0 deletions.
2 changes: 2 additions & 0 deletions drivers/md/md.c
Original file line number Diff line number Diff line change
Expand Up @@ -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);

Expand Down

0 comments on commit 0d9f4f1

Please sign in to comment.