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 Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 7C7ADC433F5 for ; Mon, 28 Mar 2022 12:37:01 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id E82D98D0002; Mon, 28 Mar 2022 08:37:00 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id E316A8D0001; Mon, 28 Mar 2022 08:37:00 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id CF9478D0002; Mon, 28 Mar 2022 08:37:00 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0072.hostedemail.com [216.40.44.72]) by kanga.kvack.org (Postfix) with ESMTP id BE5718D0001 for ; Mon, 28 Mar 2022 08:37:00 -0400 (EDT) Received: from smtpin28.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay02.hostedemail.com (Postfix) with ESMTP id 4AB60901BB for ; Mon, 28 Mar 2022 12:37:00 +0000 (UTC) X-FDA: 79293744600.28.CB385CD Received: from mail-yw1-f172.google.com (mail-yw1-f172.google.com [209.85.128.172]) by imf09.hostedemail.com (Postfix) with ESMTP id BA1B5140029 for ; Mon, 28 Mar 2022 12:36:59 +0000 (UTC) Received: by mail-yw1-f172.google.com with SMTP id 00721157ae682-2e6ceb45174so107116517b3.8 for ; Mon, 28 Mar 2022 05:36:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=uMEZK2jSyKIkvvjIbH4GT3Fdajafv9KYrdFViGd4yCs=; b=E9+QQkZMHaB3kC1jUcU1jKceyPqYXHgBAwrVH0Qoo7sy3RqybcW+gUMd6ILGzB7f+l ws3VHba8umN32ny6nvOGE7S0/BDPYbL3CibIFNlYrI+ImbMRn5uBNTtYcvWjpMn70BeQ YSZHLatfVPFPqrYmESblO10IJea6qXAQwCHfSeIe/Um9EbObWu/lemX2KJ23uLSz97eH g6on/oQ6sD9DD5h9J/mHKHD3CEJ6mjGQwCKzXS6Oo18j1nmsU3d9qcw+HawWBiquerkd 1uGdCrnf3Y0q0XTNc1w9PPJSTSY6BhV6JhFKAinQ4KUVPbxqYrV3ctxarnAfrHwnZlJo D6Gw== 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=uMEZK2jSyKIkvvjIbH4GT3Fdajafv9KYrdFViGd4yCs=; b=V8dugO1uUZTb5l/NW5Twu/LyfBEmLfRaz52kALdeRsEu5QkCAeCZWyf523dC78X5nZ p4rLdOIf4IXpyf7/l+IdtWEUNMMEvoMcVCu+we1nFCknssU2ojJ3I7S6eUDnqqaflJln 3L3wOgTcSRLE9Y0624hekSbE7iB/PPgpkgizD97gMzh+f5ICGS1HnnGSV41jK51nY9dE iXMFcV7B+I1BeX4/k4dXpj6uNYt4KUdNkXxGY300jBueq25Sy6J55l5TSiFme21zXWv7 P2+J/ND7cmSYjQTKTWZMZvEi+4DH1vWqA8oRDO145FJSbxPTfl1gk0KjKx+RcRkbpJgD KRYg== X-Gm-Message-State: AOAM530MtO9KnR9SM0h82idBblnZY1Aq23ufJnri57NLYlgED8qCuSMA RW5g14eHEG17NPWmNZXyBDR9VDqf2kX1Dwn9mWaYeQ== X-Google-Smtp-Source: ABdhPJzKaHl48iYBzuviShvc/fSc+yX8bEigh83P/lNX0DQQM0lmzYQvFiEjENIrpwu0FVlWRhmYK7v0KTcRTDtdgBE= X-Received: by 2002:a81:59c4:0:b0:2e5:c7c3:5d29 with SMTP id n187-20020a8159c4000000b002e5c7c35d29mr25403537ywb.512.1648471018879; Mon, 28 Mar 2022 05:36:58 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Marco Elver Date: Mon, 28 Mar 2022 14:36:22 +0200 Message-ID: Subject: Re: [PATCH v2 0/4] kasan, arm64, scs, stacktrace: collect stack traces from Shadow Call Stack To: andrey.konovalov@linux.dev Cc: Alexander Potapenko , Catalin Marinas , Will Deacon , Andrew Morton , Andrey Konovalov , Dmitry Vyukov , Andrey Ryabinin , kasan-dev@googlegroups.com, Mark Rutland , Vincenzo Frascino , Sami Tolvanen , Peter Collingbourne , Evgenii Stepanov , Florian Mayer , linux-mm@kvack.org, linux-kernel@vger.kernel.org, Andrey Konovalov Content-Type: text/plain; charset="UTF-8" X-Stat-Signature: w931khkqc3sxd8cj5gt3oa6csjch8fwy Authentication-Results: imf09.hostedemail.com; dkim=pass header.d=google.com header.s=20210112 header.b=E9+QQkZM; spf=pass (imf09.hostedemail.com: domain of elver@google.com designates 209.85.128.172 as permitted sender) smtp.mailfrom=elver@google.com; dmarc=pass (policy=reject) header.from=google.com X-Rspam-User: X-Rspamd-Server: rspam02 X-Rspamd-Queue-Id: BA1B5140029 X-HE-Tag: 1648471019-945397 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 Wed, 23 Mar 2022 at 16:33, wrote: > > From: Andrey Konovalov > > kasan, arm64, scs, stacktrace: collect stack traces from Shadow Call Stack > > Currently, KASAN always uses the normal stack trace collection routines, > which rely on the unwinder, when saving alloc and free stack traces. > > Instead of invoking the unwinder, collect the stack trace by copying > frames from the Shadow Call Stack whenever it is enabled. This reduces > boot time by 30% for all KASAN modes when Shadow Call Stack is enabled. > > Stack staces are collected from the Shadow Call Stack via a new > stack_trace_save_shadow() interface. > > Note that the frame of the interrupted function is not included into > the stack trace, as it is not yet saved on the SCS when an interrupt > happens. > > --- > > To deal with this last thing, we could save the interrupted frame address > in another per-CPU variable. I'll look into implementing this for v3. > > I decided to postpone the changes to stack depot that avoid copying > frames twice until a planned upcoming update for stack depot. That's fair. > Changes v1->v2: > - Provide a kernel-wide stack_trace_save_shadow() interface for collecting > stack traces from shadow stack. > - Use ptrauth_strip_insn_pac() and READ_ONCE_NOCHECK, see the comments. > - Get SCS pointer from x18, as per-task value is meant to save the SCS > value on CPU switches. > - Collect stack frames from SDEI and IRQ contexts. Do any of these new changes introduce new (noticeable) overhead (in particular patch 2)?