pvr2_v4l2_dev_disassociate_parent(vp->dev_video);
        pvr2_v4l2_dev_disassociate_parent(vp->dev_radio);
        if (!list_empty(&vp->dev_video->devbase.fh_list) ||
-           !list_empty(&vp->dev_radio->devbase.fh_list))
+           (vp->dev_radio &&
+            !list_empty(&vp->dev_radio->devbase.fh_list))) {
+               pvr2_trace(PVR2_TRACE_STRUCT,
+                          "pvr2_v4l2 internal_check exit-empty id=%p", vp);
                return;
+       }
        pvr2_v4l2_destroy_no_lock(vp);
 }
 
        kfree(fhp);
        if (vp->channel.mc_head->disconnect_flag &&
            list_empty(&vp->dev_video->devbase.fh_list) &&
-           list_empty(&vp->dev_radio->devbase.fh_list)) {
+           (!vp->dev_radio ||
+            list_empty(&vp->dev_radio->devbase.fh_list))) {
                pvr2_v4l2_destroy_no_lock(vp);
        }
        return 0;