diff options
| -rw-r--r-- | kernel/sched/fair.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c index df2e6dd2c665..18ce8cb02272 100644 --- a/kernel/sched/fair.c +++ b/kernel/sched/fair.c @@ -10536,7 +10536,6 @@ redo: * correctly treated as an imbalance. */ env.flags |= LBF_ALL_PINNED; - env.loop_max = min(sysctl_sched_nr_migrate, busiest->nr_running); more_balance: raw_spin_lock_irqsave(&busiest->lock, flags); @@ -10550,6 +10549,12 @@ more_balance: } /* + * Set loop_max when rq's lock is taken to prevent a race. + */ + env.loop_max = min(sysctl_sched_nr_migrate, + busiest->nr_running); + + /* * cur_ld_moved - load moved in current iteration * ld_moved - cumulative load moved across iterations */ |
