summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDan Carpenter <error27@gmail.com>2010-10-21 23:22:43 +0400
committerMauro Carvalho Chehab <mchehab@redhat.com>2010-10-23 04:03:25 +0400
commit29adc2c06fd7aa0a26135d8c96afd1cef9e6700b (patch)
tree1f1bcde88ad0a8572b998b08e849c7437fb487b4
parentaa55f3a46fe799b3c8396c57f4b4074252f635da (diff)
downloadlinux-29adc2c06fd7aa0a26135d8c96afd1cef9e6700b.tar.xz
[media] s5p-fimc: add unlock on error path
There was an unlock missing if kzalloc() failed. Signed-off-by: Dan Carpenter <error27@gmail.com> Acked-by: Sylwester Nawrocki <s.nawrocki@samsung.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
-rw-r--r--drivers/media/video/s5p-fimc/fimc-core.c11
1 files changed, 7 insertions, 4 deletions
diff --git a/drivers/media/video/s5p-fimc/fimc-core.c b/drivers/media/video/s5p-fimc/fimc-core.c
index 4b655461d399..2e7c547894b6 100644
--- a/drivers/media/video/s5p-fimc/fimc-core.c
+++ b/drivers/media/video/s5p-fimc/fimc-core.c
@@ -1320,16 +1320,18 @@ static int fimc_m2m_open(struct file *file)
* is already opened.
*/
if (fimc->vid_cap.refcnt > 0) {
- mutex_unlock(&fimc->lock);
- return -EBUSY;
+ err = -EBUSY;
+ goto err_unlock;
}
fimc->m2m.refcnt++;
set_bit(ST_OUTDMA_RUN, &fimc->state);
ctx = kzalloc(sizeof *ctx, GFP_KERNEL);
- if (!ctx)
- return -ENOMEM;
+ if (!ctx) {
+ err = -ENOMEM;
+ goto err_unlock;
+ }
file->private_data = ctx;
ctx->fimc_dev = fimc;
@@ -1349,6 +1351,7 @@ static int fimc_m2m_open(struct file *file)
kfree(ctx);
}
+err_unlock:
mutex_unlock(&fimc->lock);
return err;
}