From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail.linutronix.de (146.0.238.70:993) by crypto-ml.lab.linutronix.de with IMAP4-SSL for ; 12 Jan 2019 01:37:06 -0000 Received: from mga06.intel.com ([134.134.136.31]) by Galois.linutronix.de with esmtps (TLS1.2:DHE_RSA_AES_256_CBC_SHA256:256) (Exim 4.80) (envelope-from ) id 1gi87Q-0002Kg-W9 for speck@linutronix.de; Sat, 12 Jan 2019 02:29:51 +0100 From: Andi Kleen Subject: [MODERATED] [PATCH v4 15/28] MDSv4 9 Date: Fri, 11 Jan 2019 17:29:28 -0800 Message-Id: <14630e87c2f4f0cfd1d5ba351677ec94028e682d.1547256470.git.ak@linux.intel.com> In-Reply-To: References: In-Reply-To: References: To: speck@linutronix.de Cc: Andi Kleen List-ID: From: Andi Kleen Subject: mds: Force clear cpu on kernel preemption When the kernel is preempted we need to force a cpu clear, because the preemption might happen before the code has a chance to set TIF_CPU_CLEAR later. We cannot rely on kernel code setting the flag before touching sensitive data: the flag setting could be implicit, like in memzero_explicit, which is always called later. Signed-off-by: Andi Kleen --- kernel/sched/core.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/kernel/sched/core.c b/kernel/sched/core.c index a674c7db2f29..b04918e9115c 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@ -11,6 +11,8 @@ #include +#include + #include #include @@ -3619,6 +3621,13 @@ asmlinkage __visible void __sched notrace preempt_schedule(void) if (likely(!preemptible())) return; + /* + * For kernel preemption we need to force a cpu clear + * because it could happen before the code has a chance + * to set TIF_CLEAR_CPU. + */ + lazy_clear_cpu(); + preempt_schedule_common(); } NOKPROBE_SYMBOL(preempt_schedule); -- 2.17.2