summaryrefslogtreecommitdiff
path: root/drivers/gpu
diff options
context:
space:
mode:
authorRaag Jadav <raag.jadav@intel.com>2026-06-02 10:18:42 +0530
committerMatthew Brost <matthew.brost@intel.com>2026-06-10 09:33:18 -0700
commit4dcfcdc9fbb5efef21e149adf349d42d84c9da04 (patch)
treed83dccc2072546a25d046b7d72c36321cadcdb66 /drivers/gpu
parent68938cc08e23a94fd881e845837ff918de005ce7 (diff)
downloadlwn-4dcfcdc9fbb5efef21e149adf349d42d84c9da04.tar.gz
lwn-4dcfcdc9fbb5efef21e149adf349d42d84c9da04.zip
drm/xe/drm_ras: Make counter allocation drm managed
cleanup_node_param() is not registered for previous node in case of counter allocation failure, which results in stale memory of previous node that isn't cleaned up on unwind. Fix this using drm managed allocation, which is guaranteed to be cleaned up on unwind. Fixes: b40db12b542f ("drm/xe/xe_drm_ras: Add support for XE DRM RAS") Signed-off-by: Raag Jadav <raag.jadav@intel.com> Reviewed-by: Riana Tauro <riana.tauro@intel.com> Link: https://patch.msgid.link/20260602044919.702209-3-raag.jadav@intel.com Signed-off-by: Matt Roper <matthew.d.roper@intel.com> (cherry picked from commit 58d77c77ea0c5cb2b755ebe23e973c8272acd896) Signed-off-by: Matthew Brost <matthew.brost@intel.com>
Diffstat (limited to 'drivers/gpu')
-rw-r--r--drivers/gpu/drm/xe/xe_drm_ras.c3
1 files changed, 1 insertions, 2 deletions
diff --git a/drivers/gpu/drm/xe/xe_drm_ras.c b/drivers/gpu/drm/xe/xe_drm_ras.c
index e07dc23a155e..7357100034e2 100644
--- a/drivers/gpu/drm/xe/xe_drm_ras.c
+++ b/drivers/gpu/drm/xe/xe_drm_ras.c
@@ -52,7 +52,7 @@ static struct xe_drm_ras_counter *allocate_and_copy_counters(struct xe_device *x
struct xe_drm_ras_counter *counter;
int i;
- counter = kcalloc(DRM_XE_RAS_ERR_COMP_MAX, sizeof(*counter), GFP_KERNEL);
+ counter = drmm_kcalloc(&xe->drm, DRM_XE_RAS_ERR_COMP_MAX, sizeof(*counter), GFP_KERNEL);
if (!counter)
return ERR_PTR(-ENOMEM);
@@ -104,7 +104,6 @@ static void cleanup_node_param(struct xe_drm_ras *ras, const enum drm_xe_ras_err
{
struct drm_ras_node *node = &ras->node[severity];
- kfree(ras->info[severity]);
ras->info[severity] = NULL;
kfree(node->device_name);