Depending on exact point of failure, not cleaning would lead to
BUG_ONs/oopses in various distant places.
Signed-off-by: Marcin Slusarz <marcin.slusarz@gmail.com>
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
 
        ret = disp->create(dev);
        if (ret)
-               return ret;
+               goto disp_create_err;
 
        if (dev->mode_config.num_crtc) {
                ret = drm_vblank_init(dev, dev->mode_config.num_crtc);
                if (ret)
-                       return ret;
+                       goto vblank_err;
        }
 
+       return 0;
+
+vblank_err:
+       disp->destroy(dev);
+disp_create_err:
+       drm_kms_helper_poll_fini(dev);
+       drm_mode_config_cleanup(dev);
        return ret;
 }