diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c
index 035e3864e046f0a41c051172e5f22e03e3226cf7..6a25aa14d0673b6d1bbd38424e7b927f0689e02a 100644
--- a/kernel/sched/fair.c
+++ b/kernel/sched/fair.c
@@ -5675,8 +5675,10 @@ select_task_rq_fair(struct task_struct *p, int prev_cpu, int sd_flag, int wake_f
if (!sd) {
int sync_used = 0;
+ bool about_to_idle = (cpu_rq(cpu)->nr_running < 2);
- if (sysctl_sched_sync_hint_enable && sync) {
+ if (sysctl_sched_sync_hint_enable && sync
+ && about_to_idle) {
cpumask_t search_cpus;
cpumask_and(&search_cpus, tsk_cpus_allowed(p),
cpu_online_mask);