Commit 90ca75fd authored by Alexey Khoroshilov's avatar Alexey Khoroshilov Committed by Mauro Carvalho Chehab

[media] marvell-ccic: fix memory leak on failure path in cafe_smbus_setup()

If i2c_add_adapter() fails, adap is not deallocated.

Found by Linux Driver Verification project (linuxtesting.org).
Signed-off-by: default avatarAlexey Khoroshilov <khoroshilov@ispras.ru>
Acked-by: default avatarJonathan Corbet <corbet@lwn.net>
Signed-off-by: default avatarHans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@osg.samsung.com>
parent 8380b7e4
...@@ -339,17 +339,21 @@ static int cafe_smbus_setup(struct cafe_camera *cam) ...@@ -339,17 +339,21 @@ static int cafe_smbus_setup(struct cafe_camera *cam)
adap = kzalloc(sizeof(*adap), GFP_KERNEL); adap = kzalloc(sizeof(*adap), GFP_KERNEL);
if (adap == NULL) if (adap == NULL)
return -ENOMEM; return -ENOMEM;
cam->mcam.i2c_adapter = adap;
cafe_smbus_enable_irq(cam);
adap->owner = THIS_MODULE; adap->owner = THIS_MODULE;
adap->algo = &cafe_smbus_algo; adap->algo = &cafe_smbus_algo;
strcpy(adap->name, "cafe_ccic"); strcpy(adap->name, "cafe_ccic");
adap->dev.parent = &cam->pdev->dev; adap->dev.parent = &cam->pdev->dev;
i2c_set_adapdata(adap, cam); i2c_set_adapdata(adap, cam);
ret = i2c_add_adapter(adap); ret = i2c_add_adapter(adap);
if (ret) if (ret) {
printk(KERN_ERR "Unable to register cafe i2c adapter\n"); printk(KERN_ERR "Unable to register cafe i2c adapter\n");
kfree(adap);
return ret; return ret;
}
cam->mcam.i2c_adapter = adap;
cafe_smbus_enable_irq(cam);
return 0;
} }
static void cafe_smbus_shutdown(struct cafe_camera *cam) static void cafe_smbus_shutdown(struct cafe_camera *cam)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment