]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
drm/xe: Do not reference loop variable directly
authorMatthew Brost <matthew.brost@intel.com>
Wed, 3 Dec 2025 01:18:09 +0000 (17:18 -0800)
committerThomas Hellström <thomas.hellstrom@linux.intel.com>
Mon, 15 Dec 2025 13:13:58 +0000 (14:13 +0100)
Do not reference the loop variable job after the loop has exited.
Instead, save the job from the last iteration of the loop.

Fixes: 3d98a7164da6 ("drm/xe/vf: Start re-emission from first unsignaled job during VF migration")
Reported-by: kernel test robot <lkp@intel.com>
Reported-by: Dan Carpenter <dan.carpenter@linaro.org>
Closes: https://lore.kernel.org/r/202511291102.jnnKP6IB-lkp@intel.com/
Signed-off-by: Matthew Brost <matthew.brost@intel.com>
Reviewed-by: Dnyaneshwar Bhadane <dnyaneshwar.bhadane@intel.com>
Link: https://patch.msgid.link/20251203011809.968893-1-matthew.brost@intel.com
(cherry picked from commit 76ce2313709f13a6adbcaa1a43a8539c8f509f6a)
Signed-off-by: Thomas Hellström <thomas.hellstrom@linux.intel.com>
drivers/gpu/drm/xe/xe_guc_submit.c

index ed7be50b2f7208ce9ce05f45cb4494a03cb6e6bf..c0819377ce6e43ef9884c87bcbd7354514bac5ad 100644 (file)
@@ -2253,10 +2253,11 @@ static void guc_exec_queue_unpause_prepare(struct xe_guc *guc,
                                           struct xe_exec_queue *q)
 {
        struct xe_gpu_scheduler *sched = &q->guc->sched;
-       struct xe_sched_job *job = NULL;
+       struct xe_sched_job *job = NULL, *__job;
        bool restore_replay = false;
 
-       list_for_each_entry(job, &sched->base.pending_list, drm.list) {
+       list_for_each_entry(__job, &sched->base.pending_list, drm.list) {
+               job = __job;
                restore_replay |= job->restore_replay;
                if (restore_replay) {
                        xe_gt_dbg(guc_to_gt(guc), "Replay JOB - guc_id=%d, seqno=%d",