Commit 321d6b4b authored by Matthew Auld's avatar Matthew Auld Committed by Matthew Brost
Browse files

drm/xe: fixup xe_alloc_pf_queue



kzalloc expects number of bytes, therefore we should convert the number
of dw into bytes, otherwise we are likely just accessing beyond the
array causing all kinds of carnage. Also fixup the error handling while
we are here.

v2:
 - Prefer kcalloc (dim)

Fixes: 3338e4f9 ("drm/xe: Use topology to determine page fault queue size")
Signed-off-by: default avatarMatthew Auld <matthew.auld@intel.com>
Cc: Stuart Summers <stuart.summers@intel.com>
Cc: Matthew Brost <matthew.brost@intel.com>
Reviewed-by: default avatarNirmoy Das <nirmoy.das@intel.com>
Signed-off-by: default avatarMatthew Brost <matthew.brost@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20240821171917.417386-2-matthew.auld@intel.com
parent 40520283
Loading
Loading
Loading
Loading
+4 −1
Original line number Diff line number Diff line
@@ -417,7 +417,10 @@ static int xe_alloc_pf_queue(struct xe_gt *gt, struct pf_queue *pf_queue)
		(num_eus + XE_NUM_HW_ENGINES) * PF_MSG_LEN_DW;

	pf_queue->gt = gt;
	pf_queue->data = kzalloc(pf_queue->num_dw, GFP_KERNEL);
	pf_queue->data = kcalloc(pf_queue->num_dw, sizeof(u32), GFP_KERNEL);
	if (!pf_queue->data)
		return -ENOMEM;

	spin_lock_init(&pf_queue->lock);
	INIT_WORK(&pf_queue->worker, pf_queue_work_func);