Received: by 2002:a05:6a10:87d6:0:0:0:0 with SMTP id g22csp460606pxr; Sun, 10 Apr 2022 21:11:34 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxL2WcSJydfncp7cx0biGOL/sgtXaOZSxpprb1GmKnrXxR2ilRNBbFZtU8gbP/A4Xx8piTU X-Received: by 2002:a17:907:3f03:b0:6df:b04b:8712 with SMTP id hq3-20020a1709073f0300b006dfb04b8712mr28582351ejc.290.1649650293953; Sun, 10 Apr 2022 21:11:33 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1649650293; cv=none; d=google.com; s=arc-20160816; b=jXVLHlRgZK00k/q/u1JdxPUxcDX3eiRakln1ajE9mZGVhnzA+UZoJ1y+s2GTv1hy+A PmOSD2AqXXSapntxtqhrMWkaOZTpcKJ4Q4jVlxwaHSAAgQEGXC73I9sFzvMJB94Tnov8 hujPwjyfJCubR2oOU34OuAhbrlhYZYtTujgTUftmmu0zqGEDnxXjhp+ESkDqL5hFGRCq ApDvsLYkbDSjNbibsvugmg4fk6ag1aHHL9z+4BeBczky2XP9vXWlR9mUiOdFGSy7yZiR 0elDNBOmolUWpvESftwEFs7WEX4xxKkzRBx1HELQk34dCQp3lL7cTFWxYVMthxNhOv02 fECw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:subject:message-id:date:from:in-reply-to :references:mime-version:dkim-signature; bh=gWnxP81Krl1/ek3smnFr/1fIQ4FLd2YLVlnmdEEfWNY=; b=LpkM3o/v0WfyqQH4qbc7yMs9r8McMxgontI8zIxMc68TN+g3Q09rQ0pVqOypCcT2dy BIpfQBWME5fpuX5yzBc+8YMnp4Mtp4qrddege0gYlvX6ANmXxPPpD/d8N2lVmagAR4ka vbAL3f8saZhMf/cJAglfBaF2v2DMYQDLPLuE5+quOzvBxT4HcgFTsDbtWCS4dAdY5USM lqJr/j1RdY+m1Zt2cPARLZira7hgKBFtU0xJGkafIrEB+kWKErFi3iC26yVjX4oGZ/sy /fVZqBQwK4iQjOF6wohZs+33HAgIUnPLeZrL7pZMcYFhHyJb0A+gL6h3au5AD6rWnrez HcRg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20210112 header.b=qpY9QBJF; 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=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id w19-20020a170906185300b006df76385ce5si5936292eje.389.2022.04.10.21.11.09; Sun, 10 Apr 2022 21:11: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; dkim=pass header.i=@gmail.com header.s=20210112 header.b=qpY9QBJF; 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=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S235450AbiDHMwP (ORCPT + 99 others); Fri, 8 Apr 2022 08:52:15 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:36034 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230294AbiDHMwN (ORCPT ); Fri, 8 Apr 2022 08:52:13 -0400 Received: from mail-io1-xd29.google.com (mail-io1-xd29.google.com [IPv6:2607:f8b0:4864:20::d29]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 6D05159A64 for ; Fri, 8 Apr 2022 05:50:10 -0700 (PDT) Received: by mail-io1-xd29.google.com with SMTP id h63so10387386iof.12 for ; Fri, 08 Apr 2022 05:50:10 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=gWnxP81Krl1/ek3smnFr/1fIQ4FLd2YLVlnmdEEfWNY=; b=qpY9QBJF9tmKjitl46Z5T+orRb9634UQpMZOb4n219nmn3FiakgsDIkqjDAiWqitn/ 9YD9Wdxei9le2dgeXk/xmaCfI3W+YaddTAWyNShSpFB/fkXMRtZm79jDd6GlXtJJuk8t abOs2R4wLAGiMT5O8VfIQeaRntSLQmT87LhADlaVTGLt1DMR2cCthjwqyV3K6Jitn3CY ZXe428mTWq76ki3zT8K2Q8uR7h9GqmB57i8lqXWk3vFYe5Ezg8s1yWvwebKkbCpuh2ak /zzCMuwahIWpNm86bi2EkZTLw3QD0Zh89X/18OdKMgzpwNJ5TYKpJjcFH8x0ufBblXiO 0HMw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=gWnxP81Krl1/ek3smnFr/1fIQ4FLd2YLVlnmdEEfWNY=; b=8Bxz9P9vGYgxOrYxhHek0bL1YjV8vqvmNMWZXeL0vCrfazStqC7QXH60ebW3GjYRrj hEO0PeNbhutC4jcV/Th0DkYSiB3AHk7chi8aRfQYxzQlIsdvf4dtM7mMBo1bjfdzIh7C 2Q1NWdUsR7dBnJGauLnccQ5RttT/Pv5wKT+GX1j/gzxgB46QsSxJ64cjx9rKNvR2IgwT 5RmIodCdKfugQOYky/BEZa8Bb6RwkL/5ZPGgxBkdpTopgZw5mQtxgz1u9OgYk3kFO7uh xczV0GUBz5bUoKu3oJeps19xkX3UQRhrCU3E4sk71+q3qSpQ1axtkl0mUdwOzb9mX4nO jjDw== X-Gm-Message-State: AOAM5324Dg3FzIvfQvRQgXVz8nnxTnLrD4uZbkKE8HguE6mnxJsMtYzP UagMKQ/oR0om17YlnZYteZmUsHmxtqRVUj1gusI= X-Received: by 2002:a05:6638:cd3:b0:325:ff7a:4f79 with SMTP id e19-20020a0566380cd300b00325ff7a4f79mr874384jak.22.1649422209917; Fri, 08 Apr 2022 05:50:09 -0700 (PDT) MIME-Version: 1.0 References: <20220408124323.10028-1-vincenzo.frascino@arm.com> In-Reply-To: <20220408124323.10028-1-vincenzo.frascino@arm.com> From: Andrey Konovalov Date: Fri, 8 Apr 2022 14:49:59 +0200 Message-ID: Subject: Re: [PATCH v2] kasan: Fix hw tags enablement when KUNIT tests are disabled To: Vincenzo Frascino Cc: Linux ARM , LKML , kasan-dev , Andrey Ryabinin , Alexander Potapenko , Dmitry Vyukov , Andrew Morton , Catalin Marinas , Will Deacon Content-Type: text/plain; charset="UTF-8" X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM, RCVD_IN_DNSWL_NONE,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 Fri, Apr 8, 2022 at 2:43 PM Vincenzo Frascino wrote: > > Kasan enables hw tags via kasan_enable_tagging() which based on the mode > passed via kernel command line selects the correct hw backend. > kasan_enable_tagging() is meant to be invoked indirectly via the cpu features > framework of the architectures that support these backends. > Currently the invocation of this function is guarded by CONFIG_KASAN_KUNIT_TEST > which allows the enablement of the correct backend only when KUNIT tests are > enabled in the kernel. > > This inconsistency was introduced in commit: > > ed6d74446cbf ("kasan: test: support async (again) and asymm modes for HW_TAGS") > > ... and prevents to enable MTE on arm64 when KUNIT tests for kasan hw_tags are > disabled. > > Fix the issue making sure that the CONFIG_KASAN_KUNIT_TEST guard does not > prevent the correct invocation of kasan_enable_tagging(). > > Fixes: ed6d74446cbf ("kasan: test: support async (again) and asymm modes for HW_TAGS") > Cc: Andrey Ryabinin > Cc: Alexander Potapenko > Cc: Andrey Konovalov > Cc: Dmitry Vyukov > Cc: Andrew Morton > Cc: Catalin Marinas > Cc: Will Deacon > Signed-off-by: Vincenzo Frascino > --- > mm/kasan/hw_tags.c | 5 +++-- > mm/kasan/kasan.h | 10 ++++++---- > 2 files changed, 9 insertions(+), 6 deletions(-) > > diff --git a/mm/kasan/hw_tags.c b/mm/kasan/hw_tags.c > index 07a76c46daa5..9e1b6544bfa8 100644 > --- a/mm/kasan/hw_tags.c > +++ b/mm/kasan/hw_tags.c > @@ -336,8 +336,6 @@ void __kasan_poison_vmalloc(const void *start, unsigned long size) > > #endif > > -#if IS_ENABLED(CONFIG_KASAN_KUNIT_TEST) > - > void kasan_enable_tagging(void) > { > if (kasan_arg_mode == KASAN_ARG_MODE_ASYNC) > @@ -347,6 +345,9 @@ void kasan_enable_tagging(void) > else > hw_enable_tagging_sync(); > } > + > +#if IS_ENABLED(CONFIG_KASAN_KUNIT_TEST) > + > EXPORT_SYMBOL_GPL(kasan_enable_tagging); > > void kasan_force_async_fault(void) > diff --git a/mm/kasan/kasan.h b/mm/kasan/kasan.h > index d79b83d673b1..b01b4bbe0409 100644 > --- a/mm/kasan/kasan.h > +++ b/mm/kasan/kasan.h > @@ -355,25 +355,27 @@ static inline const void *arch_kasan_set_tag(const void *addr, u8 tag) > #define hw_set_mem_tag_range(addr, size, tag, init) \ > arch_set_mem_tag_range((addr), (size), (tag), (init)) > > +void kasan_enable_tagging(void); > + > #else /* CONFIG_KASAN_HW_TAGS */ > > #define hw_enable_tagging_sync() > #define hw_enable_tagging_async() > #define hw_enable_tagging_asymm() > > +static inline void kasan_enable_tagging(void) { } > + > #endif /* CONFIG_KASAN_HW_TAGS */ > > #if defined(CONFIG_KASAN_HW_TAGS) && IS_ENABLED(CONFIG_KASAN_KUNIT_TEST) > > -void kasan_enable_tagging(void); > void kasan_force_async_fault(void); > > -#else /* CONFIG_KASAN_HW_TAGS || CONFIG_KASAN_KUNIT_TEST */ > +#else /* CONFIG_KASAN_HW_TAGS && CONFIG_KASAN_KUNIT_TEST */ > > -static inline void kasan_enable_tagging(void) { } > static inline void kasan_force_async_fault(void) { } > > -#endif /* CONFIG_KASAN_HW_TAGS || CONFIG_KASAN_KUNIT_TEST */ > +#endif /* CONFIG_KASAN_HW_TAGS && CONFIG_KASAN_KUNIT_TEST */ > > #ifdef CONFIG_KASAN_SW_TAGS > u8 kasan_random_tag(void); > -- > 2.35.1 > Reviewed-by: Andrey Konovalov Thanks!