Received: by 2002:a6b:500f:0:0:0:0:0 with SMTP id e15csp501484iob; Wed, 4 May 2022 01:18:33 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxPNNeszAR30fwqn7yXWvb+tJhddh0urLMBa9TKcGQmkOZQIJAUd7eQlV5/swqsf/tRQqQO X-Received: by 2002:a62:1850:0:b0:50d:2398:b43b with SMTP id 77-20020a621850000000b0050d2398b43bmr19737978pfy.59.1651652313672; Wed, 04 May 2022 01:18:33 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1651652313; cv=none; d=google.com; s=arc-20160816; b=SHNfAz8omH/nnUg/cPOq+qPTkiz6X08Jds2DMLf/BdM3ftdbGqZ5YBSp22nvA5wfBA Nhfs/L8uoO/DdkPBWUfOo64fHQtO49RbfNiFL4DSIsDy4guaevu0VDBcF3KPig3EZ8Iu 4xru8QMG4PynviNwH6P0awJokI/w8BWgbpfyRmorsJXmW53oM3c/M1ZwcS/A6fZ0XzPv lIKyzJQUqBrTXZfZuv27pKlQxpMCwzh9rC7hGbqTA/ZWPPnLrSqeWY6V92foQEDyu3pK DqqMWlSVzgzflNI6hiGZSWfuDcto0QPxXmjzTzEfvGznx9OsO7vJ6rq7JNmf/4fMJy2x NEIg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:in-reply-to:content-disposition:mime-version :references:message-id:subject:cc:to:from:date; bh=nphEWKrzH5PF8r33HP1QgzlOORGMOEFoQrSPtig+Klg=; b=ceDe5N6XnFeVpflrUJcQpu5rBFay57FCF682tWD9RcDYOgRn9eoQXvDsKz852VaXh0 6IXUUJFKYJYoKIlwoVQdKymjzo/fBYjIXG0NAX7hCYNVsA9DF83SBRGZBHW5r1JuOd3w zDfG0CyhN5jUayMNKQMhTQ2n56bAARX4LQj0gq0ZtoaI+mxyRfgVdpaZ6tmxLXhzrXpK cbZ84+oUD/MkLNdvNdx1IRuQ73t2xvZkwt1a5SHv8t1d3gD0ZNHH94rSTWyT84w6zRuP UF/3UrGaAIKhlPtjW3Tx2xyl4nBpjl/GKxOQrRpqxhIPpxkBqftm/3fRdBB7JsTgux8Z kFbw== ARC-Authentication-Results: i=1; mx.google.com; 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=fail (p=NONE sp=NONE dis=NONE) header.from=arm.com Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id l71-20020a63914a000000b003ab3289a7a1si18564396pge.6.2022.05.04.01.18.19; Wed, 04 May 2022 01:18:33 -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; 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=fail (p=NONE sp=NONE dis=NONE) header.from=arm.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232065AbiECOYW (ORCPT + 99 others); Tue, 3 May 2022 10:24:22 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:48632 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S237028AbiECOXu (ORCPT ); Tue, 3 May 2022 10:23:50 -0400 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id DE8541136 for ; Tue, 3 May 2022 07:20:14 -0700 (PDT) Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 934D51042; Tue, 3 May 2022 07:20:14 -0700 (PDT) Received: from lakrids (usa-sjc-imap-foss1.foss.arm.com [10.121.207.14]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 55AB63F774; Tue, 3 May 2022 07:20:13 -0700 (PDT) Date: Tue, 3 May 2022 15:20:06 +0100 From: Mark Rutland To: Josh Poimboeuf Cc: Peter Zijlstra , x86@kernel.org, linux-kernel@vger.kernel.org, elver@google.com, jbaron@akamai.com, rostedt@goodmis.org, ardb@kernel.org, kernel test robot Subject: Re: [PATCH 2/3] x86/cpu: Elide KCSAN for cpu_has() and friends Message-ID: References: <20220502110741.951055904@infradead.org> <20220502111216.290518605@infradead.org> <20220502184747.cr5ssem3g4mel4qq@treble> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20220502184747.cr5ssem3g4mel4qq@treble> X-Spam-Status: No, score=-6.9 required=5.0 tests=BAYES_00,RCVD_IN_DNSWL_HI, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=ham 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 On Mon, May 02, 2022 at 11:47:47AM -0700, Josh Poimboeuf wrote: > On Mon, May 02, 2022 at 01:07:43PM +0200, Peter Zijlstra wrote: > > vmlinux.o: warning: objtool: enter_from_user_mode+0x24: call to __kcsan_check_access() leaves .noinstr.text section > > vmlinux.o: warning: objtool: syscall_enter_from_user_mode+0x28: call to __kcsan_check_access() leaves .noinstr.text section > > vmlinux.o: warning: objtool: syscall_enter_from_user_mode_prepare+0x24: call to __kcsan_check_access() leaves .noinstr.text section > > vmlinux.o: warning: objtool: irqentry_enter_from_user_mode+0x24: call to __kcsan_check_access() leaves .noinstr.text section > > > > Reported-by: kernel test robot > > Signed-off-by: Peter Zijlstra (Intel) > > An explanation about *why* this fixes it would help, as I have no idea > from looking at the patch. How about something like: | As x86 uses the headers, the | regular forms of all bitops are instrumented with explicit calls to | KASAN and KCSAN checks. As these are explicit calls, these are not | suppressed by the noinstr function attribute. | | This can result in calls to those check functions in noinstr code, which | objtool warns about: | | vmlinux.o: warning: objtool: enter_from_user_mode+0x24: call to __kcsan_check_access() leaves .noinstr.text section | vmlinux.o: warning: objtool: syscall_enter_from_user_mode+0x28: call to __kcsan_check_access() leaves .noinstr.text section | vmlinux.o: warning: objtool: syscall_enter_from_user_mode_prepare+0x24: call to __kcsan_check_access() leaves .noinstr.text section | vmlinux.o: warning: objtool: irqentry_enter_from_user_mode+0x24: call to __kcsan_check_access() leaves .noinstr.text section | | Prevent this by using the arch_*() bitops, which are the underlying | bitops without explciit instrumentation. Thanks, Mark. > > > --- > > arch/x86/include/asm/cpufeature.h | 2 +- > > 1 file changed, 1 insertion(+), 1 deletion(-) > > > > --- a/arch/x86/include/asm/cpufeature.h > > +++ b/arch/x86/include/asm/cpufeature.h > > @@ -51,7 +51,7 @@ extern const char * const x86_power_flag > > extern const char * const x86_bug_flags[NBUGINTS*32]; > > > > #define test_cpu_cap(c, bit) \ > > - test_bit(bit, (unsigned long *)((c)->x86_capability)) > > + arch_test_bit(bit, (unsigned long *)((c)->x86_capability)) > > > > /* > > * There are 32 bits/features in each mask word. The high bits > > > > > > -- > Josh >