| From jejb@kernel.org Wed Jul 30 14:15:03 2008 |
| From: Julia Lawall <julia@diku.dk> |
| Date: Wed, 30 Jul 2008 18:20:12 GMT |
| Subject: b43legacy: Release mutex in error handling code |
| To: jejb@kernel.org, stable@kernel.org |
| Message-ID: <200807301820.m6UIKCFB025870@hera.kernel.org> |
| |
| From: Julia Lawall <julia@diku.dk> |
| |
| commit 4104863fb4a724723d1d5f3cba9d3c5084087e45 upstream |
| |
| The mutex is released on a successful return, so it would seem that it |
| should be released on an error return as well. |
| |
| The semantic patch finds this problem is as follows: |
| (http://www.emn.fr/x-info/coccinelle/) |
| |
| // <smpl> |
| @@ |
| expression l; |
| @@ |
| |
| mutex_lock(l); |
| .. when != mutex_unlock(l) |
| when any |
| when strict |
| ( |
| if (...) { ... when != mutex_unlock(l) |
| + mutex_unlock(l); |
| return ...; |
| } |
| | |
| mutex_unlock(l); |
| ) |
| // </smpl> |
| |
| Signed-off-by: Julia Lawall <julia@diku.dk> |
| Signed-off-by: Michael Buesch <mb@bu3sch.de> |
| Signed-off-by: John W. Linville <linville@tuxdriver.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> |
| |
| --- |
| drivers/net/wireless/b43legacy/main.c | 2 +- |
| 1 file changed, 1 insertion(+), 1 deletion(-) |
| |
| --- a/drivers/net/wireless/b43legacy/main.c |
| +++ b/drivers/net/wireless/b43legacy/main.c |
| @@ -3792,10 +3792,10 @@ static int b43legacy_resume(struct ssb_d |
| goto out; |
| } |
| } |
| - mutex_unlock(&wl->mutex); |
| |
| b43legacydbg(wl, "Device resumed.\n"); |
| out: |
| + mutex_unlock(&wl->mutex); |
| return err; |
| } |
| |