--- x/drivers/media/dvb-core/dvb_frontend.c +++ y/drivers/media/dvb-core/dvb_frontend.c @@ -2836,6 +2836,7 @@ static int dvb_frontend_open(struct inod if ((ret = dvb_generic_open(inode, file)) < 0) goto err1; + dvb_device_get(dvbdev); if ((file->f_flags & O_ACCMODE) != O_RDONLY) { /* normal tune mode when opened R/W */ @@ -3077,7 +3078,8 @@ int dvb_unregister_frontend(struct dvb_f mutex_lock(&frontend_mutex); dvb_frontend_stop(fe); - dvb_remove_device(fepriv->dvbdev); + dvb_unregister_device(fepriv->dvbdev); + fepriv->dvbdev = NULL; /* fe is invalid now */ mutex_unlock(&frontend_mutex);