Message ID | 20220826150807.723137-35-glider@google.com (mailing list archive) |
---|---|
State | New |
Headers | show
Return-Path: <owner-linux-mm@kvack.org> 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 792B7ECAAD4 for <linux-mm@archiver.kernel.org>; Fri, 26 Aug 2022 15:09:50 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 1CDEB94000F; Fri, 26 Aug 2022 11:09:50 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 12F06940007; Fri, 26 Aug 2022 11:09:50 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id EC35894000F; Fri, 26 Aug 2022 11:09:49 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0010.hostedemail.com [216.40.44.10]) by kanga.kvack.org (Postfix) with ESMTP id D6169940007 for <linux-mm@kvack.org>; Fri, 26 Aug 2022 11:09:49 -0400 (EDT) Received: from smtpin01.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay08.hostedemail.com (Postfix) with ESMTP id B2113140F28 for <linux-mm@kvack.org>; Fri, 26 Aug 2022 15:09:49 +0000 (UTC) X-FDA: 79842078498.01.04EE7FB Received: from mail-ej1-f73.google.com (mail-ej1-f73.google.com [209.85.218.73]) by imf02.hostedemail.com (Postfix) with ESMTP id 6ACC580028 for <linux-mm@kvack.org>; Fri, 26 Aug 2022 15:09:49 +0000 (UTC) Received: by mail-ej1-f73.google.com with SMTP id hb37-20020a170907162500b0073d7f7fbbbfso725620ejc.17 for <linux-mm@kvack.org>; Fri, 26 Aug 2022 08:09:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:from:to:cc; bh=3xJV8lOEjvc/s3Zvuma5zSeTndu+UAUJOaQAKluuQYo=; b=iowtS53RHlpCL6qU/VWV5GQVG1CF6AM2cb2K8UF+xf9Eri/m9bP/5b0fP/Yv5g71u0 G4xosRyjwnbYFvqXAKPuwh/r0w9aoa69XWRuAOHrIhWmWSx0iV2XmDVoCP0JlE47FuAB nmm0HUugDUAGgo/u5XwfJyioj1O9wMPKtRlUGvvX8gKw+EEmNXhvxQbPL/ZKDRcZQQPf MtPg7V/4IJP2t5P4sgZyKRHmwuOCzbI6xunPoBepArW292PT19a5ne9C4DB1Q+Nr1eTB S6mxBrnLUZM9ZZ8fq3aL2JmDi/WAivgNEzeAkYRHzPgQwniErjEHU3w34yBn1hByADXw pmoQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:x-gm-message-state:from:to:cc; bh=3xJV8lOEjvc/s3Zvuma5zSeTndu+UAUJOaQAKluuQYo=; b=HwO0v7UkPCxf3yFHaosFRaPOKCbT46HTRZLQAIyI6lP14PItDnQ7eLQAEAxFPt/Gxw iF+Ilgd9/ZQ9cJmj54eEGY+sTwFOuHsWAa2F20kJzsJ9yWDf/8FInbRtry0ymuwBi5r9 eHdHxsWAWiwaJqslOd4iEPMVY3q76B7tvQ9Dc0xAO+mD+CLapuMi2oqhYg7lKUemcDF5 UozFgol1XshcZ1ca/ULenC91vviRcQrzrggcvaEsGi6Y7JcdzWPdSevf20id20b2JCZF 8/16TBH7Cm60ndHvr2eD91sXzgKxyjHFB9Szip47BhfVMEO0Ht6XmSVRPhAMdwZ6xrdx 6juw== X-Gm-Message-State: ACgBeo1niTM8xu4YWwwBCxIBTnpJ+eT3SQ3M92gZV9bBNEbR7ogt14Xx 7c12wpIWOZYLtp8fwcvTUuMkxgEU3l8= X-Google-Smtp-Source: AA6agR7ZtlC3yezkLYO1v2tXY0fliINor4H6Q3eNUkRHGD2H51HnwKZSVDlZC6/hqKT8jj4k53bs2dn79I8= X-Received: from glider.muc.corp.google.com ([2a00:79e0:9c:201:5207:ac36:fdd3:502d]) (user=glider job=sendgmr) by 2002:a05:6402:3491:b0:446:ea7d:8d9c with SMTP id v17-20020a056402349100b00446ea7d8d9cmr7130674edc.184.1661526588030; Fri, 26 Aug 2022 08:09:48 -0700 (PDT) Date: Fri, 26 Aug 2022 17:07:57 +0200 In-Reply-To: <20220826150807.723137-1-glider@google.com> Mime-Version: 1.0 References: <20220826150807.723137-1-glider@google.com> X-Mailer: git-send-email 2.37.2.672.g94769d06f0-goog Message-ID: <20220826150807.723137-35-glider@google.com> Subject: [PATCH v5 34/44] x86: kmsan: skip shadow checks in __switch_to() From: Alexander Potapenko <glider@google.com> To: glider@google.com Cc: Alexander Viro <viro@zeniv.linux.org.uk>, Alexei Starovoitov <ast@kernel.org>, Andrew Morton <akpm@linux-foundation.org>, Andrey Konovalov <andreyknvl@google.com>, Andy Lutomirski <luto@kernel.org>, Arnd Bergmann <arnd@arndb.de>, Borislav Petkov <bp@alien8.de>, Christoph Hellwig <hch@lst.de>, Christoph Lameter <cl@linux.com>, David Rientjes <rientjes@google.com>, Dmitry Vyukov <dvyukov@google.com>, Eric Dumazet <edumazet@google.com>, Greg Kroah-Hartman <gregkh@linuxfoundation.org>, Herbert Xu <herbert@gondor.apana.org.au>, Ilya Leoshkevich <iii@linux.ibm.com>, Ingo Molnar <mingo@redhat.com>, Jens Axboe <axboe@kernel.dk>, Joonsoo Kim <iamjoonsoo.kim@lge.com>, Kees Cook <keescook@chromium.org>, Marco Elver <elver@google.com>, Mark Rutland <mark.rutland@arm.com>, Matthew Wilcox <willy@infradead.org>, "Michael S. Tsirkin" <mst@redhat.com>, Pekka Enberg <penberg@kernel.org>, Peter Zijlstra <peterz@infradead.org>, Petr Mladek <pmladek@suse.com>, Steven Rostedt <rostedt@goodmis.org>, Thomas Gleixner <tglx@linutronix.de>, Vasily Gorbik <gor@linux.ibm.com>, Vegard Nossum <vegard.nossum@oracle.com>, Vlastimil Babka <vbabka@suse.cz>, kasan-dev@googlegroups.com, linux-mm@kvack.org, linux-arch@vger.kernel.org, linux-kernel@vger.kernel.org Content-Type: text/plain; charset="UTF-8" ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1661526589; a=rsa-sha256; cv=none; b=pNOJwBHMG5nG3XkUiQZpRCTK9bRnFKeDTZK4Ed3Tc3ARUNBRsqlWL3jiqvPXcdBZGuiumI CFqYwol3T8coz/Ecgs0irLDBoXI5qnmlXuFoFk1XgjzlGYskLPMaW4VxPnh2aLZuncGTIA PpQq6UtAoPkQsSh/Np6leUHc2jRdrKE= ARC-Authentication-Results: i=1; imf02.hostedemail.com; dkim=pass header.d=google.com header.s=20210112 header.b=iowtS53R; dmarc=pass (policy=reject) header.from=google.com; spf=pass (imf02.hostedemail.com: domain of 3POIIYwYKCEMlqnijwlttlqj.htrqnsz2-rrp0fhp.twl@flex--glider.bounces.google.com designates 209.85.218.73 as permitted sender) smtp.mailfrom=3POIIYwYKCEMlqnijwlttlqj.htrqnsz2-rrp0fhp.twl@flex--glider.bounces.google.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1661526589; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=3xJV8lOEjvc/s3Zvuma5zSeTndu+UAUJOaQAKluuQYo=; b=z57ySbWAdz/Olh8nRVFxT3JJq/E7wyIORpOIpvB5pAeU8gWIbXUu+HdcHufbH/I3Qv2EmB 329cSf+0qHEAMvhUq6hsxeiW1L4Mz6NQdP5DYDWHH2KltZiRGlyYee67TiRTVlU4fzT1pM T7PVj2Ju1CEKctBJHt2OPcAvB1AISDM= X-Rspamd-Server: rspam11 X-Rspam-User: X-Rspamd-Queue-Id: 6ACC580028 Authentication-Results: imf02.hostedemail.com; dkim=pass header.d=google.com header.s=20210112 header.b=iowtS53R; dmarc=pass (policy=reject) header.from=google.com; spf=pass (imf02.hostedemail.com: domain of 3POIIYwYKCEMlqnijwlttlqj.htrqnsz2-rrp0fhp.twl@flex--glider.bounces.google.com designates 209.85.218.73 as permitted sender) smtp.mailfrom=3POIIYwYKCEMlqnijwlttlqj.htrqnsz2-rrp0fhp.twl@flex--glider.bounces.google.com X-Stat-Signature: ruw6xhpmqzznikcs48j9aqnmxwqd7deh X-HE-Tag: 1661526589-966026 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: <linux-mm.kvack.org> |
Series |
Add KernelMemorySanitizer infrastructure
|
expand
|
diff --git a/arch/x86/kernel/process_64.c b/arch/x86/kernel/process_64.c index 1962008fe7437..6b3418bff3261 100644 --- a/arch/x86/kernel/process_64.c +++ b/arch/x86/kernel/process_64.c @@ -553,6 +553,7 @@ void compat_start_thread(struct pt_regs *regs, u32 new_ip, u32 new_sp, bool x32) * Kprobes not supported here. Set the probe on schedule instead. * Function graph tracer not supported too. */ +__no_kmsan_checks __visible __notrace_funcgraph struct task_struct * __switch_to(struct task_struct *prev_p, struct task_struct *next_p) {
When instrumenting functions, KMSAN obtains the per-task state (mostly pointers to metadata for function arguments and return values) once per function at its beginning, using the `current` pointer. Every time the instrumented function calls another function, this state (`struct kmsan_context_state`) is updated with shadow/origin data of the passed and returned values. When `current` changes in the low-level arch code, instrumented code can not notice that, and will still refer to the old state, possibly corrupting it or using stale data. This may result in false positive reports. To deal with that, we need to apply __no_kmsan_checks to the functions performing context switching - this will result in skipping all KMSAN shadow checks and marking newly created values as initialized, preventing all false positive reports in those functions. False negatives are still possible, but we expect them to be rare and impersistent. Suggested-by: Marco Elver <elver@google.com> Signed-off-by: Alexander Potapenko <glider@google.com> Link: https://linux-review.googlesource.com/id/I520c414f52c19f3ea22377a9c570fff0d5943a95 --- v2: -- This patch was previously called "kmsan: skip shadow checks in files doing context switches". Per Mark Rutland's suggestion, we now only skip checks in low-level arch-specific code, as context switches in common code should be invisible to KMSAN. We also apply the checks to precisely the functions performing the context switch instead of the whole file. v5: -- Replace KMSAN_ENABLE_CHECKS_process_64.o with __no_kmsan_checks Link: https://linux-review.googlesource.com/id/I45e3ed9c5f66ee79b0409d1673d66ae419029bcb --- arch/x86/kernel/process_64.c | 1 + 1 file changed, 1 insertion(+)