drm/i915: Don't oops in dumb_create ioctl if we have no crtcs
authorVille Syrjälä <ville.syrjala@linux.intel.com>
Wed, 6 Nov 2019 17:23:49 +0000 (19:23 +0200)
committerVille Syrjälä <ville.syrjala@linux.intel.com>
Fri, 8 Nov 2019 13:43:21 +0000 (15:43 +0200)
Make sure we have a crtc before probing its primary plane's
max stride. Initially I thought we can't get this far without
crtcs, but looks like we can via the dumb_create ioctl.

Not sure if we shouldn't disable dumb buffer support entirely
when we have no crtcs, but that would require some amount of work
as the only thing currently being checked is dev->driver->dumb_create
which we'd have to convert to some device specific dynamic thing.

Cc: stable@vger.kernel.org
Reported-by: Mika Kuoppala <mika.kuoppala@linux.intel.com>
Fixes: aa5ca8b7421c ("drm/i915: Align dumb buffer stride to 4k to allow for gtt remapping")
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20191106172349.11987-1-ville.syrjala@linux.intel.com
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
drivers/gpu/drm/i915/display/intel_display.c

index 551de2baa56935efd57cfcb8c5ecfbafccf78fb2..5f33405541495ebd5a98e50f5ea6cdb6cd97debd 100644 (file)
@@ -2544,6 +2544,9 @@ u32 intel_plane_fb_max_stride(struct drm_i915_private *dev_priv,
         * the highest stride limits of them all.
         */
        crtc = intel_get_crtc_for_pipe(dev_priv, PIPE_A);
+       if (!crtc)
+               return 0;
+
        plane = to_intel_plane(crtc->base.primary);
 
        return plane->max_stride(plane, pixel_format, modifier,