]> git.baikalelectronics.ru Git - kernel.git/commitdiff
drm/i915/display: check if compressed_llb was allocated
authorMatthew Auld <matthew.auld@intel.com>
Thu, 1 Jul 2021 09:03:26 +0000 (10:03 +0100)
committerMatthew Auld <matthew.auld@intel.com>
Fri, 2 Jul 2021 08:53:13 +0000 (09:53 +0100)
If we hit the error path here we unconditionally call
i915_gem_stolen_remove_node, even though we only allocate the
compressed_llb on older platforms. Therefore we should first check that
we actually allocated the node before trying to remove it.

References: https://gitlab.freedesktop.org/drm/intel/-/issues/3709
Fixes: 46b2c40e0af3 ("drm/i915/fbc: Allocate llb before cfb")
Signed-off-by: Matthew Auld <matthew.auld@intel.com>
Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
Cc: José Roberto de Souza <jose.souza@intel.com>
Reviewed-by: José Roberto de Souza <jose.souza@intel.com>
Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20210701090326.1056452-1-matthew.auld@intel.com
drivers/gpu/drm/i915/display/intel_fbc.c

index 7dc72e4a4656bc2989bfcc35db3cbbb365ea233a..82effb64a3b9c4175c6180654de37e1ba42ab490 100644 (file)
@@ -516,7 +516,8 @@ static int intel_fbc_alloc_cfb(struct drm_i915_private *dev_priv,
        return 0;
 
 err_llb:
-       i915_gem_stolen_remove_node(dev_priv, &fbc->compressed_llb);
+       if (drm_mm_node_allocated(&fbc->compressed_llb))
+               i915_gem_stolen_remove_node(dev_priv, &fbc->compressed_llb);
 err:
        if (drm_mm_initialized(&dev_priv->mm.stolen))
                drm_info_once(&dev_priv->drm, "not enough stolen space for compressed buffer (need %d more bytes), disabling. Hint: you may be able to increase stolen memory size in the BIOS to avoid this.\n", size);