summaryrefslogtreecommitdiffstats
path: root/drivers/media/i2c/lm3560.c
diff options
context:
space:
mode:
authorWei Yongjun <yongjun_wei@trendmicro.com.cn>2013-11-08 21:24:18 -0300
committerMauro Carvalho Chehab <m.chehab@samsung.com>2013-12-10 11:08:45 -0200
commitcc58f4db5173f5cd039de4681ec4778b5cd71182 (patch)
treeaf7e793c5436620b13f51c54cc31c7406eeed2da /drivers/media/i2c/lm3560.c
parenteed8c3eebce72fe4fc766f9a23e4324b04bd86cf (diff)
downloadlinux-stable-cc58f4db5173f5cd039de4681ec4778b5cd71182.tar.gz
linux-stable-cc58f4db5173f5cd039de4681ec4778b5cd71182.tar.bz2
linux-stable-cc58f4db5173f5cd039de4681ec4778b5cd71182.zip
[media] media: i2c: lm3560: use correct clientdata in lm3560_remove()
We had set the i2c clientdata to &flash->subdev_led[LM3560_LED1] after call lm3560_subdev_init(flash, LM3560_LED1, "lm3560-led1"), but the container_of() in lm3560_remove() return the wrong pointer to flash.(should be container_of(subdev, struct lm3560_flash, subdev_led[LM3560_LED_MAX-1]) This patch fix to set i2c clientdata to flash so we can get flash from clientdata directly. Signed-off-by: Wei Yongjun <yongjun_wei@trendmicro.com.cn> Signed-off-by: Mauro Carvalho Chehab <m.chehab@samsung.com>
Diffstat (limited to 'drivers/media/i2c/lm3560.c')
-rw-r--r--drivers/media/i2c/lm3560.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/drivers/media/i2c/lm3560.c b/drivers/media/i2c/lm3560.c
index e728d9fb08d1..d98ca3aebe23 100644
--- a/drivers/media/i2c/lm3560.c
+++ b/drivers/media/i2c/lm3560.c
@@ -448,14 +448,14 @@ static int lm3560_probe(struct i2c_client *client,
if (rval < 0)
return rval;
+ i2c_set_clientdata(client, flash);
+
return 0;
}
static int lm3560_remove(struct i2c_client *client)
{
- struct v4l2_subdev *subdev = i2c_get_clientdata(client);
- struct lm3560_flash *flash = container_of(subdev, struct lm3560_flash,
- subdev_led[LM3560_LED_MAX]);
+ struct lm3560_flash *flash = i2c_get_clientdata(client);
unsigned int i;
for (i = LM3560_LED0; i < LM3560_LED_MAX; i++) {