diff options
author | Murali Karicheri <m-karicheri2@ti.com> | 2010-03-01 17:54:02 -0500 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@redhat.com> | 2010-05-06 18:19:02 -0400 |
commit | ab51bec1f852f6b858a26e745b32a79cd1a67eec (patch) | |
tree | 9715f24a8928ea93519a58bf1b1bea3f2ecdca7c | |
parent | b704e82a54591d69816b45f4324caf143f1a6fc8 (diff) |
V4L/DVB: V4L: vpfe_capture - free ccdc_lock when memory allocation fails
This patch fixes a bug in vpfe_probe() that doesn't call mutex_unlock() if memory
allocation for ccdc_cfg fails. See also the smatch warning report from Dan
Carpenter that shows this as an issue.
Signed-off-by: Murali Karicheri <m-karicheri2@ti.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
-rw-r--r-- | drivers/media/video/davinci/vpfe_capture.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/drivers/media/video/davinci/vpfe_capture.c b/drivers/media/video/davinci/vpfe_capture.c index 7cf042f9b377..55128644b5d7 100644 --- a/drivers/media/video/davinci/vpfe_capture.c +++ b/drivers/media/video/davinci/vpfe_capture.c | |||
@@ -1830,7 +1830,7 @@ static __init int vpfe_probe(struct platform_device *pdev) | |||
1830 | if (NULL == ccdc_cfg) { | 1830 | if (NULL == ccdc_cfg) { |
1831 | v4l2_err(pdev->dev.driver, | 1831 | v4l2_err(pdev->dev.driver, |
1832 | "Memory allocation failed for ccdc_cfg\n"); | 1832 | "Memory allocation failed for ccdc_cfg\n"); |
1833 | goto probe_free_dev_mem; | 1833 | goto probe_free_lock; |
1834 | } | 1834 | } |
1835 | 1835 | ||
1836 | strncpy(ccdc_cfg->name, vpfe_cfg->ccdc, 32); | 1836 | strncpy(ccdc_cfg->name, vpfe_cfg->ccdc, 32); |
@@ -1982,8 +1982,9 @@ probe_out_video_release: | |||
1982 | probe_out_release_irq: | 1982 | probe_out_release_irq: |
1983 | free_irq(vpfe_dev->ccdc_irq0, vpfe_dev); | 1983 | free_irq(vpfe_dev->ccdc_irq0, vpfe_dev); |
1984 | probe_free_ccdc_cfg_mem: | 1984 | probe_free_ccdc_cfg_mem: |
1985 | mutex_unlock(&ccdc_lock); | ||
1986 | kfree(ccdc_cfg); | 1985 | kfree(ccdc_cfg); |
1986 | probe_free_lock: | ||
1987 | mutex_unlock(&ccdc_lock); | ||
1987 | probe_free_dev_mem: | 1988 | probe_free_dev_mem: |
1988 | kfree(vpfe_dev); | 1989 | kfree(vpfe_dev); |
1989 | return ret; | 1990 | return ret; |