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

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

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
Loading
Loading
Loading
Loading
+2 −3
Original line number Original line Diff line number Diff line
@@ -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)
	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;
}
}