#endif
if (chan->fe) {
dvb_unregister_frontend(chan->fe);
- /*dvb_frontend_detach(chan->fe); */
+ dvb_frontend_detach(chan->fe);
chan->fe = 0;
}
dvbdemux->dmx.close(&dvbdemux->dmx);
return -ENODEV;
dev = vmalloc(sizeof(struct ngene));
- if (dev == NULL)
- return -ENOMEM;
+ if (dev == NULL) {
+ stat = -ENOMEM;
+ goto fail0;
+ }
memset(dev, 0, sizeof(struct ngene));
dev->pci_dev = pci_dev;
ngene_stop(dev);
fail1:
ngene_release_buffers(dev);
+fail0:
+ pci_disable_device(pci_dev);
pci_set_drvdata(pci_dev, 0);
return stat;
}
.name = "ngene",
.id_table = ngene_id_tbl,
.probe = ngene_probe,
- .remove = ngene_remove,
+ .remove = __devexit_p(ngene_remove),
.err_handler = &ngene_errors,
};