/* Make sure we can acquire the hardware */
        drv = cx8802_get_driver(dev, CX88_MPEG_BLACKBIRD);
-       if (drv) {
-               err = drv->request_acquire(drv);
-               if(err != 0) {
-                       dprintk(1,"%s: Unable to acquire hardware, %d\n", __func__, err);
-                       mutex_unlock(&dev->core->lock);
-                       return err;
-               }
+       if (!drv) {
+               dprintk(1, "%s: blackbird driver is not loaded\n", __func__);
+               mutex_unlock(&dev->core->lock);
+               return -ENODEV;
+       }
+
+       err = drv->request_acquire(drv);
+       if (err != 0) {
+               dprintk(1,"%s: Unable to acquire hardware, %d\n", __func__, err);
+               mutex_unlock(&dev->core->lock);
+               return err;
        }
 
        if (!atomic_read(&dev->core->mpeg_users) && blackbird_initialize_codec(dev) < 0) {
-               if (drv)
-                       drv->request_release(drv);
+               drv->request_release(drv);
                mutex_unlock(&dev->core->lock);
                return -EINVAL;
        }
        /* allocate + initialize per filehandle data */
        fh = kzalloc(sizeof(*fh),GFP_KERNEL);
        if (NULL == fh) {
-               if (drv)
-                       drv->request_release(drv);
+               drv->request_release(drv);
                mutex_unlock(&dev->core->lock);
                return -ENOMEM;
        }
 
        /* Make sure we release the hardware */
        drv = cx8802_get_driver(dev, CX88_MPEG_BLACKBIRD);
+       WARN_ON(!drv);
        if (drv)
                drv->request_release(drv);