Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 2e442aeb authored by Anton Vasilyev's avatar Anton Vasilyev Committed by Richard Weinberger
Browse files

mtd: plat-ram: Replace manual resource management by devm



Driver contains unsuitable request_mem_region() and
release_resource() calls.

The patch switches manual resource management by devm interface for
readability and error-free simplification.

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

Signed-off-by: default avatarAnton Vasilyev <vasilyev@ispras.ru>
Suggested-by: default avatarBoris Brezillon <boris.brezillon@free-electrons.com>
Signed-off-by: default avatarRichard Weinberger <richard@nod.at>
parent 16271224
Loading
Loading
Loading
Loading
+4 −34
Original line number Diff line number Diff line
@@ -43,7 +43,6 @@ struct platram_info {
	struct device		*dev;
	struct mtd_info		*mtd;
	struct map_info		 map;
	struct resource		*area;
	struct platdata_mtd_ram	*pdata;
};

@@ -97,16 +96,6 @@ static int platram_remove(struct platform_device *pdev)

	platram_setrw(info, PLATRAM_RO);

	/* release resources */

	if (info->area) {
		release_resource(info->area);
		kfree(info->area);
	}

	if (info->map.virt != NULL)
		iounmap(info->map.virt);

	kfree(info);

	return 0;
@@ -147,12 +136,11 @@ static int platram_probe(struct platform_device *pdev)
	info->pdata = pdata;

	/* get the resource for the memory mapping */

	res = platform_get_resource(pdev, IORESOURCE_MEM, 0);

	if (res == NULL) {
		dev_err(&pdev->dev, "no memory resource specified\n");
		err = -ENOENT;
	info->map.virt = devm_ioremap_resource(&pdev->dev, res);
	if (IS_ERR(info->map.virt)) {
		err = PTR_ERR(info->map.virt);
		dev_err(&pdev->dev, "failed to ioremap() region\n");
		goto exit_free;
	}

@@ -167,26 +155,8 @@ static int platram_probe(struct platform_device *pdev)
			(char *)pdata->mapname : (char *)pdev->name;
	info->map.bankwidth = pdata->bankwidth;

	/* register our usage of the memory area */

	info->area = request_mem_region(res->start, info->map.size, pdev->name);
	if (info->area == NULL) {
		dev_err(&pdev->dev, "failed to request memory region\n");
		err = -EIO;
		goto exit_free;
	}

	/* remap the memory area */

	info->map.virt = ioremap(res->start, info->map.size);
	dev_dbg(&pdev->dev, "virt %p, %lu bytes\n", info->map.virt, info->map.size);

	if (info->map.virt == NULL) {
		dev_err(&pdev->dev, "failed to ioremap() region\n");
		err = -EIO;
		goto exit_free;
	}

	simple_map_init(&info->map);

	dev_dbg(&pdev->dev, "initialised map, probing for mtd\n");