Received: by 2002:a25:23cc:0:0:0:0:0 with SMTP id j195csp873142ybj; Thu, 7 May 2020 09:30:44 -0700 (PDT) X-Google-Smtp-Source: APiQypIrXbZHBcVivok2kiTFrQwHA1hWAhPWZnHCfimc7CmbNXbxiCI2f/qFO4PATp+VPIEeesoU X-Received: by 2002:a50:9f0a:: with SMTP id b10mr12994581edf.159.1588869043998; Thu, 07 May 2020 09:30:43 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1588869043; cv=none; d=google.com; s=arc-20160816; b=sV3wZORftl3VhpBPEDPuYqYPKcTET+SpavbY0puyPWvhV/3C9k0XEvmvU7sEf1JSGO eohFR2PaKsyao5/0b8qWK1q3/y7mp6ofUMoXgo5Nl52UVRgjJ/54Z+Pm5btdnssmIoIE OMbjtEs1nBPiJMF+hpm8UoSWgACrOCHfk87LvvWjWFY56DzZoIRJJwgBuyWrdzLrAeZc 6dCDwg3+fxjVah9XyP+lMj8PIm1hdJK+yiGJFFHSPkIw436/oQAvF34NtVgamMUFFoy+ 4q1YGsJsr8cEQRhr6rBKbjIb/sJGtQAd6ikg9BFg2sWWB1t9AilYqR58QnP62LxfPhWo NNJw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from; bh=Xe++zp+Hh05Jlb+pK4WuxmZYz2xBi5Dm+GojoZZXueA=; b=Zo9T7b9Q655XJEhhYS24uAd5OTpSwxT8vWnwPHZDJr2tE+6Rs9345h7x4Z/6zdiDvM gz/RMmBAnbON25mXLbkW5kE98eIU6+Bv8mmgw19+9C1OeQC+nzIWs/UzJD9GsMUCwDpE 6jxrDD0J6MZ9nJih9T97TlscI8qmD3q//3/Uli5NQVAWs4C6MBCQau8IM5NDVeeo3/7R 8r9vy6ZT2vIRFohPzbAFQtt21b+qKbYpOQ+ZNPQl5pMiFAyTVZeVYYTZBleV6Ss/ZgbC tSveA8he+Ac8UQQ/1oHiI2RJifa7WAsIsC4p5Vmd7xXPn8wRQDBNxlIfpGvcPaWu+5U6 SD7A== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id y22si3381862ejw.407.2020.05.07.09.30.18; Thu, 07 May 2020 09:30:43 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727029AbgEGQ0h (ORCPT + 99 others); Thu, 7 May 2020 12:26:37 -0400 Received: from mout.kundenserver.de ([217.72.192.74]:40329 "EHLO mout.kundenserver.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726636AbgEGQ0g (ORCPT ); Thu, 7 May 2020 12:26:36 -0400 Received: from localhost.localdomain ([149.172.19.189]) by mrelayeu.kundenserver.de (mreue108 [212.227.15.145]) with ESMTPA (Nemesis) id 1MWRe1-1jeBD910tn-00Xufr; Thu, 07 May 2020 18:26:24 +0200 From: Arnd Bergmann To: Marco Elver Cc: Arnd Bergmann , Dmitry Vyukov , "Paul E. McKenney" , Ingo Molnar , Kees Cook , Andrew Morton , Thomas Gleixner , kasan-dev@googlegroups.com, linux-kernel@vger.kernel.org, clang-built-linux@googlegroups.com Subject: [PATCH] [v2] ubsan, kcsan: don't combine sanitizer with kcov on clang Date: Thu, 7 May 2020 18:25:31 +0200 Message-Id: <20200507162617.2472578-1-arnd@arndb.de> X-Mailer: git-send-email 2.26.0 In-Reply-To: References: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Provags-ID: V03:K1:Wu355d2keiT+DomNoCv1+GG6rk5RbqLzx+vkGjzDKtS+V3yIyQG 6ihXPPX397wJmWAjP409EOBm8Lb7F4b5kdcec4kIwwwPQ3FN9b+jjt07gItE5RG+npOFhnF AtoA281a5IOmWhWqiiCkA8G/24I7wTZjfyMeqvC3+U5TxLO3coNrS27G7XjimIPp7D7H7O0 AYIUgrAAEr4H3ddktCgrA== X-Spam-Flag: NO X-UI-Out-Filterresults: notjunk:1;V03:K0:bhWFnq9NWHo=:5tJlgXF+2Bv3nOEYTE0p9j NPqVpsQ/jxgKgi/vuEMU/q0I1znfnkbRj0TaJf7uMzprYNs6Z8WavH+Z0aIicQn7Qd1FAwuFA Xu3bmkkHmAjseqOjycwICf00icuCxzQFsCLKadIjQnpkZHLArutNStKOOg/rD/m9Zj7WEdEVs w1EWLd8ATnolfxyZfLfwGsaGV6zrpcSgy+wmQwCmKaa+7pQKxMzCvINVssmZxTaARcZJGb4kV UzfQ0DYqOigKSL8pC1Xt+piE5vr0Iwu0xfZzgiuzHUMnhQ37ra6wWPVkX2rPjuAHG+K1mPzfW aXC+84ux4k7hrjI5CmAQbb6VO8aTQE8k0fHTYoTTDMD+6Uo/XhkjQxe80wJWNBOomNtJ3nkD+ 3Z2MlGwgb892a/RLG/q9E3dDrsaAaRm0YarN0ljlJMhmeNA3oNMJDfK/1j2KI05P8Z6ynWsjr FFGd4tEXMOQHYZyp658iTwKGTpNtUDIz+NPtj3gFUd+OaBAU8t03wupeM5cUzyCsKwU92jGvr UEMvAhCl0mfH/Jh0wgfYydHKyJ6Gu2EV3cEjvf+J4TlKdE4sQvDDxcqoHXYvd3+lRPFNMOXBJ 8Rxayg6e5/Upae+M7PwLfv89k1XL2VTeyz6Th/E30Dq71RUqt1rsPVmWg7nFnQ1Vyq1TTYauU 6csJmqx1idVdulaXD70scaCmRvzLsI2pXDKhifXGNCEbJxeZGVpNRjdps2bdmpunI2PA57K5g fZ90kS53ULz00soz5VfAUg4LcH85CoZwE8YJWrYr9o0M8BgD0emMo8PmqGMyQIICOAvs/dXKF QJZfjlEvR8vhPJaFCyjkQX+mXRROG0zX7xkjfNm1qVeAM12amA= Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Clang does not allow -fsanitize-coverage=trace-{pc,cmp} together with -fsanitize=bounds or with ubsan: clang: error: argument unused during compilation: '-fsanitize-coverage=trace-pc' [-Werror,-Wunused-command-line-argument] clang: error: argument unused during compilation: '-fsanitize-coverage=trace-cmp' [-Werror,-Wunused-command-line-argument] To avoid the warning, check whether clang can handle this correctly or disallow ubsan and kcsan when kcov is enabled. Link: https://bugs.llvm.org/show_bug.cgi?id=45831 Link: https://lore.kernel.org/lkml/20200505142341.1096942-1-arnd@arndb.de Signed-off-by: Arnd Bergmann --- v2: this implements Marco's suggestion to check what the compiler actually supports, and references the bug report I now opened. Let's wait for replies on that bug report before this gets applied, in case the feedback there changes the conclusion. --- lib/Kconfig.kcsan | 11 +++++++++++ lib/Kconfig.ubsan | 11 +++++++++++ 2 files changed, 22 insertions(+) diff --git a/lib/Kconfig.kcsan b/lib/Kconfig.kcsan index ea28245c6c1d..a7276035ca0d 100644 --- a/lib/Kconfig.kcsan +++ b/lib/Kconfig.kcsan @@ -3,9 +3,20 @@ config HAVE_ARCH_KCSAN bool +config KCSAN_KCOV_BROKEN + def_bool KCOV && CC_HAS_SANCOV_TRACE_PC + depends on CC_IS_CLANG + depends on !$(cc-option,-Werror=unused-command-line-argument -fsanitize=thread -fsanitize-coverage=trace-pc) + help + Some versions of clang support either KCSAN and KCOV but not the + combination of the two. + See https://bugs.llvm.org/show_bug.cgi?id=45831 for the status + in newer releases. + menuconfig KCSAN bool "KCSAN: dynamic data race detector" depends on HAVE_ARCH_KCSAN && DEBUG_KERNEL && !KASAN + depends on !KCSAN_KCOV_BROKEN select STACKTRACE help The Kernel Concurrency Sanitizer (KCSAN) is a dynamic diff --git a/lib/Kconfig.ubsan b/lib/Kconfig.ubsan index 929211039bac..a5ba2fd51823 100644 --- a/lib/Kconfig.ubsan +++ b/lib/Kconfig.ubsan @@ -26,9 +26,20 @@ config UBSAN_TRAP the system. For some system builders this is an acceptable trade-off. +config UBSAN_KCOV_BROKEN + def_bool KCOV && CC_HAS_SANCOV_TRACE_PC + depends on CC_IS_CLANG + depends on !$(cc-option,-Werror=unused-command-line-argument -fsanitize=bounds -fsanitize-coverage=trace-pc) + help + Some versions of clang support either UBSAN or KCOV but not the + combination of the two. + See https://bugs.llvm.org/show_bug.cgi?id=45831 for the status + in newer releases. + config UBSAN_BOUNDS bool "Perform array index bounds checking" default UBSAN + depends on !UBSAN_KCOV_BROKEN help This option enables detection of directly indexed out of bounds array accesses, where the array size is known at compile time. -- 2.26.0