Currently, i915_driver_load calls i915_driver_unload if drm_vblank_init
fails. However, we have not yet fully initialised drm_i915_private (eg.
->hangcheck_timer), so we're calling unload from an inconsistent state.

This change uses the existing error path to do the cleanup instead, as
is used before and after the drm_vblank_init() call.

Also, as drm_vblank_init doesn't print any message on failure, add a
DRM_ERROR to explain what happened, as is done for the other error
paths.

Signed-off-by: Jeremy Kerr <[email protected]>

---
 drivers/gpu/drm/i915/i915_dma.c |    4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/i915/i915_dma.c b/drivers/gpu/drm/i915/i915_dma.c
index 7a26f4d..80766b6 100644
--- a/drivers/gpu/drm/i915/i915_dma.c
+++ b/drivers/gpu/drm/i915/i915_dma.c
@@ -2043,8 +2043,8 @@ int i915_driver_load(struct drm_device *dev, unsigned 
long flags)
        ret = drm_vblank_init(dev, I915_NUM_PIPE);
 
        if (ret) {
-               (void) i915_driver_unload(dev);
-               return ret;
+               DRM_ERROR("failed to init vblank\n");
+               goto out_workqueue_free;
        }
 
        /* Start out suspended */
_______________________________________________
Intel-gfx mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

Reply via email to