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 836CAC5475B for ; Fri, 8 Mar 2024 04:36:05 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 119A26B0330; Thu, 7 Mar 2024 23:36:05 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 0CA7B6B0331; Thu, 7 Mar 2024 23:36:05 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id EFA616B0332; Thu, 7 Mar 2024 23:36:04 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0013.hostedemail.com [216.40.44.13]) by kanga.kvack.org (Postfix) with ESMTP id E1AD16B0330 for ; Thu, 7 Mar 2024 23:36:04 -0500 (EST) Received: from smtpin11.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay03.hostedemail.com (Postfix) with ESMTP id 85712A1125 for ; Fri, 8 Mar 2024 04:36:04 +0000 (UTC) X-FDA: 81872609448.11.7DFDA7B Received: from szxga05-in.huawei.com (szxga05-in.huawei.com [45.249.212.191]) by imf13.hostedemail.com (Postfix) with ESMTP id 064B020003 for ; Fri, 8 Mar 2024 04:36:00 +0000 (UTC) Authentication-Results: imf13.hostedemail.com; dkim=none; spf=pass (imf13.hostedemail.com: domain of changbin.du@huawei.com designates 45.249.212.191 as permitted sender) smtp.mailfrom=changbin.du@huawei.com; dmarc=pass (policy=quarantine) header.from=huawei.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1709872563; 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: references; bh=TMc1AB2wXHIxCNcaSfZTzVUgC/RwnpGpsAah6qB8Q0k=; b=4JW0LPQsbugcLruOcSSZ+Bk3zWTFh0o6Irpd9D+UsQ83NM9NjV5nxP9yGuAQjLr4lZowEd +xbA23OC7YLFdEccRGVH/OoSlT+L0aa3tWKwGbetrlHJdX9nLGcpehdHHGSgfL05VN3Y/n lWL+fTCXZwLS5oW7MLVEH+9KhKSokAI= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1709872563; a=rsa-sha256; cv=none; b=T1V80Rl4pw6SjhKBcF2zf3UL35FeK5GFdqmzSvEKQPd6RewZ2bz1450V2DODITlvxk9asu RM0tG2aKJ0VVTs8S/+3RQ9jFKLNUajrBhRcAlyvGFOW3s/bSLH6EmXdNQGyjCRO0RHBSey ADpOw0evxGzXWL2r7jc1Mz4y1DXbqbI= ARC-Authentication-Results: i=1; imf13.hostedemail.com; dkim=none; spf=pass (imf13.hostedemail.com: domain of changbin.du@huawei.com designates 45.249.212.191 as permitted sender) smtp.mailfrom=changbin.du@huawei.com; dmarc=pass (policy=quarantine) header.from=huawei.com Received: from mail.maildlp.com (unknown [172.19.88.234]) by szxga05-in.huawei.com (SkyGuard) with ESMTP id 4TrYFn5DkPz1h1Zw; Fri, 8 Mar 2024 12:33:33 +0800 (CST) Received: from kwepemd100005.china.huawei.com (unknown [7.221.188.91]) by mail.maildlp.com (Postfix) with ESMTPS id 34A9E14011B; Fri, 8 Mar 2024 12:35:56 +0800 (CST) Received: from kwepemd100011.china.huawei.com (7.221.188.204) by kwepemd100005.china.huawei.com (7.221.188.91) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1258.28; Fri, 8 Mar 2024 12:35:55 +0800 Received: from M910t (10.110.54.157) by kwepemd100011.china.huawei.com (7.221.188.204) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1258.28; Fri, 8 Mar 2024 12:35:55 +0800 Date: Fri, 8 Mar 2024 12:34:48 +0800 From: Changbin Du To: Alexander Potapenko , Marco Elver , Andrew Morton CC: , , , Subject: [BUG] kmsan: instrumentation recursion problems Message-ID: <20240308043448.masllzeqwht45d4j@M910t> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Disposition: inline X-Originating-IP: [10.110.54.157] X-ClientProxiedBy: dggems704-chm.china.huawei.com (10.3.19.181) To kwepemd100011.china.huawei.com (7.221.188.204) X-Rspamd-Queue-Id: 064B020003 X-Rspam-User: X-Stat-Signature: 1pqweruqqm5w7w63dse7r35pddqs4ugh X-Rspamd-Server: rspam03 X-HE-Tag: 1709872560-633483 X-HE-Meta: U2FsdGVkX18Ly09/gsp9X1eRn+/LiK6gmgmgXae9ApZDlmZPsXGQEmSHDTwvFNfactyfK0HWPuL4a6/OgoD5MgBNzkwUSqGLon7iKnJqeld79j0raxfDxPiW9usjGBcGQvx/hyg3puxrUG1akYl6Jd/yng3/BUNp6Q5i36940/OiTvNSTYuDNJ2jX/MDCTwJNg6b8wrSKOC5cPuSL9L5xrWgUHTYTAI9V9Bqag7tfWgEmYKAdrCC7I4ycVg8A8njsudd9H4PryBC0vZyI8v9NDBJE85cFGrj6JGAFxUHPeJs+fYxF3ro4MP1m4ZWHBw3eBJZMPVNn8uC1qHENmSlojje2lZXEsp7Pm0t/kShVC7/bdtmTUl1YYvPRpw4Z8rNzFlygFETVSR5EZl67XdLWQb6MiaBYBn+XfdNxSH5Rm45fpqZHHXJRCaXp2SVfTKP8kGxwjY0/Fj+9B1QyiJSLOjHvcYmH4OFIXznSkAljB/uptxa1NuzFURUatBcPGDs1mYdgf9uQlYTctcOHq7PRVo0bYR0tRVqbxyPIylWE9oHmEHqNClfGmDjtxwIpBLIw5UrDo2yu0rZlGVKnO+ZCyz4B2suduyHNSedEvXSr8oKxCvjd9cTFtjd5DhBJ5/+tGUTZM35qBk6pZuQPZdQiCMNyQlv2cFOc23VvOpUiEsbGWRMVF//Mg5U6O/ATXT+vOYGh4HXJARgOSGfPSY7pvAKt8QrRqI7xWIQavqpOttyhF4Q8NIFjuQRjju9yE0o2NB4iBcc7G76QrACj6Md8GUjQ24/EX33k4/ZVs1qyqjd1tscLzxrJC0VPGpwSseYwWCV6un5S1lqtVA69z1RRw== 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: Hey, folks, I found two instrumentation recursion issues on mainline kernel. 1. recur on preempt count. __msan_metadata_ptr_for_load_4() -> kmsan_virt_addr_valid() -> preempt_disable() -> __msan_metadata_ptr_for_load_4() 2. recur in lockdep and rcu __msan_metadata_ptr_for_load_4() -> kmsan_virt_addr_valid() -> pfn_valid() -> rcu_read_lock_sched() -> lock_acquire() -> rcu_is_watching() -> __msan_metadata_ptr_for_load_8() Here is an unofficial fix, I don't know if it will generate false reports. $ git show commit 7f0120b621c1cbb667822b0f7eb89f3c25868509 (HEAD -> master) Author: Changbin Du Date: Fri Mar 8 20:21:48 2024 +0800 kmsan: fix instrumentation recursions Signed-off-by: Changbin Du diff --git a/kernel/locking/Makefile b/kernel/locking/Makefile index 0db4093d17b8..ea925731fa40 100644 --- a/kernel/locking/Makefile +++ b/kernel/locking/Makefile @@ -7,6 +7,7 @@ obj-y += mutex.o semaphore.o rwsem.o percpu-rwsem.o # Avoid recursion lockdep -> sanitizer -> ... -> lockdep. KCSAN_SANITIZE_lockdep.o := n +KMSAN_SANITIZE_lockdep.o := n ifdef CONFIG_FUNCTION_TRACER CFLAGS_REMOVE_lockdep.o = $(CC_FLAGS_FTRACE) diff --git a/kernel/rcu/tree.c b/kernel/rcu/tree.c index b2bccfd37c38..8935cc866e2d 100644 --- a/kernel/rcu/tree.c +++ b/kernel/rcu/tree.c @@ -692,7 +692,7 @@ static void rcu_disable_urgency_upon_qs(struct rcu_data *rdp) * Make notrace because it can be called by the internal functions of * ftrace, and making this notrace removes unnecessary recursion calls. */ -notrace bool rcu_is_watching(void) +notrace __no_sanitize_memory bool rcu_is_watching(void) { bool ret; diff --git a/kernel/sched/core.c b/kernel/sched/core.c index 9116bcc90346..33aa4df8fd82 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@ -5848,7 +5848,7 @@ static inline void preempt_latency_start(int val) } } -void preempt_count_add(int val) +void __no_sanitize_memory preempt_count_add(int val) { #ifdef CONFIG_DEBUG_PREEMPT /* @@ -5880,7 +5880,7 @@ static inline void preempt_latency_stop(int val) trace_preempt_on(CALLER_ADDR0, get_lock_parent_ip()); } -void preempt_count_sub(int val) +void __no_sanitize_memory preempt_count_sub(int val) { #ifdef CONFIG_DEBUG_PREEMPT -- Cheers, Changbin Du