Received: by 2002:a05:6a10:16a7:0:0:0:0 with SMTP id gp39csp496507pxb; Wed, 11 Nov 2020 08:45:28 -0800 (PST) X-Google-Smtp-Source: ABdhPJxqXL86xYEs6gICinvAskPwIzF2fQ6cZDpvfeMcAqXzYTXUy6votc6+0dk0Je+kWyg/FeMY X-Received: by 2002:aa7:d890:: with SMTP id u16mr293697edq.159.1605113128635; Wed, 11 Nov 2020 08:45:28 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1605113128; cv=none; d=google.com; s=arc-20160816; b=CFmMkxP4LVVuvbhSzxBgVPtesv4esb1gAmvIrwO3l74FRyjgfh3m9jycTlAPEIWhmh Kw2DkD1PATb9977XySu2nZ+yYiYhnYfitG74Ivbtk9zzeNFM5cWvp9UfhR4KGt7g6P2U tebN94rU9rePbpvRakoq9BY2SeNM/ynIspgPEKolutLWZgt1N3H+7Aw7mEKEjGDUYO/u uPS3/QrgzMa4XUwn6obx3COkqR1AaS+bEinlbni5FZIFEMOMmg/mPIMwUrJNSQdrrrP5 1GB0iHlIDU3yF8tsnGCP2pClO9AHagw7ZouSb4qPuc4d4dxUEgq/4TQUf3ypoLr/hRuC 9lrA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:cc:to:subject :message-id:date:from:in-reply-to:references:mime-version :dkim-signature; bh=QCmNt8Y7TG2qC30JLVGE0QaE5aTQ8urrjUT5uMsrL4A=; b=rd5qs1r22VJoiy1NsyubEk79oqajuKgDhnPSOgaoG8NAMaSCwW0wNCAqLh3VH3pEDY Ary8GZfEEUa5F8rI8Bdvj+RD2XHBdVGFBu4uYpMK7xHimV34xSzMEKMlQ0aw0KKL3Xkn Bh9lxrsZqlwtqKmZQX4KeVImMdf8CiHDhncUjTfryP62NVsJ+QslJouaEUZK3ME7Y6m8 ysIC+L07yC+77R0snuBj/xKm0iPbUPYNXNLcQqdvPuyedaXcKNpv5307s65Yxpehm0vb RiLS4LI/UqLOaLoG+cPcjHsFt9UiD18FJxIW1JPP+jnVaF1VCDk6/m5/b6wQaqXus20+ Nsxw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20161025 header.b="N3Tu/9Mc"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id c20si2183977ejr.515.2020.11.11.08.45.02; Wed, 11 Nov 2020 08:45:28 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@google.com header.s=20161025 header.b="N3Tu/9Mc"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727132AbgKKQnd (ORCPT + 99 others); Wed, 11 Nov 2020 11:43:33 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:55358 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726595AbgKKQnc (ORCPT ); Wed, 11 Nov 2020 11:43:32 -0500 Received: from mail-qk1-x744.google.com (mail-qk1-x744.google.com [IPv6:2607:f8b0:4864:20::744]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 5740EC0613D1 for ; Wed, 11 Nov 2020 08:43:32 -0800 (PST) Received: by mail-qk1-x744.google.com with SMTP id y197so2244500qkb.7 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=HnORKlwFlXJ2b0Xe0GPCXoL6BN5CUlAF65wNJ1t3VwoNL7aTB2w2kJbh9ha8DnYTmI 7/SGyauM+/VDjbRD6Uvf00a84SFhVjRfNN1BTII6qw1JZlNh5xGRyC8YoNCx/dglB5RR aT4OPYq/yLrvoP4bp8POdG/ZK9rqwnEnOu8GsjD6nM1DfmC5Zq9hpfKKSJb7K/LXDb/M WArwl05N02h7KrRZwSciuOMncwAkUNMAE4/9iBE7Ua5yReYSu26NO75hlJMfZO35pgS3 JcQmz5k+NtzWvC3+cAItqKRvKqEQboywDDVzntj8yI47bTH+vufgAbdHTNyU75X7pNPK 6/RQ== X-Gm-Message-State: AOAM533IwcI/99BC/R3F/QEq/Od8qNamvcBH6S0Z/csgOB9DYqenhE9/ E8eFR93VkFwmzZt2AW/jxisgqQsz3fWsMPftAFDUJw== 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 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 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