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

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
...@@ -43,7 +43,6 @@ struct platram_info { ...@@ -43,7 +43,6 @@ struct platram_info {
struct device *dev; struct device *dev;
struct mtd_info *mtd; struct mtd_info *mtd;
struct map_info map; struct map_info map;
struct resource *area;
struct platdata_mtd_ram *pdata; struct platdata_mtd_ram *pdata;
}; };
...@@ -97,16 +96,6 @@ static int platram_remove(struct platform_device *pdev) ...@@ -97,16 +96,6 @@ static int platram_remove(struct platform_device *pdev)
platram_setrw(info, PLATRAM_RO); 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); kfree(info);
return 0; return 0;
...@@ -147,12 +136,11 @@ static int platram_probe(struct platform_device *pdev) ...@@ -147,12 +136,11 @@ static int platram_probe(struct platform_device *pdev)
info->pdata = pdata; info->pdata = pdata;
/* get the resource for the memory mapping */ /* get the resource for the memory mapping */
res = platform_get_resource(pdev, IORESOURCE_MEM, 0); res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
info->map.virt = devm_ioremap_resource(&pdev->dev, res);
if (res == NULL) { if (IS_ERR(info->map.virt)) {
dev_err(&pdev->dev, "no memory resource specified\n"); err = PTR_ERR(info->map.virt);
err = -ENOENT; dev_err(&pdev->dev, "failed to ioremap() region\n");
goto exit_free; goto exit_free;
} }
...@@ -167,26 +155,8 @@ static int platram_probe(struct platform_device *pdev) ...@@ -167,26 +155,8 @@ static int platram_probe(struct platform_device *pdev)
(char *)pdata->mapname : (char *)pdev->name; (char *)pdata->mapname : (char *)pdev->name;
info->map.bankwidth = pdata->bankwidth; 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); 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); simple_map_init(&info->map);
dev_dbg(&pdev->dev, "initialised map, probing for mtd\n"); dev_dbg(&pdev->dev, "initialised map, probing for mtd\n");
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment