Received: by 2002:a05:6358:bb9e:b0:b9:5105:a5b4 with SMTP id df30csp3054360rwb; Mon, 5 Sep 2022 05:56:24 -0700 (PDT) X-Google-Smtp-Source: AA6agR4nrkHIUIM5MuiA0vu73OqRps4f9dwXhwawO3sJAzmRzW/+gTD1UmEQLkWhQERITo/V2w2F X-Received: by 2002:a17:903:41c6:b0:16f:3d1:f63 with SMTP id u6-20020a17090341c600b0016f03d10f63mr48287253ple.50.1662382584500; Mon, 05 Sep 2022 05:56:24 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1662382584; cv=none; d=google.com; s=arc-20160816; b=uiSC+uC2QPTVAmGXsW+4NXDVT7A6TB9+FG/9yqRDeYSQhlb4w/V6YXvtyNKzcI6J79 IrI6jnJxV8M+uUQbxIATL39RXi5e7vzGzWgeCbiNXhksAOWUaIif4JSIrM5sRTWzhB8B JVlOKqTw5hpg0ouJdxiQ7PrnJDt+ZDPVb8zqMzhY7CibZNOBAbGljp6TCBuBuGxtJWH/ XoY6c6cVvHxHkOVcdi7PB70Lc3Wo/29XqES2x9Q+a78DO+NU+DyM1RvVvF4DYNhFYxNW 5wSDSyaZYFlIPSuuSfOT9vutcZdpZoiN2qzbmRWmJznHeRvZyN0kr6x2a3QUNWxmDCc8 sywQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:from:subject:message-id:references :mime-version:in-reply-to:date:dkim-signature; bh=mxKrKakNES2O6WNVUjUiVAG/aqg8NEyyXmfzwvDy3M8=; b=v7WHgoV19JMUsMX0woKLszH2PbzuwM+RJz3bul6LQ1wsvXKU/tsqiErzXPaSbZwWHX kCAeH+NibXRha36vXGCtC03QIp2vTROoaRnPVLi5Ysfdhm7SQ7WT67muwWxy9+piiFwB BszJrwriDaqULEjP2dBSgt9lSC1xg6Hfj6Vj4UerqPWRF/ovQ1lRhjAarNcZyiwSamz8 G2eLM0iBqdyMJsbhlj+3X2ZYQ0MtSA2CatwIZZZFoiGAZgibHoGW7rWpo1MseLhKT1Xz t3DGvKfjmsQx6bYwHDKsnbsdvXOdahrfTuso8F5TTnhukZvMf0V7AW+bhtwpd8N19PuM a0ug== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20210112 header.b=Hll0XPDm; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id e6-20020a17090301c600b00172dc6b5eecsi10690378plh.9.2022.09.05.05.56.00; Mon, 05 Sep 2022 05:56:24 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@google.com header.s=20210112 header.b=Hll0XPDm; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S237781AbiIEMcG (ORCPT + 99 others); Mon, 5 Sep 2022 08:32:06 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60206 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S237754AbiIEMaY (ORCPT ); Mon, 5 Sep 2022 08:30:24 -0400 Received: from mail-ed1-x549.google.com (mail-ed1-x549.google.com [IPv6:2a00:1450:4864:20::549]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id C4D426110B for ; Mon, 5 Sep 2022 05:26:34 -0700 (PDT) Received: by mail-ed1-x549.google.com with SMTP id x21-20020a05640226d500b0044856301c62so5706683edd.12 for ; Mon, 05 Sep 2022 05:26:34 -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:subject:date; bh=mxKrKakNES2O6WNVUjUiVAG/aqg8NEyyXmfzwvDy3M8=; b=Hll0XPDmwrA/wkE0+inHBLREQNrLcoBNQOLJv6vlBIuGAkWI+xpzOnwpEHVMNRdEFq LadRtvkYKT0rBaCGIQh+SpcYQSYJ6+D3urzxB4a+suX0OZKqBBYIRUGR9X7fE50HgxBz B2g0i4X6vQks1KpTx5jgpjFZyeuT89E6vIhppFNHjDfbX+1QPnLtmUz9mtN+7ySfB+bR PFoDRy3NBTPBWZ7NAt+/xQb5yB7Y9UmTQE95ZWJNyoXXzQAFuUS4huF8Aevejgh3HJgS M1OLT91cEQYlIRh7PZL9bQgnExoipMKZwEt+JNxRwLYODVp7nciM3moyVQjv2BbTAuZX Rk6w== 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:subject:date; bh=mxKrKakNES2O6WNVUjUiVAG/aqg8NEyyXmfzwvDy3M8=; b=3N7I7lLV0H73q2S8LA0j+us0cMgmQHa6pa01/rAvs7RuNjE69e3kd8blt0BiCUGgvy PUjNoGfBbZxjxxfIHSFZ/wq2QBOdRbOrXysseOFRWT7TBBmP6h7BAMD6qDuqNqSI06co fBD3RFaoBoYkp5meUuIc1OZhlVvZMH0eRLlSiV7muwb64yGI88YbvJz8uF3KqaFUXWvj clgUETPRvEy4QoiaGmY+ykvbSwOkLTcyQ+c1DVHsHazHBlmH6s3eOWYl9HQqjPN1N2mC H0TxReqe0UP0XuH5bZLgyBQMZSQMF/DXjJce2aHe4zH8CyoUd9BNH1pL3lf5xssFO9ky ZKYA== X-Gm-Message-State: ACgBeo3wjdkLmvFN09cXAm4fe33Td0u9Io00khi5xjAbi9Rew2QtW5ZL quGFZxl//2E/dU74K/c89OBhbtzgSz0= X-Received: from glider.muc.corp.google.com ([2a00:79e0:9c:201:b808:8d07:ab4a:554c]) (user=glider job=sendgmr) by 2002:a17:906:845c:b0:730:bbf1:196a with SMTP id e28-20020a170906845c00b00730bbf1196amr36512046ejy.13.1662380785638; Mon, 05 Sep 2022 05:26:25 -0700 (PDT) Date: Mon, 5 Sep 2022 14:24:40 +0200 In-Reply-To: <20220905122452.2258262-1-glider@google.com> Mime-Version: 1.0 References: <20220905122452.2258262-1-glider@google.com> X-Mailer: git-send-email 2.37.2.789.g6183377224-goog Message-ID: <20220905122452.2258262-33-glider@google.com> Subject: [PATCH v6 32/44] objtool: kmsan: list KMSAN API functions as uaccess-safe From: Alexander Potapenko To: glider@google.com Cc: Alexander Viro , Alexei Starovoitov , Andrew Morton , Andrey Konovalov , Andy Lutomirski , Arnd Bergmann , Borislav Petkov , Christoph Hellwig , Christoph Lameter , David Rientjes , Dmitry Vyukov , Eric Dumazet , Greg Kroah-Hartman , Herbert Xu , Ilya Leoshkevich , Ingo Molnar , Jens Axboe , Joonsoo Kim , Kees Cook , Marco Elver , Mark Rutland , Matthew Wilcox , "Michael S. Tsirkin" , Pekka Enberg , Peter Zijlstra , Petr Mladek , Steven Rostedt , Thomas Gleixner , Vasily Gorbik , Vegard Nossum , Vlastimil Babka , 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" X-Spam-Status: No, score=-9.6 required=5.0 tests=BAYES_00,DKIMWL_WL_MED, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_NONE, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE,USER_IN_DEF_DKIM_WL autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org KMSAN inserts API function calls in a lot of places (function entries and exits, local variables, memory accesses), so they may get called from the uaccess regions as well. KMSAN API functions are used to update the metadata (shadow/origin pages) for kernel memory accesses. The metadata pages for kernel pointers are also located in the kernel memory, so touching them is not a problem. For userspace pointers, no metadata is allocated. If an API function is supposed to read or modify the metadata, it does so for kernel pointers and ignores userspace pointers. If an API function is supposed to return a pair of metadata pointers for the instrumentation to use (like all __msan_metadata_ptr_for_TYPE_SIZE() functions do), it returns the allocated metadata for kernel pointers and special dummy buffers residing in the kernel memory for userspace pointers. As a result, none of KMSAN API functions perform userspace accesses, but since they might be called from UACCESS regions they use user_access_save/restore(). Signed-off-by: Alexander Potapenko --- v3: -- updated the patch description v4: -- add kmsan_unpoison_entry_regs() Link: https://linux-review.googlesource.com/id/I242bc9816273fecad4ea3d977393784396bb3c35 --- tools/objtool/check.c | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/tools/objtool/check.c b/tools/objtool/check.c index e55fdf952a3a1..7c048c11ce7da 100644 --- a/tools/objtool/check.c +++ b/tools/objtool/check.c @@ -1062,6 +1062,26 @@ static const char *uaccess_safe_builtin[] = { "__sanitizer_cov_trace_cmp4", "__sanitizer_cov_trace_cmp8", "__sanitizer_cov_trace_switch", + /* KMSAN */ + "kmsan_copy_to_user", + "kmsan_report", + "kmsan_unpoison_entry_regs", + "kmsan_unpoison_memory", + "__msan_chain_origin", + "__msan_get_context_state", + "__msan_instrument_asm_store", + "__msan_metadata_ptr_for_load_1", + "__msan_metadata_ptr_for_load_2", + "__msan_metadata_ptr_for_load_4", + "__msan_metadata_ptr_for_load_8", + "__msan_metadata_ptr_for_load_n", + "__msan_metadata_ptr_for_store_1", + "__msan_metadata_ptr_for_store_2", + "__msan_metadata_ptr_for_store_4", + "__msan_metadata_ptr_for_store_8", + "__msan_metadata_ptr_for_store_n", + "__msan_poison_alloca", + "__msan_warning", /* UBSAN */ "ubsan_type_mismatch_common", "__ubsan_handle_type_mismatch", -- 2.37.2.789.g6183377224-goog