Patchwork [1/12] arch/powerpc/kernel: Add missing unlock

login
register
mail settings
Submitter Julia Lawall
Date March 29, 2010, 3:33 p.m.
Message ID <Pine.LNX.4.64.1003291733150.21896@ask.diku.dk>
Download mbox | patch
Permalink /patch/48867/
State Accepted, archived
Commit f6d8c8bb1d360272d795927d39f3d2c5934e77d9
Delegated to: Benjamin Herrenschmidt
Headers show

Comments

Julia Lawall - March 29, 2010, 3:33 p.m.
From: Julia Lawall <julia@diku.dk>

Add an unlock before exiting the function.

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

// <smpl>
@r exists@
expression E1;
identifier f;
@@

f (...) { <+...
* spin_lock_irq (E1,...);
... when != E1
* return ...;
...+> }
// </smpl>

Signed-off-by: Julia Lawall <julia@diku.dk>

---
 arch/powerpc/kernel/vio.c           |    4 +++-
 1 files changed, 3 insertions(+), 1 deletions(-)
Stephen Rothwell - March 31, 2010, 1:52 a.m.
Hi Julia,

On Mon, 29 Mar 2010 17:33:34 +0200 (CEST) Julia Lawall <julia@diku.dk> wrote:
>
> From: Julia Lawall <julia@diku.dk>
> 
> Add an unlock before exiting the function.

Thanks for this.

> Signed-off-by: Julia Lawall <julia@diku.dk>

Acked-by: Stephen Rothwell <sfr@canb.auug.org.au>

Patch

diff --git a/arch/powerpc/kernel/vio.c b/arch/powerpc/kernel/vio.c
index 77f6421..2ca69fa 100644
--- a/arch/powerpc/kernel/vio.c
+++ b/arch/powerpc/kernel/vio.c
@@ -644,8 +644,10 @@  void vio_cmo_set_dev_desired(struct vio_dev *viodev, size_t desired)
 			found = 1;
 			break;
 		}
-	if (!found)
+	if (!found) {
+		spin_unlock_irqrestore(&vio_cmo.lock, flags);
 		return;
+	}
 
 	/* Increase/decrease in desired device entitlement */
 	if (desired >= viodev->cmo.desired) {