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);