[media] mt9m111: fix Oops - initialise context before dereferencing
authorGuennadi Liakhovetski <g.liakhovetski@gmx.de>
Tue, 12 Mar 2013 11:40:37 +0000 (08:40 -0300)
committerMauro Carvalho Chehab <mchehab@redhat.com>
Thu, 21 Mar 2013 17:19:03 +0000 (14:19 -0300)
A recent commit "[media] soc-camera: Push probe-time power management to
drivers" causes an Oops during mt9m111 driver probing because its .ctx
private data field is now dereferenced before it is initialised. Fix this
by initialising the field earlier.

Reported-by: Javier Martin <javier.martin@vista-silicon.com>
Signed-off-by: Guennadi Liakhovetski <g.liakhovetski@gmx.de>
Tested-by: Javier Martin <javier.martin@vista-silicon.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
drivers/media/i2c/soc_camera/mt9m111.c

index 0b0ebaa686024eeed03e55128927d85f73555132..2902ba633da637e0d06a0b7bbc653fef877a1fd9 100644 (file)
@@ -785,8 +785,6 @@ static int mt9m111_init(struct mt9m111 *mt9m111)
        struct i2c_client *client = v4l2_get_subdevdata(&mt9m111->subdev);
        int ret;
 
-       /* Default HIGHPOWER context */
-       mt9m111->ctx = &context_b;
        ret = mt9m111_enable(mt9m111);
        if (!ret)
                ret = mt9m111_reset(mt9m111);
@@ -975,6 +973,9 @@ static int mt9m111_probe(struct i2c_client *client,
        if (!mt9m111)
                return -ENOMEM;
 
+       /* Default HIGHPOWER context */
+       mt9m111->ctx = &context_b;
+
        v4l2_i2c_subdev_init(&mt9m111->subdev, client, &mt9m111_subdev_ops);
        v4l2_ctrl_handler_init(&mt9m111->hdl, 5);
        v4l2_ctrl_new_std(&mt9m111->hdl, &mt9m111_ctrl_ops,