diff options
author | Chris Wilson <chris@chris-wilson.co.uk> | 2013-08-02 15:39:49 -0400 |
---|---|---|
committer | Daniel Vetter <daniel.vetter@ffwll.ch> | 2013-08-04 15:13:43 -0400 |
commit | cd234b0bfd5ab012e42274b24aae420fa1823d58 (patch) | |
tree | 5085484db540480f1492358e3c40a9bccdfe38c7 /drivers/gpu/drm/i915 | |
parent | 257a7ffcfaf68718c963db6e9978d1f4f647986b (diff) |
drm/i915: Do not dereference NULL crtc or fb until after checking
Fixes regression from
commit 4906557eb37b7fef84fad4304acef6dedf919880
Author: Rodrigo Vivi <rodrigo.vivi@gmail.com>
Date: Thu Jul 11 18:45:05 2013 -0300
drm/i915: Hook PSR functionality
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=67526
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Rodrigo Vivi <rodrigo.vivi@gmail.com>
Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
Signed-off-by: Ben Widawsky <ben@bwidawsk.net>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Diffstat (limited to 'drivers/gpu/drm/i915')
-rw-r--r-- | drivers/gpu/drm/i915/intel_dp.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c index 4a7ba5ea9ee3..d0c3f9b08387 100644 --- a/drivers/gpu/drm/i915/intel_dp.c +++ b/drivers/gpu/drm/i915/intel_dp.c | |||
@@ -1545,12 +1545,21 @@ static bool intel_edp_psr_match_conditions(struct intel_dp *intel_dp) | |||
1545 | return false; | 1545 | return false; |
1546 | } | 1546 | } |
1547 | 1547 | ||
1548 | crtc = dig_port->base.base.crtc; | ||
1549 | if (crtc == NULL) { | ||
1550 | DRM_DEBUG_KMS("crtc not active for PSR\n"); | ||
1551 | dev_priv->no_psr_reason = PSR_CRTC_NOT_ACTIVE; | ||
1552 | return false; | ||
1553 | } | ||
1554 | |||
1555 | intel_crtc = to_intel_crtc(crtc); | ||
1548 | if (!intel_crtc->active || !crtc->fb || !crtc->mode.clock) { | 1556 | if (!intel_crtc->active || !crtc->fb || !crtc->mode.clock) { |
1549 | DRM_DEBUG_KMS("crtc not active for PSR\n"); | 1557 | DRM_DEBUG_KMS("crtc not active for PSR\n"); |
1550 | dev_priv->no_psr_reason = PSR_CRTC_NOT_ACTIVE; | 1558 | dev_priv->no_psr_reason = PSR_CRTC_NOT_ACTIVE; |
1551 | return false; | 1559 | return false; |
1552 | } | 1560 | } |
1553 | 1561 | ||
1562 | obj = to_intel_framebuffer(crtc->fb)->obj; | ||
1554 | if (obj->tiling_mode != I915_TILING_X || | 1563 | if (obj->tiling_mode != I915_TILING_X || |
1555 | obj->fence_reg == I915_FENCE_REG_NONE) { | 1564 | obj->fence_reg == I915_FENCE_REG_NONE) { |
1556 | DRM_DEBUG_KMS("PSR condition failed: fb not tiled or fenced\n"); | 1565 | DRM_DEBUG_KMS("PSR condition failed: fb not tiled or fenced\n"); |