From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932888AbcGELXv (ORCPT ); Tue, 5 Jul 2016 07:23:51 -0400 Received: from forward-corp1m.cmail.yandex.net ([5.255.216.100]:59596 "EHLO forward-corp1m.cmail.yandex.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755091AbcGELXd (ORCPT ); Tue, 5 Jul 2016 07:23:33 -0400 Authentication-Results: smtpcorp1m.mail.yandex.net; dkim=pass header.i=@yandex-team.ru Subject: [PATCH] sched/core: really pretend early bootup to be a normal task From: Konstantin Khlebnikov To: Peter Zijlstra , Ingo Molnar , linux-kernel@vger.kernel.org Cc: Sasha Levin , Yao Dongdong Date: Tue, 05 Jul 2016 14:23:23 +0300 Message-ID: <146771780366.86926.5349525389994177302.stgit@buzz> User-Agent: StGit/0.17.1-dirty MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Commit 1b537c7d1e58 ("sched/core: Remove check of p->sched_class") placed "current->sched_class = &fair_sched_class" before call of init_idle() which immediately set sched_class back to idle_sched_class. This patch reverts this piece because after commit de9b8f5dcbd9 ("sched: Fix crash trying to dequeue/enqueue the idle thread") init_idle() doesn't call do_set_cpus_allowed() and nobody will dereference ->sched_class. [ Probably this pretending is no longer required and could be removed, or maybe it helps in catching bugs like sleeping during early bootup? ] Signed-off-by: Konstantin Khlebnikov Fixes: 1b537c7d1e58 ("sched/core: Remove check of p->sched_class") Cc: Yao Dongdong Cc: Peter Zijlstra Cc: Ingo Molnar Cc: Sasha Levin --- kernel/sched/core.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/kernel/sched/core.c b/kernel/sched/core.c index 51d7105f529a..c23aee77d10d 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@ -7481,11 +7481,6 @@ void __init sched_init(void) enter_lazy_tlb(&init_mm, current); /* - * During early bootup we pretend to be a normal task: - */ - current->sched_class = &fair_sched_class; - - /* * Make us the idle thread. Technically, schedule() should not be * called from this thread, however somewhere below it might be, * but because we are the idle thread, we just pick up running again @@ -7495,6 +7490,11 @@ void __init sched_init(void) calc_load_update = jiffies + LOAD_FREQ; + /* + * During early bootup we pretend to be a normal task: + */ + current->sched_class = &fair_sched_class; + #ifdef CONFIG_SMP zalloc_cpumask_var(&sched_domains_tmpmask, GFP_NOWAIT); /* May be allocated at isolcpus cmdline parse time */