[media] e4000: fix crash when attach fails
authorAntti Palosaari <crope@iki.fi>
Sat, 22 Sep 2012 15:32:27 +0000 (12:32 -0300)
committerMauro Carvalho Chehab <mchehab@redhat.com>
Thu, 27 Sep 2012 18:17:44 +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/e4000.c

index ffaa4824d6af65b2a827fd04efaa78edcb13aaf4..1b33ed368abe1c63c28ca3e5e64d58e68b35a3d3 100644 (file)
@@ -366,9 +366,6 @@ struct dvb_frontend *e4000_attach(struct dvb_frontend *fe,
 
        priv->cfg = cfg;
        priv->i2c = i2c;
-       fe->tuner_priv = priv;
-       memcpy(&fe->ops.tuner_ops, &e4000_tuner_ops,
-                       sizeof(struct dvb_tuner_ops));
 
        /* check if the tuner is there */
        ret = e4000_rd_reg(priv, 0x02, &chip_id);
@@ -389,6 +386,10 @@ struct dvb_frontend *e4000_attach(struct dvb_frontend *fe,
                        "%s: Elonics E4000 successfully identified\n",
                        KBUILD_MODNAME);
 
+       fe->tuner_priv = priv;
+       memcpy(&fe->ops.tuner_ops, &e4000_tuner_ops,
+                       sizeof(struct dvb_tuner_ops));
+
        if (fe->ops.i2c_gate_ctrl)
                fe->ops.i2c_gate_ctrl(fe, 0);