From ac9b2d276a1df3df969cb072f360060a176a639e Mon Sep 17 00:00:00 2001 From: Andy Shevchenko Date: Thu, 28 Jul 2011 04:59:38 -0300 Subject: [PATCH] --- yaml --- r: 271649 b: refs/heads/master c: 31ee95ec2d3dd3b6f68d7fa0f410045652895af2 h: refs/heads/master i: 271647: f4c749c1775404dceef78780f4b804d1c7d97dd0 v: v3 --- [refs] | 2 +- trunk/drivers/media/video/adp1653.c | 11 +++++++++-- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/[refs] b/[refs] index 87d7f2cfbd55..c442ef718c47 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 572064280ecc9dc89227cf3797bc2144896a34f5 +refs/heads/master: 31ee95ec2d3dd3b6f68d7fa0f410045652895af2 diff --git a/trunk/drivers/media/video/adp1653.c b/trunk/drivers/media/video/adp1653.c index 8ad89ffe2cc3..279d75d38188 100644 --- a/trunk/drivers/media/video/adp1653.c +++ b/trunk/drivers/media/video/adp1653.c @@ -429,12 +429,19 @@ static int adp1653_probe(struct i2c_client *client, flash->subdev.internal_ops = &adp1653_internal_ops; flash->subdev.flags |= V4L2_SUBDEV_FL_HAS_DEVNODE; - adp1653_init_controls(flash); + ret = adp1653_init_controls(flash); + if (ret) + goto free_and_quit; ret = media_entity_init(&flash->subdev.entity, 0, NULL, 0); if (ret < 0) - kfree(flash); + goto free_and_quit; + return 0; + +free_and_quit: + v4l2_ctrl_handler_free(&flash->ctrls); + kfree(flash); return ret; }