Commit 8c293f54 authored by Baskov Evgeiny's avatar Baskov Evgeiny Committed by Miquel Raynal
Browse files

mtd: plat-ram: correctly free memory on error path in platram_probe()



If an error happens in mtd_device_parse_register or mtd_device_register,
memory allocated for struct platram_info is leaked.

Make platram_probe() call platram_remove() on all error paths
after struct platram_info allocation to correctly free resources.

Found by Linux Driver Verification project (linuxtesting.org).

Signed-off-by: default avatarBaskov Evgeiny <baskov@ispras.ru>
Signed-off-by: default avatarMiquel Raynal <miquel.raynal@bootlin.com>
Link: https://lore.kernel.org/linux-mtd/20201113160537.899-1-baskov@ispras.ru
parent 875330f8
Loading
Loading
Loading
Loading
+8 −3
Original line number Diff line number Diff line
@@ -177,7 +177,11 @@ static int platram_probe(struct platform_device *pdev)
	err = mtd_device_parse_register(info->mtd, pdata->probes, NULL,
					pdata->partitions,
					pdata->nr_partitions);
	if (!err)
	if (err) {
		dev_err(&pdev->dev, "failed to register mtd device\n");
		goto exit_free;
	}

	dev_info(&pdev->dev, "registered mtd device\n");

	if (pdata->nr_partitions) {
@@ -186,10 +190,11 @@ static int platram_probe(struct platform_device *pdev)
		if (err) {
			dev_err(&pdev->dev,
				"failed to register the entire device\n");
			goto exit_free;
		}
	}

	return err;
	return 0;

 exit_free:
	platram_remove(pdev);