summaryrefslogtreecommitdiff
path: root/drivers/media/platform/tegra
diff options
context:
space:
mode:
authorAllen Yu <alleny@nvidia.com>2014-05-29 00:34:35 +0800
committerRiham Haidar <rhaidar@nvidia.com>2014-05-30 12:12:23 -0700
commit9d1193d12a8720cc451d95761b95bff144065384 (patch)
tree6dd39fdb830a00bec3fead4d98dae6fbbe4ea2ba /drivers/media/platform/tegra
parent5d5ebc829ba54070c4a9f363fe790be5781c9930 (diff)
media: tegra: cam_dev: fix memory leak in virtual_device_add
If chip already added, we have a leak of v_chip. This patch free v_chip if camera_chip_add(v_chip) return error. bug 200007998 Change-Id: I81af0e8bd9f96f4d3d07491476584f48a8b33c1f Signed-off-by: Allen Yu <alleny@nvidia.com> Reviewed-on: http://git-master/r/416223 GVS: Gerrit_Virtual_Submit Reviewed-by: Kerwin Wan <kerwinw@nvidia.com> Reviewed-by: Thomas Cherry <tcherry@nvidia.com> Reviewed-on: http://git-master/r/416888 Reviewed-by: Frank Chen <frankc@nvidia.com> Reviewed-by: Bharat Nihalani <bnihalani@nvidia.com> Tested-by: Bharat Nihalani <bnihalani@nvidia.com>
Diffstat (limited to 'drivers/media/platform/tegra')
-rw-r--r--drivers/media/platform/tegra/cam_dev/virtual.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/drivers/media/platform/tegra/cam_dev/virtual.c b/drivers/media/platform/tegra/cam_dev/virtual.c
index df8a17cd3264..ae5a0e3a3c9a 100644
--- a/drivers/media/platform/tegra/cam_dev/virtual.c
+++ b/drivers/media/platform/tegra/cam_dev/virtual.c
@@ -511,8 +511,14 @@ int virtual_device_add(struct device *dev, unsigned long arg)
v_chip->shutdown = virtual_shutdown,
v_chip->update = virtual_update,
- camera_chip_add(v_chip);
- return 0;
+ err = camera_chip_add(v_chip);
+ if (err) {
+ kfree(v_chip);
+ if (err == -EEXIST)
+ err = 0;
+ }
+
+ return err;
}
static int __init virtual_init(void)