]> 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)
committerMatthew Brost <matthew.brost@intel.com>
Wed, 3 Dec 2025 21:22:57 +0000 (13:22 -0800)
Do not reference the loop variable job after the loop has exited.
Instead, save the job from the last iteration of the loop.

Fixes: 00937fe1921a ("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
drivers/gpu/drm/xe/xe_guc_submit.c

index 3ca2558c8c96e619adc41ad29640ba36a5fb0aa9..f3f2c8556a66b1529395c99e283e61baca72742f 100644 (file)
@@ -2264,10 +2264,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",