]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
drm/xe/drm_ras: Make counter allocation drm managed
authorRaag Jadav <raag.jadav@intel.com>
Tue, 2 Jun 2026 04:48:42 +0000 (10:18 +0530)
committerMatthew Brost <matthew.brost@intel.com>
Tue, 16 Jun 2026 17:18:27 +0000 (10:18 -0700)
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>
drivers/gpu/drm/xe/xe_drm_ras.c

index c21c8b428de6b8bdae87a0e60e0a1f62a14de7b1..c1d5ac198a7c9daf5b5dd1d4aec97468546c98e6 100644 (file)
@@ -80,7 +80,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);
 
@@ -135,7 +135,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);