diff options
Diffstat (limited to 'drivers/media/dvb/bt8xx/dst.c')
-rw-r--r-- | drivers/media/dvb/bt8xx/dst.c | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/drivers/media/dvb/bt8xx/dst.c b/drivers/media/dvb/bt8xx/dst.c index 52b6fb2455f..9f72b7000c0 100644 --- a/drivers/media/dvb/bt8xx/dst.c +++ b/drivers/media/dvb/bt8xx/dst.c @@ -1715,6 +1715,15 @@ static int dst_get_frontend(struct dvb_frontend *fe, struct dvb_frontend_paramet static void dst_release(struct dvb_frontend *fe) { struct dst_state *state = fe->demodulator_priv; + if (state->dst_ca) { + dvb_unregister_device(state->dst_ca); +#ifdef CONFIG_DVB_CORE_ATTACH + symbol_put(dst_ca_attach); +#endif + } +#ifdef CONFIG_DVB_CORE_ATTACH + symbol_put(dst_attach); +#endif kfree(state); } @@ -1752,11 +1761,6 @@ struct dst_state *dst_attach(struct dst_state *state, struct dvb_adapter *dvb_ad } state->frontend.demodulator_priv = state; - /* Attach other DST peripherals if any */ - /* Conditional Access device */ - if (state->dst_hw_cap & DST_TYPE_HAS_CA) - dst_ca_attach(state, dvb_adapter); - return state; /* Manu (DST is a card not a frontend) */ } |