]> git.hungrycats.org Git - linux/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)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 10 Oct 2024 10:00:43 +0000 (12:00 +0200)
[ Upstream commit 321d6b4b9cbe3dd0bc99937d5e5b4d730b5b5798 ]

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
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/gpu/drm/xe/xe_gt_pagefault.c

index ee78b4e47dfcb87e89002716cea0b0161084750f..28cf90e8989c6dceb8854b7f247beb895ab4ec4b 100644 (file)
@@ -437,7 +437,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);