diff options
| -rw-r--r-- | mm/backing-dev.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/mm/backing-dev.c b/mm/backing-dev.c index a0860640378d..71034f41a2ba 100644 --- a/mm/backing-dev.c +++ b/mm/backing-dev.c | |||
| @@ -724,6 +724,14 @@ void bdi_destroy(struct backing_dev_info *bdi) | |||
| 724 | 724 | ||
| 725 | bdi_unregister(bdi); | 725 | bdi_unregister(bdi); |
| 726 | 726 | ||
| 727 | /* | ||
| 728 | * If bdi_unregister() had already been called earlier, the | ||
| 729 | * wakeup_timer could still be armed because bdi_prune_sb() | ||
| 730 | * can race with the bdi_wakeup_thread_delayed() calls from | ||
| 731 | * __mark_inode_dirty(). | ||
| 732 | */ | ||
| 733 | del_timer_sync(&bdi->wb.wakeup_timer); | ||
| 734 | |||
| 727 | for (i = 0; i < NR_BDI_STAT_ITEMS; i++) | 735 | for (i = 0; i < NR_BDI_STAT_ITEMS; i++) |
| 728 | percpu_counter_destroy(&bdi->bdi_stat[i]); | 736 | percpu_counter_destroy(&bdi->bdi_stat[i]); |
| 729 | 737 | ||
