diff options
author | Julia Lawall <julia@diku.dk> | 2008-07-30 01:33:28 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2008-07-30 12:41:45 -0400 |
commit | 950d442ad053e660538cdaa6efc0e060c2a65062 (patch) | |
tree | c980cdf6c6a1a7a0dec19a9368b5445e1fb7db4a /drivers/video/vt8623fb.c | |
parent | d667b6ddbcdc036a27407c8b2c1243f1dfd69e26 (diff) |
drivers/video: release mutex in error handling code
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>
Acked-by: Krzysztof Helt <krzysztof.h1@wp.pl>
Acked-by: Ondrej Zajicek <santiago@crfreenet.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'drivers/video/vt8623fb.c')
-rw-r--r-- | drivers/video/vt8623fb.c | 9 |
1 files changed, 3 insertions, 6 deletions
diff --git a/drivers/video/vt8623fb.c b/drivers/video/vt8623fb.c index 536ab11623f0..4a484ee98f8a 100644 --- a/drivers/video/vt8623fb.c +++ b/drivers/video/vt8623fb.c | |||
@@ -853,11 +853,8 @@ static int vt8623_pci_resume(struct pci_dev* dev) | |||
853 | acquire_console_sem(); | 853 | acquire_console_sem(); |
854 | mutex_lock(&(par->open_lock)); | 854 | mutex_lock(&(par->open_lock)); |
855 | 855 | ||
856 | if (par->ref_count == 0) { | 856 | if (par->ref_count == 0) |
857 | mutex_unlock(&(par->open_lock)); | 857 | goto fail; |
858 | release_console_sem(); | ||
859 | return 0; | ||
860 | } | ||
861 | 858 | ||
862 | pci_set_power_state(dev, PCI_D0); | 859 | pci_set_power_state(dev, PCI_D0); |
863 | pci_restore_state(dev); | 860 | pci_restore_state(dev); |
@@ -870,8 +867,8 @@ static int vt8623_pci_resume(struct pci_dev* dev) | |||
870 | vt8623fb_set_par(info); | 867 | vt8623fb_set_par(info); |
871 | fb_set_suspend(info, 0); | 868 | fb_set_suspend(info, 0); |
872 | 869 | ||
873 | mutex_unlock(&(par->open_lock)); | ||
874 | fail: | 870 | fail: |
871 | mutex_unlock(&(par->open_lock)); | ||
875 | release_console_sem(); | 872 | release_console_sem(); |
876 | 873 | ||
877 | return 0; | 874 | return 0; |