This symbol mismatch is handled by NULL'ing out the release callback if the driver is loaded as an i2c device. This patch reverts: - 94448e21cf08b10f7dc7acdaca387594370396b0 - 835d66173a38538c072a7c393d02360dcfac8582 The symbol count mismatch is handled by: - 5b3a8e906973540b61dbf402c6b6f8d64d4ae119 Signed-off-by: Brad Love <brad@xxxxxxxxxxxxxxxx> --- drivers/media/dvb-frontends/lgdt3306a.c | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/drivers/media/dvb-frontends/lgdt3306a.c b/drivers/media/dvb-frontends/lgdt3306a.c index 5b19033..7eb4e14 100644 --- a/drivers/media/dvb-frontends/lgdt3306a.c +++ b/drivers/media/dvb-frontends/lgdt3306a.c @@ -1814,13 +1814,7 @@ static void lgdt3306a_release(struct dvb_frontend *fe) struct lgdt3306a_state *state = fe->demodulator_priv; dbg_info("\n"); - - /* - * If state->muxc is not NULL, then we are an i2c device - * and lgdt3306a_remove will clean up state - */ - if (!state->muxc) - kfree(state); + kfree(state); } static const struct dvb_frontend_ops lgdt3306a_ops; @@ -2221,7 +2215,7 @@ static int lgdt3306a_probe(struct i2c_client *client, sizeof(struct lgdt3306a_config)); config->i2c_addr = client->addr; - fe = dvb_attach(lgdt3306a_attach, config, client->adapter); + fe = lgdt3306a_attach(config, client->adapter); if (fe == NULL) { ret = -ENODEV; goto err_fe; -- 2.7.4