]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
drm/xe/gsc: Fix BO leak on error in query_compatibility_version()
authorShuicheng Lin <shuicheng.lin@intel.com>
Fri, 17 Apr 2026 16:33:08 +0000 (16:33 +0000)
committerRodrigo Vivi <rodrigo.vivi@intel.com>
Wed, 29 Apr 2026 16:51:20 +0000 (12:51 -0400)
When xe_gsc_read_out_header() fails, query_compatibility_version()
returns directly instead of jumping to the out_bo label. This skips
the xe_bo_unpin_map_no_vm() call, leaving the BO pinned and mapped
with no remaining reference to free it.

Fix by using goto out_bo so the error path properly cleans up the BO,
consistent with the other error handling in the same function.

Fixes: 0881cbe04077 ("drm/xe/gsc: Query GSC compatibility version")
Cc: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
Reviewed-by: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
Link: https://patch.msgid.link/20260417163308.3416147-1-shuicheng.lin@intel.com
Signed-off-by: Shuicheng Lin <shuicheng.lin@intel.com>
(cherry picked from commit 8de86d0a843c32ca9d36864bdb92f0376a830bce)
Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
drivers/gpu/drm/xe/xe_gsc.c

index e5c234f3d795ee14e0b50522987f3404cb515379..0d13e357fb43c53b0d909d394acbb16904bd47c8 100644 (file)
@@ -166,7 +166,7 @@ static int query_compatibility_version(struct xe_gsc *gsc)
                                     &rd_offset);
        if (err) {
                xe_gt_err(gt, "HuC: invalid GSC reply for version query (err=%d)\n", err);
-               return err;
+               goto out_bo;
        }
 
        compat->major = version_query_rd(xe, &bo->vmap, rd_offset, proj_major);