diff --git a/drivers/mtd/ubi/block.c b/drivers/mtd/ubi/block.c index 203d42191585fdb72d67e0e6e8797ec10f4a7393..1d6a61c1771fd0593011da7c97cd0023a1a906d7 100644 --- a/drivers/mtd/ubi/block.c +++ b/drivers/mtd/ubi/block.c @@ -475,15 +475,17 @@ int ubiblock_create(struct ubi_volume_info *vi) static void ubiblock_cleanup(struct ubiblock *dev) { + int id = dev->gd->first_minor; + /* Stop new requests to arrive */ del_gendisk(dev->gd); /* Flush pending work */ destroy_workqueue(dev->wq); /* Finally destroy the blk queue */ dev_info(disk_to_dev(dev->gd), "released"); - idr_remove(&ubiblock_minor_idr, dev->gd->first_minor); blk_cleanup_disk(dev->gd); blk_mq_free_tag_set(&dev->tag_set); + idr_remove(&ubiblock_minor_idr, id); } int ubiblock_remove(struct ubi_volume_info *vi) diff --git a/fs/ubifs/tnc.c b/fs/ubifs/tnc.c index 896f0ef1395a194881ff6c3fc12e135555211edb..0245e6592befd4beb3aa40aa0c3288f0f5832218 100644 --- a/fs/ubifs/tnc.c +++ b/fs/ubifs/tnc.c @@ -65,6 +65,7 @@ static void do_insert_old_idx(struct ubifs_info *c, else { ubifs_err(c, "old idx added twice!"); kfree(old_idx); + return; } } rb_link_node(&old_idx->rb, parent, p);