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 58433C3DA4A for ; Thu, 22 Aug 2024 13:50:01 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 75B526B02C8; Thu, 22 Aug 2024 09:50:00 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 6E28A6B02C9; Thu, 22 Aug 2024 09:50:00 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 55CA28001E; Thu, 22 Aug 2024 09:50:00 -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 367AB6B02C8 for ; Thu, 22 Aug 2024 09:50:00 -0400 (EDT) Received: from smtpin06.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay07.hostedemail.com (Postfix) with ESMTP id 850F716168D for ; Thu, 22 Aug 2024 13:49:59 +0000 (UTC) X-FDA: 82480014918.06.9C6FCC7 Received: from mail-ua1-f48.google.com (mail-ua1-f48.google.com [209.85.222.48]) by imf26.hostedemail.com (Postfix) with ESMTP id C340A14001E for ; Thu, 22 Aug 2024 13:49:57 +0000 (UTC) Authentication-Results: imf26.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=r38fcFeS; spf=pass (imf26.hostedemail.com: domain of elver@google.com designates 209.85.222.48 as permitted sender) smtp.mailfrom=elver@google.com; dmarc=pass (policy=reject) header.from=google.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1724334516; 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=6ppKkVe0CCoZvohxPx6OHDazO83RnHbxwEsZp1jfSt0=; b=d2LyO9SEyimbgutAPOEBWRH+8R4sMx4HeS9jBlCjkRAfRWZ41BgH2FSlDaWMhBKM8hXRBY 3yCkzAGcqnCMmuxFxl1MFw6uVcmhRLRal/P3iiTa6zXiquqpDIiGt/D7MzFy7kFgUGcwtZ VSzZbWRHuSssL75uNdTRQ2R1fJA49sw= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1724334516; a=rsa-sha256; cv=none; b=s5I2iDzjuTZM0XfcLzh5rJQqZpZouPcfUXyLN88lN+Sx40+sLIIN2FFmqnDTgUM0x10Wtq 88ttP9v0vYbDK2hvEGbo/AMsOUqWgcdvQAIHogyEx5gJPz2jh3lFTFsMLB7l/Kcg/j46gn pwhLJzWJlLV4JIPE5efagC9U77cl+64= ARC-Authentication-Results: i=1; imf26.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=r38fcFeS; spf=pass (imf26.hostedemail.com: domain of elver@google.com designates 209.85.222.48 as permitted sender) smtp.mailfrom=elver@google.com; dmarc=pass (policy=reject) header.from=google.com Received: by mail-ua1-f48.google.com with SMTP id a1e0cc1a2514c-8430557e436so281366241.2 for ; Thu, 22 Aug 2024 06:49:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1724334597; x=1724939397; darn=kvack.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=6ppKkVe0CCoZvohxPx6OHDazO83RnHbxwEsZp1jfSt0=; b=r38fcFeS2tiYRknVeS3CpmjVEL45E6tlz1lxpVOOUqdL5+6Fxvrm8a78KHmZRM9vAy rEtpkAANattxmEbiwu+kxQHvJTUVJDbpsZ7CSCIogM1pssCbwR0tbbIiOmqk8/TMgNjC E7fwIhsgSgCv6WDwfWdA0Xa0h7H02ZNLeLE+bl5NStbxCwPAD1tOV2Uu/mcW0DPsu+DO nMkHSsH+DRCa2nnRKYpQcz0SlWjw7rkXoZERCjaEjGAYOnFcld8FPiX0QQf1pV8U0eMX wJxeZdbtI43qkI2Zl6u55QgDfxRb+8Fhab4+C+Edw08XyRYgLzx0VyLwtD2LYqkG7J5s Vmzg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1724334597; x=1724939397; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=6ppKkVe0CCoZvohxPx6OHDazO83RnHbxwEsZp1jfSt0=; b=CD7NkbLRH7fVkIAbc1H+QZiTt3jDZ0ZBu4o1lv93Lxfaos9er9h8rjAOjKSz45bvwS gVccA9NMuR6NaJ7L05uZxxx6EEN114GsA1d93uNoF/iBLyDbgpoOQD55bu1mmy/Exz1G 7RxzKiXvqHv9WfbxvZOrqLumsuDnAFM9pdnnHJ+T29oXrQjQifjFteO3mhvIpwGBIkoe ZcXAiqvWysJNXhf0XwVmxNUvy+NYq2YqJrsScgdGla4zoojfxMkQmDO2Ob8gqBdnqP3w bEGuIz7IWG2yLFWK096ejUUl3ApIW6qKStz/3JPR4hAmjzu/2qIQF7QCvUAc/HuSWBaV 84nw== X-Forwarded-Encrypted: i=1; AJvYcCXA14HGRV+o3wseI8wjgbXr/M/Qau15TxWBfHz8FEe2MUWB0t+eUhal4GDwrP3z5p06TVpSxaYp3w==@kvack.org X-Gm-Message-State: AOJu0Yyyao6xrjfw4f/H9P18NFD51C2Hh4ZKJLUHEWYMOQvMPldQRzXk Gi0vD1BThPXvhdFOYG1NPJsMiVhMfw71i6N/VHXRZBzYUPmuXL0ALdKlbLHtREzCFlGV0ugvqmf 8YmmCfw9x4G0zCDsJL+8htufpX+LWJzLQm7RQ X-Google-Smtp-Source: AGHT+IF1UXEKeoh9abtkbjAFOamRAl6saz7m+vyjqnH5wDBvpCMw/i2623dgQQ8KaAI5kVAXi9vIjE2gkVX8zHrBfzo= X-Received: by 2002:a05:6122:3125:b0:4ed:145:348f with SMTP id 71dfb90a1353d-4fcf1b64a4fmr8813741e0c.12.1724334596612; Thu, 22 Aug 2024 06:49:56 -0700 (PDT) MIME-Version: 1.0 References: <20240814161052.10374-1-andrey.konovalov@linux.dev> In-Reply-To: <20240814161052.10374-1-andrey.konovalov@linux.dev> From: Marco Elver Date: Thu, 22 Aug 2024 15:49:18 +0200 Message-ID: Subject: Re: [PATCH v2] kasan: simplify and clarify Makefile To: andrey.konovalov@linux.dev Cc: Matthew Maurer , Miguel Ojeda , Andrey Konovalov , Alexander Potapenko , Dmitry Vyukov , Andrey Ryabinin , kasan-dev@googlegroups.com, Andrew Morton , linux-mm@kvack.org, linux-kernel@vger.kernel.org Content-Type: text/plain; charset="UTF-8" X-Stat-Signature: 6rscuowaynq4au55y7thhkk8hz6a73sp X-Rspamd-Queue-Id: C340A14001E X-Rspam-User: X-Rspamd-Server: rspam08 X-HE-Tag: 1724334597-836728 X-HE-Meta: U2FsdGVkX1+xy88ybcRGBWOPdS+BymOJ4UnRqGtAiVA4r4t+hQOYpp9394jwEgEavv+e2+mrnPsu21zTt6W/P5bQA9hW0sa1V0LmKo1NQstUOGVKhLtz36RMOuHSa1x5fKK5pBsx0nyKVLKq1TunMRmLiPnyLF8nqcOIOl8HHdKarooU0+vYLJK7+GsKJwJ7+T5K6IC4zX7oI50Up/BxMmsJJlraS5GEzepY8wzmVbEgnbwFVKkLcM6gmrV7/fbtlV8PLRyftcuwyLiOpuPvMcX8cgP077wsEsY8IWV7BRyU0AKcuEAP0GdaBTrboKzS7O10HyG4Fs7nRx33b94OcRVCfMVp2fWlsNOnrYbFtFyFp3JptcDYLRF+g/UhQxMTycDlpCt6zkVFd4kBAuYg7oP/XZvPlyv+KQW9uNJX+mV8E01XhKEwi8MKGW5mrczeBwtvmwAUHDcO9iZzWvHutaCvWpQ1h56AVIJraYfd9A8hpL/5XDJNb6xVOMTgajEItchxCVtWn4Kkh9AVFqyPmGgUYxs6unPTwRZC8tEU7hKdaDvSuKrgECqEnGSYJ9qoNCnvEIeP5Z91h4dlvuf8I/DiP9hQV/AawZygsEABpwd2WDV0ynyizPAl1uLB2uSYPKWiNS/7yzyQoDmgFVl1Gt2e9UXa51WOSkRtSKf8nsxSkgvD1QdUFmAbYw/MwcPJ64cfgdXGw8/JIVXwPqWEs1954lPqM1ZJuIGLNMmWNhwZ7UHaULNTNJHxijrc3rkX4ncjhJVv+kX8MUuOOZxSGKAoX5uL0pt+uXPiUjo0f7wx2vFka6ZyX3HBNOT+rCjpcZFa1eYqLvR969PF0VkLlLOFXf34S0DJHcN6lndiXETHCneLNLNhluGs4/dsV43wt7GibX7nuRzGpzw2OWW2LNvyXaR1OPJpYnMCJGGgow0g6Jsm6iVPzQVfiujwa/l0CgEGmKhjSmZ6HF2WRXA 1THAs8r8 tIsAx221RtN4eJqE4gLGLMpnFupWHj0ySV6JeD7f3AOhkBFIcAovZ6e0n4lcOLOcTjeuNkueCnwU58mwpO2zpzoEF7wUfk4TX1HhyuAnQ25qMXjL7k6txf9mFWiL9c13mQR+eDaeHFIBjqruB6QkhXU2QRrX6iX8TEJYjg3BW0bxuhYtZxBv3rk86ZSUin7JI4akuX+FLCke83J0WQYoLXyredu6RmLLIg7L5RXngX1h+0Mf9hH1m5Vp86Nui5tesJIyXvK1mc6Kmis4CxDg+FI9tPwOP/0GIGl3w X-Bogosity: Ham, tests=bogofilter, spamicity=0.000047, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: On Wed, 14 Aug 2024 at 18:11, wrote: > > From: Andrey Konovalov > > When KASAN support was being added to the Linux kernel, GCC did not yet > support all of the KASAN-related compiler options. Thus, the KASAN > Makefile had to probe the compiler for supported options. > > Nowadays, the Linux kernel GCC version requirement is 5.1+, and thus we > don't need the probing of the -fasan-shadow-offset parameter: it exists in > all 5.1+ GCCs. > > Simplify the KASAN Makefile to drop CFLAGS_KASAN_MINIMAL. > > Also add a few more comments and unify the indentation. > > Signed-off-by: Andrey Konovalov Acked-by: Marco Elver Just in case, did you test SW and HW tags modes as well? > --- > > Changes v1->v2: > - Comments fixes based on Miguel Ojeda's feedback. > --- > scripts/Makefile.kasan | 45 +++++++++++++++++++++--------------------- > 1 file changed, 23 insertions(+), 22 deletions(-) > > diff --git a/scripts/Makefile.kasan b/scripts/Makefile.kasan > index 390658a2d5b74..aab4154af00a7 100644 > --- a/scripts/Makefile.kasan > +++ b/scripts/Makefile.kasan > @@ -22,30 +22,31 @@ endif > ifdef CONFIG_KASAN_GENERIC > > ifdef CONFIG_KASAN_INLINE > + # When the number of memory accesses in a function is less than this > + # call threshold number, the compiler will use inline instrumentation. > + # 10000 is chosen offhand as a sufficiently large number to make all > + # kernel functions to be instrumented inline. > call_threshold := 10000 > else > call_threshold := 0 > endif > > -CFLAGS_KASAN_MINIMAL := -fsanitize=kernel-address > - > -# -fasan-shadow-offset fails without -fsanitize > -CFLAGS_KASAN_SHADOW := $(call cc-option, -fsanitize=kernel-address \ > - -fasan-shadow-offset=$(KASAN_SHADOW_OFFSET), \ > - $(call cc-option, -fsanitize=kernel-address \ > - -mllvm -asan-mapping-offset=$(KASAN_SHADOW_OFFSET))) > - > -ifeq ($(strip $(CFLAGS_KASAN_SHADOW)),) > - CFLAGS_KASAN := $(CFLAGS_KASAN_MINIMAL) > -else > - # Now add all the compiler specific options that are valid standalone > - CFLAGS_KASAN := $(CFLAGS_KASAN_SHADOW) \ > - $(call cc-param,asan-globals=1) \ > - $(call cc-param,asan-instrumentation-with-call-threshold=$(call_threshold)) \ > - $(call cc-param,asan-instrument-allocas=1) > -endif > - > -CFLAGS_KASAN += $(call cc-param,asan-stack=$(stack_enable)) > +# First, enable -fsanitize=kernel-address together with providing the shadow > +# mapping offset, as for GCC, -fasan-shadow-offset fails without -fsanitize > +# (GCC accepts the shadow mapping offset via -fasan-shadow-offset instead of > +# a --param like the other KASAN parameters). > +# Instead of ifdef-checking the compiler, rely on cc-option. > +CFLAGS_KASAN := $(call cc-option, -fsanitize=kernel-address \ > + -fasan-shadow-offset=$(KASAN_SHADOW_OFFSET), \ > + $(call cc-option, -fsanitize=kernel-address \ > + -mllvm -asan-mapping-offset=$(KASAN_SHADOW_OFFSET))) > + > +# Now, add other parameters enabled similarly in both GCC and Clang. > +# As some of them are not supported by older compilers, use cc-param. > +CFLAGS_KASAN += $(call cc-param,asan-instrumentation-with-call-threshold=$(call_threshold)) \ > + $(call cc-param,asan-stack=$(stack_enable)) \ > + $(call cc-param,asan-instrument-allocas=1) \ > + $(call cc-param,asan-globals=1) > > # Instrument memcpy/memset/memmove calls by using instrumented __asan_mem*() > # instead. With compilers that don't support this option, compiler-inserted > @@ -57,9 +58,9 @@ endif # CONFIG_KASAN_GENERIC > ifdef CONFIG_KASAN_SW_TAGS > > ifdef CONFIG_KASAN_INLINE > - instrumentation_flags := $(call cc-param,hwasan-mapping-offset=$(KASAN_SHADOW_OFFSET)) > + instrumentation_flags := $(call cc-param,hwasan-mapping-offset=$(KASAN_SHADOW_OFFSET)) > else > - instrumentation_flags := $(call cc-param,hwasan-instrument-with-calls=1) > + instrumentation_flags := $(call cc-param,hwasan-instrument-with-calls=1) > endif > > CFLAGS_KASAN := -fsanitize=kernel-hwaddress \ > @@ -70,7 +71,7 @@ CFLAGS_KASAN := -fsanitize=kernel-hwaddress \ > > # Instrument memcpy/memset/memmove calls by using instrumented __hwasan_mem*(). > ifeq ($(call clang-min-version, 150000)$(call gcc-min-version, 130000),y) > -CFLAGS_KASAN += $(call cc-param,hwasan-kernel-mem-intrinsic-prefix=1) > + CFLAGS_KASAN += $(call cc-param,hwasan-kernel-mem-intrinsic-prefix=1) > endif > > endif # CONFIG_KASAN_SW_TAGS > -- > 2.25.1 >