Skip to content

Commit 08fdfd2

Browse files
ShuichengLinlucasdemarchi
authored andcommitted
drm/xe/hw_engine_group: Fix double write lock release in error path
In xe_hw_engine_group_get_mode(), a write lock is acquired before calling switch_mode(), which in turn invokes xe_hw_engine_group_suspend_faulting_lr_jobs(). On failure inside xe_hw_engine_group_suspend_faulting_lr_jobs(), the write lock is released there, and then again in xe_hw_engine_group_get_mode(), leading to a double release. Fix this by keeping both acquire and release operation in xe_hw_engine_group_get_mode(). Fixes: 770bd1d ("drm/xe/hw_engine_group: Ensure safe transition between execution modes") Cc: Francois Dugast <francois.dugast@intel.com> Signed-off-by: Shuicheng Lin <shuicheng.lin@intel.com> Reviewed-by: Francois Dugast <francois.dugast@intel.com> Link: https://lore.kernel.org/r/20250925023145.1203004-2-shuicheng.lin@intel.com Signed-off-by: Lucas De Marchi <lucas.demarchi@intel.com> (cherry picked from commit 662d98b8b373007fa1b08ba93fee11f6fd3e387c) Signed-off-by: Lucas De Marchi <lucas.demarchi@intel.com>
1 parent 2d1684a commit 08fdfd2

File tree

1 file changed

+1
-5
lines changed

1 file changed

+1
-5
lines changed

drivers/gpu/drm/xe/xe_hw_engine_group.c

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -213,17 +213,13 @@ static int xe_hw_engine_group_suspend_faulting_lr_jobs(struct xe_hw_engine_group
213213

214214
err = q->ops->suspend_wait(q);
215215
if (err)
216-
goto err_suspend;
216+
return err;
217217
}
218218

219219
if (need_resume)
220220
xe_hw_engine_group_resume_faulting_lr_jobs(group);
221221

222222
return 0;
223-
224-
err_suspend:
225-
up_write(&group->mode_sem);
226-
return err;
227223
}
228224

229225
/**

0 commit comments

Comments
 (0)