]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
drm/xe: fixup xe_alloc_pf_queue
authorMatthew Auld <matthew.auld@intel.com>
Wed, 21 Aug 2024 17:19:18 +0000 (18:19 +0100)
committerMatthew Brost <matthew.brost@intel.com>
Thu, 22 Aug 2024 02:38:24 +0000 (19:38 -0700)
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: 3338e4f90c14 ("drm/xe: Use topology to determine page fault queue size")
Signed-off-by: Matthew Auld <matthew.auld@intel.com>
Cc: Stuart Summers <stuart.summers@intel.com>
Cc: Matthew Brost <matthew.brost@intel.com>
Reviewed-by: Nirmoy Das <nirmoy.das@intel.com>
Signed-off-by: Matthew Brost <matthew.brost@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20240821171917.417386-2-matthew.auld@intel.com
drivers/gpu/drm/xe/xe_gt_pagefault.c

index 401c0527d9140e5f26660a30697f8cf00cafa1f1..0be4687bfc2038ec9bc1f78be446c3148a862415 100644 (file)
@@ -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);