V4L/DVB (4432): Fix Circular dependencies

Signed-off-by: Manu Abraham <manu@linuxtv.org>
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
diff --git a/drivers/media/dvb/bt8xx/dst.c b/drivers/media/dvb/bt8xx/dst.c
index 52b6fb2..9f72b70 100644
--- a/drivers/media/dvb/bt8xx/dst.c
+++ b/drivers/media/dvb/bt8xx/dst.c
@@ -1715,6 +1715,15 @@
 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 @@
 	}
 	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)	*/
 }