diff options
author | Chris Wilson <chris@chris-wilson.co.uk> | 2017-03-01 10:41:27 -0500 |
---|---|---|
committer | Chris Wilson <chris@chris-wilson.co.uk> | 2017-03-01 12:57:16 -0500 |
commit | 9aceb5c15d84d4b960f5f80fba846c753554d092 (patch) | |
tree | 3b242b19a3d9b8271c55e2d92c31c7429ed88a39 /drivers/gpu | |
parent | 25b4620ee822d5f3c2deb3f1358e82763578788f (diff) |
drm/i915: Fix all intel_framebuffer_init failures to take the error path
No more direct return -EINVAL as we have to unwind the
obj->framebuffer_references.
Fixes: 24dbf51a5517 ("drm/i915: struct_mutex is not required for allocating the framebuffer")
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Link: http://patchwork.freedesktop.org/patch/msgid/20170301154128.2841-1-chris@chris-wilson.co.uk
Diffstat (limited to 'drivers/gpu')
-rw-r--r-- | drivers/gpu/drm/i915/intel_display.c | 16 |
1 files changed, 8 insertions, 8 deletions
diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c index 93371c2377b2..6d2597a4a45f 100644 --- a/drivers/gpu/drm/i915/intel_display.c +++ b/drivers/gpu/drm/i915/intel_display.c | |||
@@ -14313,7 +14313,7 @@ static int intel_framebuffer_init(struct intel_framebuffer *intel_fb, | |||
14313 | if (INTEL_INFO(dev_priv)->gen < 4 && | 14313 | if (INTEL_INFO(dev_priv)->gen < 4 && |
14314 | tiling != intel_fb_modifier_to_tiling(mode_cmd->modifier[0])) { | 14314 | tiling != intel_fb_modifier_to_tiling(mode_cmd->modifier[0])) { |
14315 | DRM_DEBUG("tiling_mode must match fb modifier exactly on gen2/3\n"); | 14315 | DRM_DEBUG("tiling_mode must match fb modifier exactly on gen2/3\n"); |
14316 | return -EINVAL; | 14316 | goto err; |
14317 | } | 14317 | } |
14318 | 14318 | ||
14319 | stride_alignment = intel_fb_stride_alignment(dev_priv, | 14319 | stride_alignment = intel_fb_stride_alignment(dev_priv, |
@@ -14358,7 +14358,7 @@ static int intel_framebuffer_init(struct intel_framebuffer *intel_fb, | |||
14358 | if (INTEL_GEN(dev_priv) > 3) { | 14358 | if (INTEL_GEN(dev_priv) > 3) { |
14359 | DRM_DEBUG("unsupported pixel format: %s\n", | 14359 | DRM_DEBUG("unsupported pixel format: %s\n", |
14360 | drm_get_format_name(mode_cmd->pixel_format, &format_name)); | 14360 | drm_get_format_name(mode_cmd->pixel_format, &format_name)); |
14361 | return -EINVAL; | 14361 | goto err; |
14362 | } | 14362 | } |
14363 | break; | 14363 | break; |
14364 | case DRM_FORMAT_ABGR8888: | 14364 | case DRM_FORMAT_ABGR8888: |
@@ -14366,7 +14366,7 @@ static int intel_framebuffer_init(struct intel_framebuffer *intel_fb, | |||
14366 | INTEL_GEN(dev_priv) < 9) { | 14366 | INTEL_GEN(dev_priv) < 9) { |
14367 | DRM_DEBUG("unsupported pixel format: %s\n", | 14367 | DRM_DEBUG("unsupported pixel format: %s\n", |
14368 | drm_get_format_name(mode_cmd->pixel_format, &format_name)); | 14368 | drm_get_format_name(mode_cmd->pixel_format, &format_name)); |
14369 | return -EINVAL; | 14369 | goto err; |
14370 | } | 14370 | } |
14371 | break; | 14371 | break; |
14372 | case DRM_FORMAT_XBGR8888: | 14372 | case DRM_FORMAT_XBGR8888: |
@@ -14375,14 +14375,14 @@ static int intel_framebuffer_init(struct intel_framebuffer *intel_fb, | |||
14375 | if (INTEL_GEN(dev_priv) < 4) { | 14375 | if (INTEL_GEN(dev_priv) < 4) { |
14376 | DRM_DEBUG("unsupported pixel format: %s\n", | 14376 | DRM_DEBUG("unsupported pixel format: %s\n", |
14377 | drm_get_format_name(mode_cmd->pixel_format, &format_name)); | 14377 | drm_get_format_name(mode_cmd->pixel_format, &format_name)); |
14378 | return -EINVAL; | 14378 | goto err; |
14379 | } | 14379 | } |
14380 | break; | 14380 | break; |
14381 | case DRM_FORMAT_ABGR2101010: | 14381 | case DRM_FORMAT_ABGR2101010: |
14382 | if (!IS_VALLEYVIEW(dev_priv) && !IS_CHERRYVIEW(dev_priv)) { | 14382 | if (!IS_VALLEYVIEW(dev_priv) && !IS_CHERRYVIEW(dev_priv)) { |
14383 | DRM_DEBUG("unsupported pixel format: %s\n", | 14383 | DRM_DEBUG("unsupported pixel format: %s\n", |
14384 | drm_get_format_name(mode_cmd->pixel_format, &format_name)); | 14384 | drm_get_format_name(mode_cmd->pixel_format, &format_name)); |
14385 | return -EINVAL; | 14385 | goto err; |
14386 | } | 14386 | } |
14387 | break; | 14387 | break; |
14388 | case DRM_FORMAT_YUYV: | 14388 | case DRM_FORMAT_YUYV: |
@@ -14392,13 +14392,13 @@ static int intel_framebuffer_init(struct intel_framebuffer *intel_fb, | |||
14392 | if (INTEL_GEN(dev_priv) < 5) { | 14392 | if (INTEL_GEN(dev_priv) < 5) { |
14393 | DRM_DEBUG("unsupported pixel format: %s\n", | 14393 | DRM_DEBUG("unsupported pixel format: %s\n", |
14394 | drm_get_format_name(mode_cmd->pixel_format, &format_name)); | 14394 | drm_get_format_name(mode_cmd->pixel_format, &format_name)); |
14395 | return -EINVAL; | 14395 | goto err; |
14396 | } | 14396 | } |
14397 | break; | 14397 | break; |
14398 | default: | 14398 | default: |
14399 | DRM_DEBUG("unsupported pixel format: %s\n", | 14399 | DRM_DEBUG("unsupported pixel format: %s\n", |
14400 | drm_get_format_name(mode_cmd->pixel_format, &format_name)); | 14400 | drm_get_format_name(mode_cmd->pixel_format, &format_name)); |
14401 | return -EINVAL; | 14401 | goto err; |
14402 | } | 14402 | } |
14403 | 14403 | ||
14404 | /* FIXME need to adjust LINOFF/TILEOFF accordingly. */ | 14404 | /* FIXME need to adjust LINOFF/TILEOFF accordingly. */ |
@@ -14411,7 +14411,7 @@ static int intel_framebuffer_init(struct intel_framebuffer *intel_fb, | |||
14411 | 14411 | ||
14412 | ret = intel_fill_fb_info(dev_priv, &intel_fb->base); | 14412 | ret = intel_fill_fb_info(dev_priv, &intel_fb->base); |
14413 | if (ret) | 14413 | if (ret) |
14414 | return ret; | 14414 | goto err; |
14415 | 14415 | ||
14416 | ret = drm_framebuffer_init(obj->base.dev, | 14416 | ret = drm_framebuffer_init(obj->base.dev, |
14417 | &intel_fb->base, | 14417 | &intel_fb->base, |