summaryrefslogtreecommitdiff
path: root/drivers/gpu
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu')
-rw-r--r--drivers/gpu/drm/i915/intel_display.c30
1 files changed, 12 insertions, 18 deletions
diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
index 9655f1f1ae85..9aa90abab4ba 100644
--- a/drivers/gpu/drm/i915/intel_display.c
+++ b/drivers/gpu/drm/i915/intel_display.c
@@ -12278,10 +12278,8 @@ static int __intel_set_mode(struct drm_crtc *modeset_crtc,
return ret;
crtc_state_copy = kmalloc(sizeof(*crtc_state_copy), GFP_KERNEL);
- if (!crtc_state_copy) {
- ret = -ENOMEM;
- goto done;
- }
+ if (!crtc_state_copy)
+ return -ENOMEM;
for_each_crtc_in_state(state, crtc, crtc_state, i) {
if (!needs_modeset(crtc_state))
@@ -12337,6 +12335,7 @@ static int __intel_set_mode(struct drm_crtc *modeset_crtc,
hdisplay, vdisplay,
x << 16, y << 16,
hdisplay << 16, vdisplay << 16);
+ WARN_ON(ret != 0);
}
/* Now enable the clocks, plane, pipe, and connectors that we set up. */
@@ -12351,21 +12350,16 @@ static int __intel_set_mode(struct drm_crtc *modeset_crtc,
}
/* FIXME: add subpixel order */
-done:
- if (ret == 0 && pipe_config) {
- struct intel_crtc *intel_crtc = to_intel_crtc(modeset_crtc);
-
- /* The pipe_config will be freed with the atomic state, so
- * make a copy. */
- memcpy(crtc_state_copy, intel_crtc->config,
- sizeof *crtc_state_copy);
- intel_crtc->config = crtc_state_copy;
- intel_crtc->base.state = &crtc_state_copy->base;
- } else {
- kfree(crtc_state_copy);
- }
- return ret;
+ intel_crtc = to_intel_crtc(modeset_crtc);
+
+ /* The pipe_config will be freed with the atomic state, so
+ * make a copy. */
+ memcpy(crtc_state_copy, intel_crtc->config, sizeof *crtc_state_copy);
+ intel_crtc->config = crtc_state_copy;
+ intel_crtc->base.state = &crtc_state_copy->base;
+
+ return 0;
}
static int intel_set_mode_with_config(struct drm_crtc *crtc,