2017-08-11 12:55:14

by Anton Vasilyev

[permalink] [raw]
Subject: [PATCH] mtd: plat-ram: use release_mem_region instead of release_resource

Use api pair of request_mem_region and release_mem_region
instead of release_resource.

Found by Linux Driver Verification project (linuxtesting.

Signed-off-by: Anton Vasilyev <[email protected]>
---
drivers/mtd/maps/plat-ram.c | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/drivers/mtd/maps/plat-ram.c b/drivers/mtd/maps/plat-ram.c
index 5157289..baaf146 100644
--- a/drivers/mtd/maps/plat-ram.c
+++ b/drivers/mtd/maps/plat-ram.c
@@ -82,6 +82,7 @@ static inline void platram_setrw(struct platram_info *info, int to)
static int platram_remove(struct platform_device *pdev)
{
struct platram_info *info = to_platram_info(pdev);
+ resource_size_t res_size;

dev_dbg(&pdev->dev, "removing device\n");

@@ -100,8 +101,8 @@ static int platram_remove(struct platform_device *pdev)
/* release resources */

if (info->area) {
- release_resource(info->area);
- kfree(info->area);
+ res_size = resource_size(info->area)
+ release_mem_region(info->area->start, res_size);
}

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


2017-08-15 09:02:04

by Boris Brezillon

[permalink] [raw]
Subject: Re: [PATCH] mtd: plat-ram: use release_mem_region instead of release_resource

Le Fri, 11 Aug 2017 15:55:03 +0300,
Anton Vasilyev <[email protected]> a écrit :

> Use api pair of request_mem_region and release_mem_region
> instead of release_resource.
>
> Found by Linux Driver Verification project (linuxtesting.
>
> Signed-off-by: Anton Vasilyev <[email protected]>
> ---
> drivers/mtd/maps/plat-ram.c | 5 +++--
> 1 file changed, 3 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/mtd/maps/plat-ram.c b/drivers/mtd/maps/plat-ram.c
> index 5157289..baaf146 100644
> --- a/drivers/mtd/maps/plat-ram.c
> +++ b/drivers/mtd/maps/plat-ram.c
> @@ -82,6 +82,7 @@ static inline void platram_setrw(struct platram_info *info, int to)
> static int platram_remove(struct platform_device *pdev)
> {
> struct platram_info *info = to_platram_info(pdev);
> + resource_size_t res_size;
>
> dev_dbg(&pdev->dev, "removing device\n");
>
> @@ -100,8 +101,8 @@ static int platram_remove(struct platform_device *pdev)
> /* release resources */
>
> if (info->area) {
> - release_resource(info->area);
> - kfree(info->area);
> + res_size = resource_size(info->area)

Missing semi-colon here, which means you did not even compile-test your
changes :P.

> + release_mem_region(info->area->start, res_size);

Why adding a res_size variable instead of doing

release_mem_region(info->area->start,
resource_size(info->area);

?

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