diff --git a/mm/backing-dev.c b/mm/backing-dev.c
index e5e0972bdd6f9a78e22fe09989dc9cd7a82e09cd..164ccc93690f0c376b5c042af6715d882f1c7dd5 100644
--- a/mm/backing-dev.c
+++ b/mm/backing-dev.c
@@ -961,6 +961,8 @@ static void release_bdi(struct kref *ref)
 	struct backing_dev_info *bdi =
 			container_of(ref, struct backing_dev_info, refcnt);
 
+	if (test_bit(WB_registered, &bdi->wb.state))
+		bdi_unregister(bdi);
 	bdi_exit(bdi);
 	kfree(bdi);
 }