|
@@ -1325,7 +1325,6 @@ static int zram_remove(struct zram *zram)
|
|
|
|
|
|
pr_info("Removed device: %s\n", zram->disk->disk_name);
|
|
pr_info("Removed device: %s\n", zram->disk->disk_name);
|
|
|
|
|
|
- idr_remove(&zram_index_idr, zram->disk->first_minor);
|
|
|
|
blk_cleanup_queue(zram->disk->queue);
|
|
blk_cleanup_queue(zram->disk->queue);
|
|
del_gendisk(zram->disk);
|
|
del_gendisk(zram->disk);
|
|
put_disk(zram->disk);
|
|
put_disk(zram->disk);
|
|
@@ -1367,10 +1366,12 @@ static ssize_t hot_remove_store(struct class *class,
|
|
mutex_lock(&zram_index_mutex);
|
|
mutex_lock(&zram_index_mutex);
|
|
|
|
|
|
zram = idr_find(&zram_index_idr, dev_id);
|
|
zram = idr_find(&zram_index_idr, dev_id);
|
|
- if (zram)
|
|
|
|
|
|
+ if (zram) {
|
|
ret = zram_remove(zram);
|
|
ret = zram_remove(zram);
|
|
- else
|
|
|
|
|
|
+ idr_remove(&zram_index_idr, dev_id);
|
|
|
|
+ } else {
|
|
ret = -ENODEV;
|
|
ret = -ENODEV;
|
|
|
|
+ }
|
|
|
|
|
|
mutex_unlock(&zram_index_mutex);
|
|
mutex_unlock(&zram_index_mutex);
|
|
return ret ? ret : count;
|
|
return ret ? ret : count;
|