When p->numa_faults_locality[2] > 0, numa_scan_period is doubled, but
this array will never be cleared, which causes scanning period always
reaching its max value. This patch clears numa_faults_locality after
numa_scan_period being doubled to fix this bug.

Signed-off-by: Tianchen Ding <[email protected]>
Signed-off-by: Michael Wang <[email protected]>
---
 kernel/sched/fair.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c
index 1a68a0536add..a61ee408202e 100644
--- a/kernel/sched/fair.c
+++ b/kernel/sched/fair.c
@@ -2180,6 +2180,8 @@ static void update_task_scan_period(struct task_struct *p,
                p->mm->numa_next_scan = jiffies +
                        msecs_to_jiffies(p->numa_scan_period);
 
+               memset(p->numa_faults_locality, 0,
+                       sizeof(p->numa_faults_locality));
                return;
        }
 
-- 
2.25.1

Reply via email to