[media] fc2580: fix crash when attach fails
authorAntti Palosaari <crope@iki.fi>
Sat, 22 Sep 2012 02:36:27 +0000 (23:36 -0300)
committerMauro Carvalho Chehab <mchehab@redhat.com>
Thu, 27 Sep 2012 18:17:24 +0000 (15:17 -0300)
Callbacks were set even attach failed. This leads calling
.release() in error case and resulted crash.

Reported-by: Oliver Schinagl <oliver@schinagl.nl>
Signed-off-by: Antti Palosaari <crope@iki.fi>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
drivers/media/tuners/fc2580.c

index 7db32ec4bd0927815f09e0c9197a90ff51f1fc8f..ec7965d7c2f8f36e4d30da940c92c30adec4fb97 100644 (file)
@@ -487,9 +487,6 @@ struct dvb_frontend *fc2580_attach(struct dvb_frontend *fe,
 
        priv->cfg = cfg;
        priv->i2c = i2c;
-       fe->tuner_priv = priv;
-       memcpy(&fe->ops.tuner_ops, &fc2580_tuner_ops,
-                       sizeof(struct dvb_tuner_ops));
 
        /* check if the tuner is there */
        ret = fc2580_rd_reg(priv, 0x01, &chip_id);
@@ -510,6 +507,10 @@ struct dvb_frontend *fc2580_attach(struct dvb_frontend *fe,
                        "%s: FCI FC2580 successfully identified\n",
                        KBUILD_MODNAME);
 
+       fe->tuner_priv = priv;
+       memcpy(&fe->ops.tuner_ops, &fc2580_tuner_ops,
+                       sizeof(struct dvb_tuner_ops));
+
        if (fe->ops.i2c_gate_ctrl)
                fe->ops.i2c_gate_ctrl(fe, 0);