aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/media/dvb/dvb-usb/dvb-usb-dvb.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/media/dvb/dvb-usb/dvb-usb-dvb.c')
-rw-r--r--drivers/media/dvb/dvb-usb/dvb-usb-dvb.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/drivers/media/dvb/dvb-usb/dvb-usb-dvb.c b/drivers/media/dvb/dvb-usb/dvb-usb-dvb.c
index ec631708c394..f0da15ebe33b 100644
--- a/drivers/media/dvb/dvb-usb/dvb-usb-dvb.c
+++ b/drivers/media/dvb/dvb-usb/dvb-usb-dvb.c
@@ -188,8 +188,9 @@ int dvb_usb_fe_init(struct dvb_usb_device* d)
188 188
189 if (dvb_register_frontend(&d->dvb_adap, d->fe)) { 189 if (dvb_register_frontend(&d->dvb_adap, d->fe)) {
190 err("Frontend registration failed."); 190 err("Frontend registration failed.");
191 if (d->fe->ops.release) 191 dvb_detach(d->fe->ops.release_sec, d->fe);
192 d->fe->ops.release(d->fe); 192 dvb_detach(d->fe->ops.tuner_ops.release, d->fe);
193 dvb_detach(d->fe->ops.release, d->fe);
193 d->fe = NULL; 194 d->fe = NULL;
194 return -ENODEV; 195 return -ENODEV;
195 } 196 }
@@ -204,7 +205,11 @@ int dvb_usb_fe_init(struct dvb_usb_device* d)
204 205
205int dvb_usb_fe_exit(struct dvb_usb_device *d) 206int dvb_usb_fe_exit(struct dvb_usb_device *d)
206{ 207{
207 if (d->fe != NULL) 208 if (d->fe != NULL) {
208 dvb_unregister_frontend(d->fe); 209 dvb_unregister_frontend(d->fe);
210 dvb_detach(d->fe->ops.release_sec, d->fe);
211 dvb_detach(d->fe->ops.tuner_ops.release, d->fe);
212 dvb_detach(d->fe->ops.release, d->fe);
213 }
209 return 0; 214 return 0;
210} 215}