media: dvb-frontends/dvb-pll: fix module ref-counting
dvb-pll module was 'put' twice on exit: once by dvb_frontend_detach() and another by dvb_module_release(). Signed-off-by: Akihiro Tsukada <tskd08@gmail.com> Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
This commit is contained in:
parent
b30cc07de8
commit
f917fc0e9b
@ -884,6 +884,17 @@ dvb_pll_probe(struct i2c_client *client, const struct i2c_device_id *id)
|
||||
if (!dvb_pll_attach(fe, client->addr, client->adapter, desc_id))
|
||||
return -ENOMEM;
|
||||
|
||||
/*
|
||||
* Unset tuner_ops.release (== dvb_pll_release)
|
||||
* which has been just set in the above dvb_pll_attach(),
|
||||
* because if tuner_ops.release was left defined,
|
||||
* this module would be 'put' twice on exit:
|
||||
* once by dvb_frontend_detach() and another by dvb_module_release().
|
||||
*
|
||||
* dvb_pll_release is instead executed in the i2c driver's .remove(),
|
||||
* keeping dvb_pll_attach untouched for legacy (dvb_attach) drivers.
|
||||
*/
|
||||
fe->ops.tuner_ops.release = NULL;
|
||||
dev_info(&client->dev, "DVB Simple Tuner attached.\n");
|
||||
return 0;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user