drivers/video/sm501fb.c: Convert release_resource to release_mem_region
authorJulia Lawall <julia@diku.dk>
Fri, 22 Apr 2011 20:11:22 +0000 (20:11 +0000)
committerPaul Mundt <lethal@linux-sh.org>
Tue, 24 May 2011 07:08:59 +0000 (16:08 +0900)
Request_mem_region should be used with release_mem_region, not
release_resource.

The semantic match that finds this problem is as follows:
(http://coccinelle.lip6.fr/)

// <smpl>
@s exists@
expression e1,e2,e3,e4,e;
@@

*e4 = request_mem_region(e1,e2,e3)
... when != e4 = e
*release_resource(e4);
// </smpl>

Signed-off-by: Julia Lawall <julia@diku.dk>
Signed-off-by: Paul Mundt <lethal@linux-sh.org>
drivers/video/sm501fb.c

index 56ef6b3a9851ca6f26a41b7be16a4c9678dacc9c..87f0be1e78b555e52297ed7d399f3bfe9364a1a5 100644 (file)
@@ -1625,22 +1625,22 @@ static int sm501fb_start(struct sm501fb_info *info,
        return 0; /* everything is setup */
 
  err_mem_res:
-       release_resource(info->fbmem_res);
-       kfree(info->fbmem_res);
+       release_mem_region(info->fbmem_res->start,
+                          resource_size(info->fbmem_res));
 
  err_regs2d_map:
        iounmap(info->regs2d);
 
  err_regs2d_res:
-       release_resource(info->regs2d_res);
-       kfree(info->regs2d_res);
+       release_mem_region(info->regs2d_res->start,
+                          resource_size(info->regs2d_res));
 
  err_regs_map:
        iounmap(info->regs);
 
  err_regs_res:
-       release_resource(info->regs_res);
-       kfree(info->regs_res);
+       release_mem_region(info->regs_res->start,
+                          resource_size(info->regs_res));
 
  err_release:
        return ret;
@@ -1652,16 +1652,16 @@ static void sm501fb_stop(struct sm501fb_info *info)
        sm501_unit_power(info->dev->parent, SM501_GATE_DISPLAY, 0);
 
        iounmap(info->fbmem);
-       release_resource(info->fbmem_res);
-       kfree(info->fbmem_res);
+       release_mem_region(info->fbmem_res->start,
+                          resource_size(info->fbmem_res));
 
        iounmap(info->regs2d);
-       release_resource(info->regs2d_res);
-       kfree(info->regs2d_res);
+       release_mem_region(info->regs2d_res->start,
+                          resource_size(info->regs2d_res));
 
        iounmap(info->regs);
-       release_resource(info->regs_res);
-       kfree(info->regs_res);
+       release_mem_region(info->regs_res->start,
+                          resource_size(info->regs_res));
 }
 
 static int sm501fb_init_fb(struct fb_info *fb,