summaryrefslogtreecommitdiff
path: root/drivers/media/platform
diff options
context:
space:
mode:
authorLaurentiu Palcu <laurentiu.palcu@nxp.com>2018-09-21 08:45:21 +0300
committerJason Liu <jason.hui.liu@nxp.com>2018-10-29 11:10:38 +0800
commita471b2ad9d582680084220f30238578781effe98 (patch)
tree32da730d021d89afbe5f6d0c243e1a933b4fab88 /drivers/media/platform
parenta634fe4289a21b245152f9630a3bf87f120da89f (diff)
MLK-19663 camera: ov5640: fix memory leak
In ov5640_probe(), if any error is encountered (like no camera attached), the function returns an error but the sensor structure is not freed, leading to a memory leak: unreferenced object 0xffff8000b9eafe00 (size 512): comm "swapper/0", pid 1, jiffies 4294892836 (age 62894.028s) hex dump (first 32 bytes): 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ backtrace: [<ffff0000081fdcac>] kmem_cache_alloc+0x1a4/0x208 [<ffff000008a29420>] ov5640_probe+0x30/0x8a8 [<ffff0000089ba92c>] i2c_device_probe+0x364/0x378 [<ffff0000086f7f28>] driver_probe_device+0x300/0x458 [<ffff0000086f814c>] __driver_attach+0xcc/0x118 [<ffff0000086f5bec>] bus_for_each_dev+0x4c/0x98 [<ffff0000086f76b8>] driver_attach+0x20/0x28 [<ffff0000086f7080>] bus_add_driver+0x1f8/0x298 [<ffff0000086f8bc8>] driver_register+0x60/0xf8 [<ffff0000089bae5c>] i2c_register_driver+0x44/0xc8 [<ffff0000094fa460>] ov5640_i2c_driver_init+0x18/0x20 [<ffff000008083cc0>] do_one_initcall+0x38/0x128 [<ffff0000094a0d1c>] kernel_init_freeable+0x188/0x22c [<ffff000008e1f728>] kernel_init+0x10/0x108 [<ffff000008084f08>] ret_from_fork+0x10/0x18 [<ffffffffffffffff>] 0xffffffffffffffff This patch replaces kmalloc with devm_kzalloc() and will also get rid of memset() in the process. Signed-off-by: Laurentiu Palcu <laurentiu.palcu@nxp.com>
Diffstat (limited to 'drivers/media/platform')
-rw-r--r--drivers/media/platform/mxc/capture/ov5640_mipi_v2.c4
1 files changed, 1 insertions, 3 deletions
diff --git a/drivers/media/platform/mxc/capture/ov5640_mipi_v2.c b/drivers/media/platform/mxc/capture/ov5640_mipi_v2.c
index 9e89d42608aa..1cb3d69918f4 100644
--- a/drivers/media/platform/mxc/capture/ov5640_mipi_v2.c
+++ b/drivers/media/platform/mxc/capture/ov5640_mipi_v2.c
@@ -1615,9 +1615,7 @@ static int ov5640_probe(struct i2c_client *client,
u8 chip_id_high, chip_id_low;
struct ov5640 *sensor;
- sensor = kmalloc(sizeof(*sensor), GFP_KERNEL);
- /* Set initial values for the sensor struct. */
- memset(sensor, 0, sizeof(*sensor));
+ sensor = devm_kzalloc(dev, sizeof(*sensor), GFP_KERNEL);
/* ov5640 pinctrl */
pinctrl = devm_pinctrl_get_select_default(dev);