}
        private->mutex_dev = &pdev->dev;
 
-       drm_mode_config_init(drm);
+       ret = drmm_mode_config_init(drm);
+       if (ret)
+               return ret;
 
        drm->mode_config.min_width = 64;
        drm->mode_config.min_height = 64;
 
        ret = component_bind_all(drm->dev, drm);
        if (ret)
-               goto err_config_cleanup;
+               return ret;
 
        /*
         * We currently support two fixed data streams, each optional,
                dma_dev->dma_parms = NULL;
 err_component_unbind:
        component_unbind_all(drm->dev, drm);
-err_config_cleanup:
-       drm_mode_config_cleanup(drm);
 
        return ret;
 }
                private->dma_dev->dma_parms = NULL;
 
        component_unbind_all(drm->dev, drm);
-       drm_mode_config_cleanup(drm);
 }
 
 static const struct file_operations mtk_drm_fops = {