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=-17.4 required=3.0 tests=BAYES_00,DKIMWL_WL_MED, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS, URIBL_BLOCKED,USER_IN_DEF_DKIM_WL 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 BEA04C388F9 for ; Wed, 11 Nov 2020 16:43:34 +0000 (UTC) Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.kernel.org (Postfix) with ESMTP id 1A4E82072C for ; Wed, 11 Nov 2020 16:43:34 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b="N3Tu/9Mc" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 1A4E82072C Authentication-Results: mail.kernel.org; dmarc=fail (p=reject dis=none) header.from=google.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=owner-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix) id 7ABCC6B0036; Wed, 11 Nov 2020 11:43:33 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 75C4A6B006C; Wed, 11 Nov 2020 11:43:33 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 671126B0072; Wed, 11 Nov 2020 11:43:33 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0076.hostedemail.com [216.40.44.76]) by kanga.kvack.org (Postfix) with ESMTP id 3BAAB6B0036 for ; Wed, 11 Nov 2020 11:43:33 -0500 (EST) Received: from smtpin10.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay02.hostedemail.com (Postfix) with ESMTP id D33C7362D for ; Wed, 11 Nov 2020 16:43:32 +0000 (UTC) X-FDA: 77472708264.10.legs83_3e0565c272ff Received: from filter.hostedemail.com (10.5.16.251.rfc1918.com [10.5.16.251]) by smtpin10.hostedemail.com (Postfix) with ESMTP id B1C2816A046 for ; Wed, 11 Nov 2020 16:43:32 +0000 (UTC) X-HE-Tag: legs83_3e0565c272ff X-Filterd-Recvd-Size: 7494 Received: from mail-qk1-f193.google.com (mail-qk1-f193.google.com [209.85.222.193]) by imf28.hostedemail.com (Postfix) with ESMTP for ; Wed, 11 Nov 2020 16:43:32 +0000 (UTC) Received: by mail-qk1-f193.google.com with SMTP id h15so2211495qkl.13 for ; Wed, 11 Nov 2020 08:43:32 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc:content-transfer-encoding; bh=QCmNt8Y7TG2qC30JLVGE0QaE5aTQ8urrjUT5uMsrL4A=; b=N3Tu/9McrVluPFT0SSQ371uoqPA1FT6EYTax2BvhQv3QYHxGRfqhEY77v00wecumar qKjJEBFuKz+93htKIZCaQ4XcWikvj4cVquRrf6gIboEdpuxaM42emzxkE1CvLokWTxs5 OwqBc++LTDtxaZaNnRR0ZxO7Cbr19XXvqPnihkLMJTOPvEjqvuam12U/11ma2fXMwNph gVuHnS9KaLDx6WMKclLIQrYjrHuTH91GfWFXGYDfIM1p1nksYjUNPYievHMhN1aFb1iV MLfbFu+IWCTvbeqYBWjdXxBPSTJEBoOymLmcESIVqdMYGlU4WWRJMawHvBDdKnvkShB2 gqRw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc:content-transfer-encoding; bh=QCmNt8Y7TG2qC30JLVGE0QaE5aTQ8urrjUT5uMsrL4A=; b=NCgUXQaYoDdAioIUkdtpV8sQlQ6+qOLFSU2d0dGGIW378fbTaOt5Z2DQEchJCabb1V kD8xMCr9amEaJ1eunsPut8TIkhWUso6XuBbdp2SraX6DmapoIuwVjb1ylj/hcl21ww2H mrze35461DLxgbW3HMOCaXF9tMBq4l2Ql9TkCmaNhOo54S4PiPY+eGbNKkWe2qsy2cxb qgMzvt6h6h1r/ozjdnVwutD7asyZnf6/IiX2EtwB+5sKz1CDX5pE44tt9yDXArC1BzEh Ds0fAc1oPcquu4PtzSD1D0xZkoyEdE2l+CvwwdkOF1Q9XCuTX7dCEmr76ZNf3/tG0uE2 dXCw== X-Gm-Message-State: AOAM530IhDp9El82t6uYUH6MQAyrw5jWxXPtY6M7dF7W/Zy0UDw3DRZg Yirn1h1EAokhS1ZC6P5CwKHJAuAzagcfBGczkvTOOw== X-Google-Smtp-Source: ABdhPJx3u/lMLjOAM4Buf/5TnhtqfBq7l2lU0YA9YW8h6QT2mfA08cn83KzPwLiXhavZC/QVF8tHkPytRVppQLIct5o= X-Received: by 2002:a05:620a:f95:: with SMTP id b21mr17412423qkn.403.1605113011275; Wed, 11 Nov 2020 08:43:31 -0800 (PST) MIME-Version: 1.0 References: In-Reply-To: From: Alexander Potapenko Date: Wed, 11 Nov 2020 17:43:19 +0100 Message-ID: Subject: Re: [PATCH v9 40/44] kasan, arm64: print report from tag fault handler To: Andrey Konovalov Cc: Catalin Marinas , Will Deacon , Vincenzo Frascino , Dmitry Vyukov , Andrey Ryabinin , Marco Elver , Evgenii Stepanov , Branislav Rankov , Kevin Brodsky , Andrew Morton , kasan-dev , Linux ARM , Linux Memory Management List , LKML Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: On Tue, Nov 10, 2020 at 11:12 PM 'Andrey Konovalov' via kasan-dev wrote: > > Add error reporting for hardware tag-based KASAN. When CONFIG_KASAN_HW_TA= GS > is enabled, print KASAN report from the arm64 tag fault handler. > > SAS bits aren't set in ESR for all faults reported in EL1, so it's > impossible to find out the size of the access the caused the fault. > Adapt KASAN reporting code to handle this case. > > Signed-off-by: Andrey Konovalov > Co-developed-by: Vincenzo Frascino > Signed-off-by: Vincenzo Frascino > Reviewed-by: Catalin Marinas Reviewed-by: Alexander Potapenko > --- > Change-Id: I3780fe7db6e075dff2937d3d8508f55c9322b095 > --- > arch/arm64/mm/fault.c | 14 ++++++++++++++ > mm/kasan/report.c | 11 ++++++++--- > 2 files changed, 22 insertions(+), 3 deletions(-) > > diff --git a/arch/arm64/mm/fault.c b/arch/arm64/mm/fault.c > index fbceb14d93b1..7370e822e588 100644 > --- a/arch/arm64/mm/fault.c > +++ b/arch/arm64/mm/fault.c > @@ -14,6 +14,7 @@ > #include > #include > #include > +#include > #include > #include > #include > @@ -297,10 +298,23 @@ static void die_kernel_fault(const char *msg, unsig= ned long addr, > do_exit(SIGKILL); > } > > +#ifdef CONFIG_KASAN_HW_TAGS > static void report_tag_fault(unsigned long addr, unsigned int esr, > struct pt_regs *regs) > { > + bool is_write =3D ((esr & ESR_ELx_WNR) >> ESR_ELx_WNR_SHIFT) != =3D 0; > + > + /* > + * SAS bits aren't set for all faults reported in EL1, so we can'= t > + * find out access size. > + */ > + kasan_report(addr, 0, is_write, regs->pc); > } > +#else > +/* Tag faults aren't enabled without CONFIG_KASAN_HW_TAGS. */ > +static inline void report_tag_fault(unsigned long addr, unsigned int esr= , > + struct pt_regs *regs) { } > +#endif > > static void do_tag_recovery(unsigned long addr, unsigned int esr, > struct pt_regs *regs) > diff --git a/mm/kasan/report.c b/mm/kasan/report.c > index 8afc1a6ab202..ce06005d4052 100644 > --- a/mm/kasan/report.c > +++ b/mm/kasan/report.c > @@ -62,9 +62,14 @@ static void print_error_description(struct kasan_acces= s_info *info) > { > pr_err("BUG: KASAN: %s in %pS\n", > get_bug_type(info), (void *)info->ip); > - pr_err("%s of size %zu at addr %px by task %s/%d\n", > - info->is_write ? "Write" : "Read", info->access_size, > - info->access_addr, current->comm, task_pid_nr(current)); > + if (info->access_size) > + pr_err("%s of size %zu at addr %px by task %s/%d\n", > + info->is_write ? "Write" : "Read", info->access_s= ize, > + info->access_addr, current->comm, task_pid_nr(cur= rent)); > + else > + pr_err("%s at addr %px by task %s/%d\n", > + info->is_write ? "Write" : "Read", > + info->access_addr, current->comm, task_pid_nr(cur= rent)); > } > > static DEFINE_SPINLOCK(report_lock); > -- > 2.29.2.222.g5d2a92d10f8-goog > > -- > You received this message because you are subscribed to the Google Groups= "kasan-dev" group. > To unsubscribe from this group and stop receiving emails from it, send an= email to kasan-dev+unsubscribe@googlegroups.com. > To view this discussion on the web visit https://groups.google.com/d/msgi= d/kasan-dev/fe78d723ba64456d68754a944fa93fe4a25c730f.1605046192.git.andreyk= nvl%40google.com. --=20 Alexander Potapenko Software Engineer Google Germany GmbH Erika-Mann-Stra=C3=9Fe, 33 80636 M=C3=BCnchen Gesch=C3=A4ftsf=C3=BChrer: Paul Manicle, Halimah DeLaine Prado Registergericht und -nummer: Hamburg, HRB 86891 Sitz der Gesellschaft: Hamburg