diff options
author | Laurentiu Palcu <laurentiu.palcu@nxp.com> | 2018-09-21 08:45:21 +0300 |
---|---|---|
committer | Jason Liu <jason.hui.liu@nxp.com> | 2018-10-29 11:10:38 +0800 |
commit | a471b2ad9d582680084220f30238578781effe98 (patch) | |
tree | 32da730d021d89afbe5f6d0c243e1a933b4fab88 /drivers/media/platform | |
parent | a634fe4289a21b245152f9630a3bf87f120da89f (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.c | 4 |
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); |