mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-07-22 03:27:30 -04:00
drm/xe/hw_engine: Fix double-free of managed BO in error path
The error path in hw_engine_init() explicitly frees a BO allocated
with xe_managed_bo_create_pin_map() via xe_bo_unpin_map_no_vm().
Since the managed BO already has a devm cleanup action registered,
this causes a double-free when devm unwinds during probe failure.
Remove the explicit free and let devm handle it, consistent with
all other xe_managed_bo_create_pin_map() callers.
Fixes: 0e1a47fcab ("drm/xe: Add a helper for DRM device-lifetime BO create")
Assisted-by: Claude:claude-opus-4.6
Reviewed-by: Zongyao Bai <zongyao.bai@intel.com>
Link: https://patch.msgid.link/20260626210631.3887291-1-shuicheng.lin@intel.com
Signed-off-by: Shuicheng Lin <shuicheng.lin@intel.com>
(cherry picked from commit e459a3bdeb117be496d7f229e2ea1f6c9fe4080b)
Signed-off-by: Thomas Hellström <thomas.hellstrom@linux.intel.com>
This commit is contained in:
committed by
Thomas Hellström
parent
0c56ea482a
commit
7ac3cae7a2
@@ -628,7 +628,7 @@ static int hw_engine_init(struct xe_gt *gt, struct xe_hw_engine *hwe,
|
||||
hwe->exl_port = xe_execlist_port_create(xe, hwe);
|
||||
if (IS_ERR(hwe->exl_port)) {
|
||||
err = PTR_ERR(hwe->exl_port);
|
||||
goto err_hwsp;
|
||||
goto err_name;
|
||||
}
|
||||
} else {
|
||||
/* GSCCS has a special interrupt for reset */
|
||||
@@ -648,8 +648,6 @@ static int hw_engine_init(struct xe_gt *gt, struct xe_hw_engine *hwe,
|
||||
|
||||
return devm_add_action_or_reset(xe->drm.dev, hw_engine_fini, hwe);
|
||||
|
||||
err_hwsp:
|
||||
xe_bo_unpin_map_no_vm(hwe->hwsp);
|
||||
err_name:
|
||||
hwe->name = NULL;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user