diff --git a/kernel/sched/core.c b/kernel/sched/core.c
index 9a1d7e4faa2c6de27b6917d5843edea1dc17fa4b..1493b0a118d3cff3aa72ffc251f83ca0644e2416 100644
--- a/kernel/sched/core.c
+++ b/kernel/sched/core.c
@@ -2130,10 +2130,6 @@ static void __sched_fork(unsigned long clone_flags, struct task_struct *p)
 	memset(&p->se.statistics, 0, sizeof(p->se.statistics));
 #endif
 
-#ifdef CONFIG_CPU_FREQ_STAT
-	cpufreq_task_stats_init(p);
-#endif
-
 	RB_CLEAR_NODE(&p->dl.rb_node);
 	init_dl_task_timer(&p->dl);
 	__dl_clear_params(p);
@@ -2219,6 +2215,10 @@ int sched_fork(unsigned long clone_flags, struct task_struct *p)
 	unsigned long flags;
 	int cpu = get_cpu();
 
+#ifdef CONFIG_CPU_FREQ_STAT
+	cpufreq_task_stats_init(p);
+#endif
+
 	__sched_fork(clone_flags, p);
 	/*
 	 * We mark the process as running here. This guarantees that