diff options
Diffstat (limited to 'drivers/media/dvb/dvb-usb/dvb-usb-dvb.c')
-rw-r--r-- | drivers/media/dvb/dvb-usb/dvb-usb-dvb.c | 11 |
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 | ||
205 | int dvb_usb_fe_exit(struct dvb_usb_device *d) | 206 | int 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 | } |