mtd: rfd_ftl: fix use-after-free
authorSean Young <sean@mess.org>
Sat, 7 Aug 2021 21:45:37 +0000 (22:45 +0100)
committerMiquel Raynal <miquel.raynal@bootlin.com>
Tue, 17 Aug 2021 16:42:58 +0000 (18:42 +0200)
del_mtd_blktrans_dev() will kfree part, so after this call both part and
dev point to freed memory. Move the call to avoid use-after-free.

Signed-off-by: Sean Young <sean@mess.org>
Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
Link: https://lore.kernel.org/linux-mtd/20210807214538.14484-5-sean@mess.org
drivers/mtd/rfd_ftl.c

index 7f5f6d2..52be9f1 100644 (file)
@@ -800,10 +800,10 @@ static void rfd_ftl_remove_dev(struct mtd_blktrans_dev *dev)
                        part->mbd.mtd->name, i, part->blocks[i].erases);
        }
 
-       del_mtd_blktrans_dev(dev);
        vfree(part->sector_map);
        kfree(part->header_cache);
        kfree(part->blocks);
+       del_mtd_blktrans_dev(dev);
 }
 
 static struct mtd_blktrans_ops rfd_ftl_tr = {