From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id B8D75C54E58 for ; Wed, 13 Mar 2024 10:23:50 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id EB6958001D; Wed, 13 Mar 2024 06:23:49 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id E65E2940010; Wed, 13 Mar 2024 06:23:49 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id D7BA78001D; Wed, 13 Mar 2024 06:23:49 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0011.hostedemail.com [216.40.44.11]) by kanga.kvack.org (Postfix) with ESMTP id C8893940010 for ; Wed, 13 Mar 2024 06:23:49 -0400 (EDT) Received: from smtpin15.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay06.hostedemail.com (Postfix) with ESMTP id 7D73AA182F for ; Wed, 13 Mar 2024 10:23:49 +0000 (UTC) X-FDA: 81891629778.15.70C306A Received: from galois.linutronix.de (Galois.linutronix.de [193.142.43.55]) by imf14.hostedemail.com (Postfix) with ESMTP id EF935100006 for ; Wed, 13 Mar 2024 10:23:47 +0000 (UTC) Authentication-Results: imf14.hostedemail.com; dkim=pass header.d=linutronix.de header.s=2020 header.b=4fAOocrd; dkim=pass header.d=linutronix.de header.s=2020e header.b=tKWI8G0v; dmarc=pass (policy=none) header.from=linutronix.de; spf=pass (imf14.hostedemail.com: domain of tglx@linutronix.de designates 193.142.43.55 as permitted sender) smtp.mailfrom=tglx@linutronix.de ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1710325428; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:mime-version:mime-version: content-type:content-type:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=xhPElN2nsY3pxw/EXeL4pxaimHbX1HxGdoLyxOF3Llc=; b=pw5cQTCMFpyVkPXfqGNqvxGKc9Kl3oyyv5Dfnwk+bq+hdcbe/orTEjZZzfK8ITxNuT4K1W DMqzybJxlNxGoKsIG6cLtmeuaEYHNa26eq9Em6Tn7V4dYvWqrFdPflqev6FWDO+NwXEz33 PU67kponxi4TMv/kPe9o1Zrg1F0C2N0= ARC-Authentication-Results: i=1; imf14.hostedemail.com; dkim=pass header.d=linutronix.de header.s=2020 header.b=4fAOocrd; dkim=pass header.d=linutronix.de header.s=2020e header.b=tKWI8G0v; dmarc=pass (policy=none) header.from=linutronix.de; spf=pass (imf14.hostedemail.com: domain of tglx@linutronix.de designates 193.142.43.55 as permitted sender) smtp.mailfrom=tglx@linutronix.de ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1710325428; a=rsa-sha256; cv=none; b=ROEHABkjx9orME6hu84StbZWJx+SWg+wDK54zSY9jO5yolvCDPySs6mum8IAGQ/ceMN5gJ McVqIoZKRQruk/FNaZ+qupVRsQSWgwYswyyZllwOyq1C2MFxOyCLot91gekkz8hFdVY1BO x67s4N4pa3mXbfVoF8cw1BDCQJkYSGQ= From: Thomas Gleixner DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linutronix.de; s=2020; t=1710325425; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=xhPElN2nsY3pxw/EXeL4pxaimHbX1HxGdoLyxOF3Llc=; b=4fAOocrdQLqbqEnuhF3QEKD4N8wegjJrGROjzJgJDJsL7/j8xWz01piO1Hd5jt51Pr+21i sWanXRgRl2ysMjiFYFlm2krq/bcGcjF3RT9uqpRp3V0OCt7b7hNMgSJTDxvACLXd9P7EPj m9HbTevohFHt2QtXjPb9RvuBSjpbdDPWvfkBckCbDuCTjdMHe2a3c0PDQBi3ubZy6479Ey fJzmHRG6jmKIwxzVBVJdbJNko2zh7TvDl4K1i25OVVkfesw4maNJw/dWbW+OqEz9Kod6ym STXs//cn1vIYPjXH/PX70JZ2dYzIODQRqso2zs1Mo8QpBEpum5tlQFEmkXoU9w== DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=linutronix.de; s=2020e; t=1710325425; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=xhPElN2nsY3pxw/EXeL4pxaimHbX1HxGdoLyxOF3Llc=; b=tKWI8G0vruTW/ZBmFCpE3SD4QiODxfUx+s/fIoS4UlFpH6KqtECQ60yeBRh5+VfxTjqBMD nuzTl6nq5Z45cDAg== To: Pasha Tatashin , linux-kernel@vger.kernel.org, linux-mm@kvack.org, akpm@linux-foundation.org, x86@kernel.org, bp@alien8.de, brauner@kernel.org, bristot@redhat.com, bsegall@google.com, dave.hansen@linux.intel.com, dianders@chromium.org, dietmar.eggemann@arm.com, eric.devolder@oracle.com, hca@linux.ibm.com, hch@infradead.org, hpa@zytor.com, jacob.jun.pan@linux.intel.com, jgg@ziepe.ca, jpoimboe@kernel.org, jroedel@suse.de, juri.lelli@redhat.com, kent.overstreet@linux.dev, kinseyho@google.com, kirill.shutemov@linux.intel.com, lstoakes@gmail.com, luto@kernel.org, mgorman@suse.de, mic@digikod.net, michael.christie@oracle.com, mingo@redhat.com, mjguzik@gmail.com, mst@redhat.com, npiggin@gmail.com, peterz@infradead.org, pmladek@suse.com, rick.p.edgecombe@intel.com, rostedt@goodmis.org, surenb@google.com, urezki@gmail.com, vincent.guittot@linaro.org, vschneid@redhat.com, pasha.tatashin@soleen.com Subject: Re: [RFC 11/14] x86: add support for Dynamic Kernel Stacks In-Reply-To: <20240311164638.2015063-12-pasha.tatashin@soleen.com> References: <20240311164638.2015063-1-pasha.tatashin@soleen.com> <20240311164638.2015063-12-pasha.tatashin@soleen.com> Date: Wed, 13 Mar 2024 11:23:44 +0100 Message-ID: <87v85qo2fj.ffs@tglx> MIME-Version: 1.0 Content-Type: text/plain X-Rspamd-Queue-Id: EF935100006 X-Rspam-User: X-Rspamd-Server: rspam02 X-Stat-Signature: 8xhekab74trkpcxambiatoz1mpp4gjoc X-HE-Tag: 1710325427-58340 X-HE-Meta: U2FsdGVkX1/ithuIQ5Efg1oaDN9eetaRg/he8hjsLIl7QcrWfYzo2oEv89e7HnYaiSjdBVtSG6QPdWe+5dPaZu1JIOSzGmk64v1odrR69b0/W5k28hVsPYRbCC//vlIhQOz9KI+pASKv7exi/CZrFtWQ6fe4Y5DVEtRL/qHcNDlHVJX9UCJhYSYTAdgLXyv6kv+q16lLC0nTPal27SiNaHrhQNEJTNK6k7SIO/IPd1GeASraPjsOWmdpLwpbni6OBaIbereScgmtDSnPZQmbZynS4v3FK3PJ4JfD7TLwr21lPxqo85dfFSub9PAJquGgJmvPFhaLRd7Bepdxeen5hmgQWGxxyYuVZWKVVAS9YhB+4hnBBjmpKouv0HwEmD4rnjuJJxus601lOO0ATFv6AfoJpAwnm6vAx81BqKgDiiI8munmSdk7H1j33CLTyVpYqeyYEuo85AeWRfSA8fAbkA51iUq75A/rCyMzahgBzbavlxJCsxG9Stmqn7eFjYKCww+gUMJax1bURB3cMh0JGOsNIbktTNI8TQEMoVjM1OdAKQupyd8C5pc96nSaudcQ1wCQQmaD57Z20ik1vEm1GLVLPRv9W7pKnGx+//qaxrzRhr9yfi53cFuxeNJZi4kccGzVKrd4kxi4KU0Hx950f1lpCm8JIa+ZDVN4LxjCtFnCQ4yXDCpcsJSbL3YsrLCpEPHL92C7NCTaINTF9ns85BwkKxyFe18YgrcxEPjxaw/PJtca+Bz+vPkvAJRTQN3b1BF3bn9S07d6wwxbDgTl6iRMIfWR8cspjVnZ+CYuOarEXlIIXoc1E+GFEzJVuIvP X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: On Mon, Mar 11 2024 at 16:46, Pasha Tatashin wrote: > @@ -413,6 +413,9 @@ DEFINE_IDTENTRY_DF(exc_double_fault) > } > #endif > > + if (dynamic_stack_fault(current, address)) > + return; > + > irqentry_nmi_enter(regs); > instrumentation_begin(); > notify_die(DIE_TRAP, str, regs, error_code, X86_TRAP_DF, SIGSEGV); > diff --git a/arch/x86/mm/fault.c b/arch/x86/mm/fault.c > index d6375b3c633b..651c558b10eb 100644 > --- a/arch/x86/mm/fault.c > +++ b/arch/x86/mm/fault.c > @@ -1198,6 +1198,9 @@ do_kern_addr_fault(struct pt_regs *regs, unsigned long hw_error_code, > if (is_f00f_bug(regs, hw_error_code, address)) > return; > > + if (dynamic_stack_fault(current, address)) > + return; T1 schedules out with stack used close to the fault boundary. switch_to(T2) Now T1 schedules back in switch_to(T1) __switch_to_asm() ... switch_stacks() <- SP on T1 stack ! ... ! jmp __switch_to() ! __switch_to() ! ... ! raw_cpu_write(pcpu_hot.current_task, next_p); After switching SP to T1's stack and up to the point where pcpu_hot.current_task (aka current) is updated to T1 a stack fault will invoke dynamic_stack_fault(T2, address) which will return false here: /* check if address is inside the kernel stack area */ stack = (unsigned long)tsk->stack; if (address < stack || address >= stack + THREAD_SIZE) return false; because T2's stack does obviously not cover the faulting address on T1's stack. As a consequence double fault will panic the machine. Thanks, tglx