aboutsummaryrefslogtreecommitdiffstats
path: root/mm/backing-dev.c
diff options
context:
space:
mode:
Diffstat (limited to 'mm/backing-dev.c')
-rw-r--r--mm/backing-dev.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/mm/backing-dev.c b/mm/backing-dev.c
index 6d861d090e9f..6ac932210f56 100644
--- a/mm/backing-dev.c
+++ b/mm/backing-dev.c
@@ -710,6 +710,11 @@ static void cgwb_bdi_destroy(struct backing_dev_info *bdi)
710 */ 710 */
711 atomic_dec(&bdi->usage_cnt); 711 atomic_dec(&bdi->usage_cnt);
712 wait_event(cgwb_release_wait, !atomic_read(&bdi->usage_cnt)); 712 wait_event(cgwb_release_wait, !atomic_read(&bdi->usage_cnt));
713 /*
714 * Grab back our reference so that we hold it when @bdi gets
715 * re-registered.
716 */
717 atomic_inc(&bdi->usage_cnt);
713} 718}
714 719
715/** 720/**
@@ -857,6 +862,8 @@ int bdi_register_owner(struct backing_dev_info *bdi, struct device *owner)
857 MINOR(owner->devt)); 862 MINOR(owner->devt));
858 if (rc) 863 if (rc)
859 return rc; 864 return rc;
865 /* Leaking owner reference... */
866 WARN_ON(bdi->owner);
860 bdi->owner = owner; 867 bdi->owner = owner;
861 get_device(owner); 868 get_device(owner);
862 return 0; 869 return 0;