Static analysis issue: The u64 array workload->shadow_mm->ppgtt_mm.shadow_pdps is cast to a void pointer and passed as a u32 array to set_context_pdp_root_pointer as a part of update_shadow_pdps. This isn't wrong, per se, but we should properly cast it to an appropriately-sized u32 array before submission.
Signed-off-by: Jonathan Cavitt <[email protected]> --- drivers/gpu/drm/i915/gvt/scheduler.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/drm/i915/gvt/scheduler.c b/drivers/gpu/drm/i915/gvt/scheduler.c index 15fdd514ca83..1a95c9f76faa 100644 --- a/drivers/gpu/drm/i915/gvt/scheduler.c +++ b/drivers/gpu/drm/i915/gvt/scheduler.c @@ -72,6 +72,7 @@ static void update_shadow_pdps(struct intel_vgpu_workload *workload) { struct execlist_ring_context *shadow_ring_context; struct intel_context *ctx = workload->req->context; + u32 pdp[8]; if (WARN_ON(!workload->shadow_mm)) return; @@ -79,9 +80,10 @@ static void update_shadow_pdps(struct intel_vgpu_workload *workload) if (WARN_ON(!atomic_read(&workload->shadow_mm->pincount))) return; + memcpy(pdp, workload->shadow_mm->ppgtt_mm.shadow_pdps, + sizeof(u64) * ARRAY_SIZE(workload->shadow_mm->ppgtt_mm.shadow_pdps)); shadow_ring_context = (struct execlist_ring_context *)ctx->lrc_reg_state; - set_context_pdp_root_pointer(shadow_ring_context, - (void *)workload->shadow_mm->ppgtt_mm.shadow_pdps); + set_context_pdp_root_pointer(shadow_ring_context, pdp); } /* -- 2.43.0
