zram: fix unbalanced idr management at hot removal
[firefly-linux-kernel-4.4.55.git] / drivers / block / zram / zram_drv.c
index 370c2f76016d685820689f543ea96c1006230131..1770c455dfdd3125e639524e0b242027c33a68a8 100644 (file)
@@ -1368,7 +1368,8 @@ static ssize_t hot_remove_store(struct class *class,
        zram = idr_find(&zram_index_idr, dev_id);
        if (zram) {
                ret = zram_remove(zram);
-               idr_remove(&zram_index_idr, dev_id);
+               if (!ret)
+                       idr_remove(&zram_index_idr, dev_id);
        } else {
                ret = -ENODEV;
        }