Re: [PATCH] drm/i915: Use sseu size for determining eu_regs[]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@xxxxxxxxx>

On 13/03/18 11:31, Chris Wilson wrote:
eu_regs[] is written 2*max_slices times (like s_reg[]) but oddly read
2*max_slices + max_subslices/2 times. Allocate the array large enough
for the writes to avoid overwriting our stack and worry about the logic
later.

Fixes: 7aa0b14ede64 ("drm/i915: Remove variable length arrays from sseu debugfs printers")
Signed-off-by: Chris Wilson <chris@xxxxxxxxxxxxxxxxxx>
Cc: Lionel Landwerlin <lionel.g.landwerlin@xxxxxxxxx>
Cc: Tvrtko Ursulin <tvrtko.ursulin@xxxxxxxxx>
Cc: Matthew Auld <matthew.auld@xxxxxxxxx>
---
  drivers/gpu/drm/i915/i915_debugfs.c | 8 ++++++--
  1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/i915/i915_debugfs.c b/drivers/gpu/drm/i915/i915_debugfs.c
index 0eac7dcdddbf..bc3f7d546d53 100644
--- a/drivers/gpu/drm/i915/i915_debugfs.c
+++ b/drivers/gpu/drm/i915/i915_debugfs.c
@@ -4345,8 +4345,9 @@ static void cherryview_sseu_device_status(struct drm_i915_private *dev_priv,
  static void gen10_sseu_device_status(struct drm_i915_private *dev_priv,
  				     struct sseu_dev_info *sseu)
  {
+#define SS_MAX 6
  	const struct intel_device_info *info = INTEL_INFO(dev_priv);
-	u32 s_reg[6], eu_reg[2 * 4], eu_mask[2];
+	u32 s_reg[SS_MAX], eu_reg[2 * SS_MAX], eu_mask[2];
  	int s, ss;
for (s = 0; s < info->sseu.max_slices; s++) {
@@ -4394,13 +4395,15 @@ static void gen10_sseu_device_status(struct drm_i915_private *dev_priv,
  						      eu_cnt);
  		}
  	}
+#undef SS_MAX
  }
static void gen9_sseu_device_status(struct drm_i915_private *dev_priv,
  				    struct sseu_dev_info *sseu)
  {
+#define SS_MAX 3
  	const struct intel_device_info *info = INTEL_INFO(dev_priv);
-	u32 s_reg[3], eu_reg[2 * 4], eu_mask[2];
+	u32 s_reg[SS_MAX], eu_reg[2 * SS_MAX], eu_mask[2];
  	int s, ss;
for (s = 0; s < info->sseu.max_slices; s++) {
@@ -4448,6 +4451,7 @@ static void gen9_sseu_device_status(struct drm_i915_private *dev_priv,
  						      eu_cnt);
  		}
  	}
+#undef SS_MAX
  }
static void broadwell_sseu_device_status(struct drm_i915_private *dev_priv,


_______________________________________________
Intel-gfx mailing list
Intel-gfx@xxxxxxxxxxxxxxxxxxxxx
https://lists.freedesktop.org/mailman/listinfo/intel-gfx




[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]
  Powered by Linux