Commit 2e4ceec4 authored by Julia Lawall's avatar Julia Lawall Committed by David S. Miller

drivers/net/can/flexcan.c: add missing clk_put

The failed_get label is used after the call to clk_get has succeeded, so it
should be moved up above the call to clk_put.

The failed_req labels doesn't do anything different than failed_get, so
delete it.

A simplified version of the semantic match that finds this problem is as
follows: (http://coccinelle.lip6.fr/)

// <smpl>
@r exists@
expression e1,e2;
statement S;
@@

e1 = clk_get@p1(...);
... when != e1 = e2
    when != clk_put(e1)
    when any
if (...) { ... when != clk_put(e1)
               when != if (...) { ... clk_put(e1) ... }
* return@p3 ...;
 } else S
// </smpl>
Signed-off-by: default avatarJulia Lawall <julia@diku.dk>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 6979d5dd
...@@ -923,7 +923,7 @@ static int __devinit flexcan_probe(struct platform_device *pdev) ...@@ -923,7 +923,7 @@ static int __devinit flexcan_probe(struct platform_device *pdev)
mem_size = resource_size(mem); mem_size = resource_size(mem);
if (!request_mem_region(mem->start, mem_size, pdev->name)) { if (!request_mem_region(mem->start, mem_size, pdev->name)) {
err = -EBUSY; err = -EBUSY;
goto failed_req; goto failed_get;
} }
base = ioremap(mem->start, mem_size); base = ioremap(mem->start, mem_size);
...@@ -977,9 +977,8 @@ static int __devinit flexcan_probe(struct platform_device *pdev) ...@@ -977,9 +977,8 @@ static int __devinit flexcan_probe(struct platform_device *pdev)
iounmap(base); iounmap(base);
failed_map: failed_map:
release_mem_region(mem->start, mem_size); release_mem_region(mem->start, mem_size);
failed_req:
clk_put(clk);
failed_get: failed_get:
clk_put(clk);
failed_clock: failed_clock:
return err; return err;
} }
......
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