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 X-Spam-Level: X-Spam-Status: No, score=-15.4 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER, INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,USER_AGENT_SANE_1 autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 6C9F1C433DB for ; Tue, 19 Jan 2021 13:06:08 +0000 (UTC) Received: from merlin.infradead.org (merlin.infradead.org [205.233.59.134]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 103B123133 for ; Tue, 19 Jan 2021 13:06:08 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 103B123133 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=arm.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=merlin.20170209; h=Sender:Content-Transfer-Encoding: Content-Type:Cc:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:References:Message-ID: Subject:To:From:Date:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=r2zLHQltwCMcWc4wUmN92rX0+Y9dfqZDAL4UvV/BKMM=; b=Sfpz8h0NyLKica7wHNvzEi0ey C/bTkILvp1tzrB1fzVeI+sf6ihkCufvwkoE/H5Ba4qDotSOrT7S/3gUpR0hae0wnqEjkTj+qsIz/X o2x7UpQkp7eNHT42G7f8jTAE8jdARgq+78OFCGw7v/30E8iF4LsdbgJ5HOncmD/AnoLQUC5LOI6LG faSvUTzrXUz33ov74Le5t39/a5+vog+9fdVz8Onx9Mjzo7LdGD+KEoeM8K6XZmEgxs5p/J+C0+Q15 /Pe3/d3XZT35ZPVF1O2uAMNt2XI1Sm9NGs9+5c/uh5BuvNsFphuZmZWjvbqdMSLH/C1MnVpo0a4i7 2VJZJwX3w==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1l1qgm-0004pt-OA; Tue, 19 Jan 2021 13:04:52 +0000 Received: from mail.kernel.org ([198.145.29.99]) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1l1qgg-0004p6-CP for linux-arm-kernel@lists.infradead.org; Tue, 19 Jan 2021 13:04:50 +0000 Received: by mail.kernel.org (Postfix) with ESMTPSA id 5026F22227; Tue, 19 Jan 2021 13:04:43 +0000 (UTC) Date: Tue, 19 Jan 2021 13:04:40 +0000 From: Catalin Marinas To: Vincenzo Frascino Subject: Re: [PATCH v4 3/5] kasan: Add report for async mode Message-ID: <20210119130440.GC17369@gaia> References: <20210118183033.41764-1-vincenzo.frascino@arm.com> <20210118183033.41764-4-vincenzo.frascino@arm.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20210118183033.41764-4-vincenzo.frascino@arm.com> User-Agent: Mutt/1.10.1 (2018-07-13) X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20210119_080446_493164_18F376F6 X-CRM114-Status: GOOD ( 21.05 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Branislav Rankov , Marco Elver , Andrey Konovalov , Evgenii Stepanov , linux-kernel@vger.kernel.org, kasan-dev@googlegroups.com, Alexander Potapenko , linux-arm-kernel@lists.infradead.org, Andrey Ryabinin , Will Deacon , Dmitry Vyukov Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org On Mon, Jan 18, 2021 at 06:30:31PM +0000, Vincenzo Frascino wrote: > KASAN provides an asynchronous mode of execution. > > Add reporting functionality for this mode. > > Cc: Dmitry Vyukov > Cc: Andrey Ryabinin > Cc: Alexander Potapenko > Cc: Andrey Konovalov > Signed-off-by: Vincenzo Frascino > --- > include/linux/kasan.h | 3 +++ > mm/kasan/report.c | 16 ++++++++++++++-- > 2 files changed, 17 insertions(+), 2 deletions(-) > > diff --git a/include/linux/kasan.h b/include/linux/kasan.h > index fe1ae73ff8b5..8f43836ccdac 100644 > --- a/include/linux/kasan.h > +++ b/include/linux/kasan.h > @@ -336,6 +336,9 @@ static inline void *kasan_reset_tag(const void *addr) > bool kasan_report(unsigned long addr, size_t size, > bool is_write, unsigned long ip); > > +bool kasan_report_async(unsigned long addr, size_t size, > + bool is_write, unsigned long ip); We have no address, no size and no is_write information. Do we have a reason to pass all these arguments here? Not sure what SPARC ADI does but they may not have all this information either. We can pass ip as the point where we checked the TFSR reg but that's about it. > + > #else /* CONFIG_KASAN_SW_TAGS || CONFIG_KASAN_HW_TAGS */ > > static inline void *kasan_reset_tag(const void *addr) > diff --git a/mm/kasan/report.c b/mm/kasan/report.c > index c0fb21797550..946016ead6a9 100644 > --- a/mm/kasan/report.c > +++ b/mm/kasan/report.c > @@ -388,11 +388,11 @@ static void __kasan_report(unsigned long addr, size_t size, bool is_write, > start_report(&flags); > > print_error_description(&info); > - if (addr_has_metadata(untagged_addr)) > + if (addr_has_metadata(untagged_addr) && (untagged_addr != 0)) > print_tags(get_tag(tagged_addr), info.first_bad_addr); > pr_err("\n"); > > - if (addr_has_metadata(untagged_addr)) { > + if (addr_has_metadata(untagged_addr) && (untagged_addr != 0)) { > print_address_description(untagged_addr, get_tag(tagged_addr)); > pr_err("\n"); > print_memory_metadata(info.first_bad_addr); > @@ -419,6 +419,18 @@ bool kasan_report(unsigned long addr, size_t size, bool is_write, > return ret; > } > > +bool kasan_report_async(unsigned long addr, size_t size, > + bool is_write, unsigned long ip) > +{ > + pr_info("==================================================================\n"); > + pr_info("KASAN: set in asynchronous mode\n"); > + pr_info("KASAN: some information might not be accurate\n"); > + pr_info("KASAN: fault address is ignored\n"); > + pr_info("KASAN: write/read distinction is ignored\n"); > + > + return kasan_report(addr, size, is_write, ip); So just call kasan_report (0, 0, 0, ip) here. -- Catalin _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel