From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753221AbdK3Qdb (ORCPT ); Thu, 30 Nov 2017 11:33:31 -0500 Received: from mail-eopbgr40121.outbound.protection.outlook.com ([40.107.4.121]:12903 "EHLO EUR03-DB5-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1750742AbdK3Qd1 (ORCPT ); Thu, 30 Nov 2017 11:33:27 -0500 Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=aryabinin@virtuozzo.com; Subject: Re: [PATCH v2 4/5] kasan: support LLVM-style asan parameters To: Paul Lawrence , Alexander Potapenko , Dmitry Vyukov , Masahiro Yamada , Michal Marek Cc: linux-kernel@vger.kernel.org, kasan-dev@googlegroups.com, linux-mm@kvack.org, linux-kbuild@vger.kernel.org, Matthias Kaehlcke , Michael Davidson , Greg Hackmann References: <20171129215050.158653-1-paullawrence@google.com> <20171129215050.158653-5-paullawrence@google.com> From: Andrey Ryabinin Message-ID: <7e9f3194-17c1-9dc5-9392-748801c831bd@virtuozzo.com> Date: Thu, 30 Nov 2017 19:36:54 +0300 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.4.0 MIME-Version: 1.0 In-Reply-To: <20171129215050.158653-5-paullawrence@google.com> Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 7bit X-Originating-IP: [195.214.232.6] X-ClientProxiedBy: HE1PR05CA0212.eurprd05.prod.outlook.com (2603:10a6:3:fa::12) To DB6PR08MB2821.eurprd08.prod.outlook.com (2603:10a6:6:1d::24) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 8a8ceb84-a907-4dca-212b-08d53810142f X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(4534020)(4602075)(7168020)(4627115)(201703031133081)(201702281549075)(5600026)(4604075)(2017052603286);SRVR:DB6PR08MB2821; X-Microsoft-Exchange-Diagnostics: 1;DB6PR08MB2821;3:3lenj3W6w9oO+RYMRepx58u3Q1XbBY4hNkPb2ctdXdKfMtFnGa6Bv4I8hTTtJR2H7SxdvE/VGaFMwexmnCSfgznOO2tu6LzgUtoqm86udu1HnGg5CnQwGNXmarnbVo3swaWFEC2CP5Gdse3xM2x/Hbitl2VNb33TnelrBg4xqGojo+M2T7+srSeqXUCvvXWtJwFZVWwQrWAYaKAxDehxeflUHJFCwSbzsGrCzcH4mwjPpaLFAcZfRQd6jUYKdA1V;25:flV2pwpHblUSR2Q5bTa+optPg8gkL31tKTWpDrCqS0vNYrVL5+V9+beYgkkwcW3EjE8jaV48upSZDlsQyr6v1xta5zzMCmXcYMB9iNnYOJpth/xcUtgRHX+Vc0lDdL0Z2us79WUaXLMSZFzBKGXHu5YeMOX6IeMkPUaA/fNEh2h5AdoWVk44yyi3P3PjxiUdSg9cNkp79rsbFGF5b2cia9AJ9OqdRMhtPUYItxn9B91IacHd6r9plhRPNhSRr66mPjITgehhGG2JKWLMBKuOALudtWoLXfJjrQMikGGIjoiUGW2JxeGvtS5SmFnmr+2Lx0XktYsvIwu4TYxxQ5rWGw==;31:ipmagQUlezMYVs7LtvLsdZWvv/bNB9xcF6cLMJMlPU223hsvyED8Rd117oMPTQ3OoPDCt3fFlI3W9O8BDN4Oxe1xpxoovOizWf4Aqq1ZH7QjCK7PwD74RBVfJXsge4qFdnmHblstzwSKu5MIZJY82Uhi01P7F7Ho9MxbG9Du98psoXEnirBVzc1+4aLu+aL5ZKJe6bLAyGxyVPMcWyNC9ix729xfrJMwc60TNfC+vW4= X-MS-TrafficTypeDiagnostic: DB6PR08MB2821: X-Microsoft-Exchange-Diagnostics: 1;DB6PR08MB2821;20:Nvim9gLhRpGID+AOvQq+29I+nIQL0AOJIDnRv/9SdrB5TBXTXCP3T9amhhCV/0DNh4grM+d5eyGCXT45jj2Bta7AzbCX1iwfC612hO2AjOzjU3urrTltD9WcztFin45tar+jBL69+ri3y4hY0aiOFUPs3wMinO3WJhm8q/0GUVWcBFu2enX4izg3I/CUfEabAzK6z0N/TeQMXtMTIKIULKPLac+75fzx5OrbHqdZDx62XYzGQOCVhmIrSBoyt0A9NXNugmgalkM5BFhIFLQM85By5ml0G+FgpwMF9wjEZOasRGoyGQ1t/B07ZQ4UVHwc1DJvx/+Cn2RUtzcZ8g06AtPcKVCQANgej2wQ2uq0ndSI2aurBovQL+lBclCme/X6z7MN+j7aXNAZc2SOWh8FPvKunRajPzRcqp3qnbh0iTI=;4:yPX8B/94WnGkoa82JVrGvHy1Dh2L5/N1vMAkAdebezDraEkYu879zrwtgb9JV7i0eLfb4vrmPP71xnNQfSooUkaTIuxV7CjUa8Jq8ZvsLIJJxqjfeEzyb/8mGwWO5JmJvSyX/fWf2Y6RSGJWfrTBWFn3Z83n5HgmuBRNk1SAGDMuZ1dhYULyZjv+g3PzJIr8QApw6ZulMTCtCd9blEEk3Y24YiwIQ+GzgQxPPZDC5TIKBwjZnlkFDM72LWWxU/r4rNSVA12AYFU/a0L65KQVe5LlQGPjt+a6AU0251TLdEI0d8R9hMvnN1NNaRNu0DKljRNotYhd1voC23DMhz8caFJzVGqRMUNS9mOTisOyVEw= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(211936372134217)(153496737603132); X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(6040450)(2401047)(8121501046)(5005006)(3231022)(920507027)(3002001)(10201501046)(93006095)(93001095)(6041248)(20161123560025)(20161123558100)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123562025)(20161123555025)(20161123564025)(6072148)(201708071742011);SRVR:DB6PR08MB2821;BCL:0;PCL:0;RULEID:(100000803101)(100110400095);SRVR:DB6PR08MB2821; X-Forefront-PRVS: 05079D8470 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10019020)(6009001)(6049001)(376002)(346002)(366004)(24454002)(199003)(189002)(6666003)(68736007)(105586002)(4326008)(77096006)(50466002)(229853002)(58126008)(31696002)(6486002)(16576012)(31686004)(6116002)(47776003)(64126003)(97736004)(478600001)(316002)(25786009)(16526018)(2950100002)(36756003)(52116002)(54356010)(76176010)(83506002)(50986010)(54906003)(110136005)(7416002)(230700001)(189998001)(23676004)(52146003)(8936002)(34040400001)(7736002)(5660300001)(8676002)(33646002)(81166006)(81156014)(305945005)(101416001)(2486003)(6246003)(65826007)(53936002)(2906002)(65806001)(3846002)(53546010)(106356001)(66066001)(65956001)(55236003)(86362001);DIR:OUT;SFP:1102;SCL:1;SRVR:DB6PR08MB2821;H:[172.16.25.12];FPR:;SPF:None;PTR:InfoNoRecords;A:1;MX:1;LANG:en; X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtEQjZQUjA4TUIyODIxOzIzOm1NbFRUK09sSC9HUEJUNXQyeCtyNDB3QzBk?= =?utf-8?B?NFc2OCtMaWMwT0pHT2s4T1ZuTGNmaHFGMDIwYk0rZGRsRVd1amloaDI0Nk1k?= =?utf-8?B?S2NnaDVxbHJMakVVUEZ3TEZkREM0NlRMUjlNa1ZHVkpQSXdFcVhRcW83Rk51?= =?utf-8?B?Y3JTTFVUUVlJTWdkOXZuWUtUdXZKUDVnTk1Ycng3REJsL3ZlZTBvYm1WNnRO?= =?utf-8?B?N2tSVDJ0VUsxb01ZeXk2TGF5aWIyanIxd2dVeFhUblhIZk5FNkJRdmcyY05E?= =?utf-8?B?QVByaDlWbzBSM0I5L2hNbDVYa2Z2MEc0ZlZVb1F1SUp0NVNqdU92eUZULy90?= =?utf-8?B?cG1zWFY0YXhjYUZON01hSURZOGpydFB1WDg4anlhUkh4S2t6dDdRQjErQXl2?= =?utf-8?B?NVMwM1hpNlJaRjBoenhmRU1TMTltdURraTYzN2lWbXZuWTRqN2ZWTENpQ0VB?= =?utf-8?B?K0RBSnBxQjdMQ3prejJqZFg5dE80VWsyK2xiMmFCemVnVnZXRzltVnFHYUdz?= =?utf-8?B?TmlWYkl2dzRna3FmZThCdExkNk9JaGpPYnpwQzIwak5FdlVUM0svSVBPU3Jp?= =?utf-8?B?UVhXd2h6c0JIckk3TmpOVnRJbFRqSS9jTGgvNWVTQVo3L0l6a013bFZUT0Q2?= =?utf-8?B?eTBFWDJuVnZhQ3VMQnU5OTVKclQ2TDgrSzBIRGY5bUJySGZCSjN2Qnd3ZFVZ?= =?utf-8?B?MXc4WVZ3U1UzbDgyb2VpYnZJaEdSbGozWTdpcTJwY3J1bUwvSnNpVWt3Z1RH?= =?utf-8?B?Q2JTOXUzdUpDSEJraEEwQmtsNWVzSVdaMkhmVDdiaWc2dG9ZTTlIWjJrczJQ?= =?utf-8?B?YmoyOVBVUXdzLzJKQVFFbU1xbmxlR1Z1U1V1cHkxVkNZSjN2T3VSS2VLNHRS?= =?utf-8?B?RHAwYWRMVTJvUWFpalUrVjBtZUZPdjEwN0hhMTkrUHpvRlBURDdHMjJ3b1Ev?= =?utf-8?B?Zk1VeGtWZXhHN0MzZXJ6R1YyTHRkMVJyYWhrRlU0SXNVOVkrenhYUnoyd3M3?= =?utf-8?B?T0syZWc4SDFXZjlGeDdpUHQ4b0ozUFdSTzk5VnM4Vzc4ZlVpNjhzUVpLNDNo?= =?utf-8?B?UUdhSmFxRDVaWU5wNTk1STdZVGhOTTJCOVpQNENxQld2MS9PNEZzNklwbVU3?= =?utf-8?B?THhUaDVWVlhNY2VpMnFScFV6cy9PZFdET25BRlVNS3h1VWdydnpBZWZ5VjU1?= =?utf-8?B?d1ZCaXhHdUc4QS9vZDJWOVhTdEUyT0lTRGhKNkJWYit5Ym03ZVNTY0cwTDNL?= =?utf-8?B?WlJhUmVLakM0N1IxT0htYVFoYkVXV01zTmwxcjhwZlRyTGUwdDFXVzg4Ym1S?= =?utf-8?B?OGpwa0FJRHVxTzliYVIrQndtQWZNYVgwYmhHR0JTekVYa2ZlSGFoZW5tNjdN?= =?utf-8?B?RlB0VFZQWXBnbnh6TTZyRGdETzRzNTdqTHR3TXZIRGNQQ0xvUGNJQ0tQQ2Q3?= =?utf-8?B?UzNwZnB2eER6blpNeWVGSk5tTXIzSnlmWjRIMVA5Z2I1U1F0K2g4M2kybHJl?= =?utf-8?B?UCtzblp3cTh2UVNjQ3FSSGZFQmw5NmJWWngzSWVSYm1HQmpqYlRielhwUS9K?= =?utf-8?B?bGFTdENtcWRLekp0VXVNM1hvUi9oWDUrdFJXTVlrN1g0VG10L2RCNE0xbFhh?= =?utf-8?B?N1E0SFIxVlNJTmxKK1JITmdJK01KcElVM09jUHc1NnBURjIwN3JlUEdxVWJp?= =?utf-8?B?Y0dzcEVEMDJSNlJjMWdkMVVRbmxyM3lTVEZXQ25FS0t3UGcxc1E0MFRKY2o1?= =?utf-8?B?Q1VZYllQbVlaZFRqajJzV2VMOWFwcGpnR2RIYXpxS1VrRFRlT0wzOEYxbUQ2?= =?utf-8?B?YU9yaTFzYit5NFNpcU9YRFNqNVU2Y3FkQ2N0VEZmOUkyVjhLUk1qQ3JRZVBs?= =?utf-8?B?MFNTMHFjNm9VS3EzVFRPWkUvcm5oZFZiSS9lTWtQaW1yajZ6VTg1L29pRkdM?= =?utf-8?B?TjhzRTV3cUFsczJrUWppajJ1M1Z2RmFlcVE2RHJRWjVxTDV0V0ZDTE9UTWtW?= =?utf-8?B?SEVYQTZnNUFZTnl6eTJTamZTRjJCaDJqajUrZz09?= X-Microsoft-Exchange-Diagnostics: 1;DB6PR08MB2821;6:/0LHepiPH+K51i6fjtYpCALGhFEDZe1GmXA/7Cwr1kgmVYPJiAtOukvsSgomkKSD8wIUt2qsEuo2B2zPgbjUty+dt+bq6hluw2sXuQ5ZLppXiQFdq3UM7XgjFVoJcv/utudKVULD2+LYDx6XxZfxrs/dF7exb9eMW2HINGerTmhDoKWywZOR8gPVziASje/26SViSVnLMw1Dp90MeENzTqcj+X7CLgMVUqMk1lHc0rQZSNuQbmi+JTcCytDa32wtgoCyXAbD4P22ZTuTvcZhMRoNPTx71RjHyUEpD7Z5q8EKdR5zzSCMoAmk3hrEuYsYnBJU/tjySemDh/FVvCrbMNdavY+Z+rRhNxVQAGzI4Dw=;5:rOgqMmca9tC8YbE/BWyxPf6cnFee8DpPXATf/oQSqDw4xbRmFkbXjEzzX5H60BKzQ/RTNm6X5odXyCUCC8hrWykda032eACdJj2fL31f/TTEVgm2TqTFzGWZLM/I1TQEEXBur3O8XHdI4ZnS11Ceh9kzE9vAOBzxqqVAtkT5jxc=;24:wE27RKLYikFSePr6vs/bJlzjBUGN6NwJT1bwNr/E7gVg3X2UN9KnRqJDq/u1/WGxSmrjaCtRrINzBz9ImifDuo50tiDyiTxxIO8BX1YO5xg=;7:s2rQi/xamszLD+EGlxMMVmjwbmS/Txs1SzLXOK20VwW/yE6AboF49cAGPnwuqvKTlwM8zNQaYmqq5rHRRfuM9B8EksqmUmrYo8s4GbS37KrT9R++sTAuMK51sS7Id9THJtMkD6ycT1Wx0L+QI8DyEk3vtZKOgLMt7+M9iAXIdFcTuEwjwq7y1y7G2NyFejcPpXbp/UjFWerFvzVCG27RS35xauxfz2l/aIzuPT7kApghKSP9wpva6KZwtkpThU3C SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;DB6PR08MB2821;20:RqcMg/SoKSMxxrUFU9gU6cwm/VcXIwjN9crRFKVpbRPTz/qt985J8vEjOjDjWCgUFx//HBjuB4Ctx7JB8ATpRz9rW6oYEZxhjQRCEQXIIFNRdH9OlDQTBU/TuzOuSvDq31LJDEKQmY7FaJMbpX2a3BM+H9XhQs5tEI7f2X7lu+Y= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Nov 2017 16:33:24.1277 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 8a8ceb84-a907-4dca-212b-08d53810142f X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 0bc7f26d-0264-416e-a6fc-8352af79c58f X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB6PR08MB2821 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 11/30/2017 12:50 AM, Paul Lawrence wrote: > Use cc-option to figure out whether the compiler's sanitizer uses > LLVM-style parameters ("-mllvm -asan-foo=bar") or GCC-style parameters > ("--param asan-foo=bar"). > > Signed-off-by: Greg Hackmann > Signed-off-by: Paul Lawrence > > --- > scripts/Makefile.kasan | 39 +++++++++++++++++++++++++++------------ > 1 file changed, 27 insertions(+), 12 deletions(-) > It looks rather messy. Try the following patch. Note, that I didn't add asan-instrument-allocas=1 because it has nothing to do with LLVM-style params support. asan-instrument-allocas should probably be in the patch that adds alloca() support. From: Andrey Ryabinin Subject: [PATCH] kasan/Makefile: Support LLVM style asan parameters. LLVM doesn't understand GCC-style paramters ("--param asan-foo=bar"), thus we currently we don't use inline/globals/stack instrumentation when building the kernel with clang. Add support for LLVM-style parameters ("-mllvm -asan-foo=bar") to enable all KASAN features. Signed-off-by: Andrey Ryabinin --- scripts/Makefile.kasan | 29 ++++++++++++++++++----------- 1 file changed, 18 insertions(+), 11 deletions(-) diff --git a/scripts/Makefile.kasan b/scripts/Makefile.kasan index 1ce7115aa499..2af5977c394d 100644 --- a/scripts/Makefile.kasan +++ b/scripts/Makefile.kasan @@ -10,10 +10,7 @@ KASAN_SHADOW_OFFSET ?= $(CONFIG_KASAN_SHADOW_OFFSET) CFLAGS_KASAN_MINIMAL := -fsanitize=kernel-address -CFLAGS_KASAN := $(call cc-option, -fsanitize=kernel-address \ - -fasan-shadow-offset=$(KASAN_SHADOW_OFFSET) \ - --param asan-stack=1 --param asan-globals=1 \ - --param asan-instrumentation-with-call-threshold=$(call_threshold)) +cc-param = $(call cc-option, --param $(1)) $(call cc-option, -mllvm -$(1)) ifeq ($(call cc-option, $(CFLAGS_KASAN_MINIMAL) -Werror),) ifneq ($(CONFIG_COMPILE_TEST),y) @@ -21,13 +18,23 @@ ifeq ($(call cc-option, $(CFLAGS_KASAN_MINIMAL) -Werror),) -fsanitize=kernel-address is not supported by compiler) endif else - ifeq ($(CFLAGS_KASAN),) - ifneq ($(CONFIG_COMPILE_TEST),y) - $(warning CONFIG_KASAN: compiler does not support all options.\ - Trying minimal configuration) - endif - CFLAGS_KASAN := $(CFLAGS_KASAN_MINIMAL) - endif + # -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 ($(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-stack=1) \ + $(call cc-param,asan-use-after-scope=1) + endif + endif CFLAGS_KASAN += $(call cc-option, -fsanitize-address-use-after-scope) -- 2.13.6