]> rtime.felk.cvut.cz Git - sojka/nv-tegra/linux-3.10.git/commitdiff
media: tegra: cam_dev: fix memory leak in virtual_device_add
authorAllen Yu <alleny@nvidia.com>
Wed, 28 May 2014 16:34:35 +0000 (00:34 +0800)
committerTony Ly <tly@nvidia.com>
Fri, 30 May 2014 18:00:53 +0000 (11:00 -0700)
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/416887
Reviewed-by: Mitch Luban <mluban@nvidia.com>
Reviewed-by: Bharat Nihalani <bnihalani@nvidia.com>
Tested-by: Bharat Nihalani <bnihalani@nvidia.com>
drivers/media/platform/tegra/cam_dev/virtual.c

index df8a17cd32645fda025308bd808b9aba63b53feb..ae5a0e3a3c9aa8d9d8ce30e79df6a2c3837ce3e5 100644 (file)
@@ -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)