Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 46ece1ae authored by Linux Build Service Account's avatar Linux Build Service Account Committed by Gerrit - the friendly Code Review server
Browse files

Merge "sched/walt: Fix the memory leak of idle task load pointers"

parents 78540133 f395d581
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -378,7 +378,7 @@ extern int lockdep_tasklist_lock_is_held(void);
extern void sched_init(void);
extern void sched_init_smp(void);
extern asmlinkage void schedule_tail(struct task_struct *prev);
extern void init_idle(struct task_struct *idle, int cpu, bool hotplug);
extern void init_idle(struct task_struct *idle, int cpu);
extern void init_idle_bootup_task(struct task_struct *idle);

extern cpumask_var_t cpu_isolated_map;
+1 −1
Original line number Diff line number Diff line
@@ -1769,7 +1769,7 @@ struct task_struct *fork_idle(int cpu)
			    cpu_to_node(cpu));
	if (!IS_ERR(task)) {
		init_idle_pids(task->pids);
		init_idle(task, cpu, false);
		init_idle(task, cpu);
	}

	return task;
+4 −7
Original line number Diff line number Diff line
@@ -2447,7 +2447,7 @@ int sched_fork(unsigned long clone_flags, struct task_struct *p)
	unsigned long flags;
	int cpu;

	init_new_task_load(p, false);
	init_new_task_load(p);
	cpu = get_cpu();

	__sched_fork(clone_flags, p);
@@ -5407,19 +5407,15 @@ void init_idle_bootup_task(struct task_struct *idle)
 * init_idle - set up an idle thread for a given CPU
 * @idle: task in question
 * @cpu: cpu the idle task belongs to
 * @cpu_up: differentiate between initial boot vs hotplug
 *
 * NOTE: this function does not set the idle thread's NEED_RESCHED
 * flag, to make booting more robust.
 */
void init_idle(struct task_struct *idle, int cpu, bool cpu_up)
void init_idle(struct task_struct *idle, int cpu)
{
	struct rq *rq = cpu_rq(cpu);
	unsigned long flags;

	if (!cpu_up)
		init_new_task_load(idle, true);

	raw_spin_lock_irqsave(&idle->pi_lock, flags);
	raw_spin_lock(&rq->lock);

@@ -8571,7 +8567,8 @@ void __init sched_init(void)
	 * but because we are the idle thread, we just pick up running again
	 * when this runqueue becomes "idle".
	 */
	init_idle(current, smp_processor_id(), false);
	init_idle(current, smp_processor_id());
	init_new_task_load(current);

	calc_load_update = jiffies + LOAD_FREQ;

+1 −4
Original line number Diff line number Diff line
@@ -1544,7 +1544,7 @@ void free_task_load_ptrs(struct task_struct *p)
	p->ravg.prev_window_cpu = NULL;
}

void init_new_task_load(struct task_struct *p, bool idle_task)
void init_new_task_load(struct task_struct *p)
{
	int i;
	u32 init_load_windows = sched_init_task_load_windows;
@@ -1571,9 +1571,6 @@ void init_new_task_load(struct task_struct *p, bool idle_task)
	/* Don't have much choice. CPU frequency would be bogus */
	BUG_ON(!p->ravg.curr_window_cpu || !p->ravg.prev_window_cpu);

	if (idle_task)
		return;

	if (init_load_pct)
		init_load_windows = div64_u64((u64)init_load_pct *
			  (u64)sched_ravg_window, 100);
+2 −2
Original line number Diff line number Diff line
@@ -1154,7 +1154,7 @@ extern unsigned int __read_mostly sched_downmigrate;
extern unsigned int  __read_mostly sysctl_sched_spill_nr_run;
extern unsigned int  __read_mostly sched_load_granule;

extern void init_new_task_load(struct task_struct *p, bool idle_task);
extern void init_new_task_load(struct task_struct *p);
extern u64 sched_ktime_clock(void);
extern int got_boost_kick(void);
extern int register_cpu_cycle_counter_cb(struct cpu_cycle_counter_cb *cb);
@@ -1644,7 +1644,7 @@ static inline struct sched_cluster *rq_cluster(struct rq *rq)
	return NULL;
}

static inline void init_new_task_load(struct task_struct *p, bool idle_task)
static inline void init_new_task_load(struct task_struct *p)
{
}

Loading