From patchwork Thu Feb 20 14:19:16 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alexander Potapenko X-Patchwork-Id: 11394229 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id A7AFE930 for ; Thu, 20 Feb 2020 14:19:44 +0000 (UTC) Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.kernel.org (Postfix) with ESMTP id 6A61E208C4 for ; Thu, 20 Feb 2020 14:19:44 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b="CWg7cc5i" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 6A61E208C4 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 64CAB6B0007; Thu, 20 Feb 2020 09:19:43 -0500 (EST) Delivered-To: linux-mm-outgoing@kvack.org Received: by kanga.kvack.org (Postfix, from userid 40) id 5D63B6B0008; Thu, 20 Feb 2020 09:19:43 -0500 (EST) X-Original-To: int-list-linux-mm@kvack.org X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 4C5FE6B000A; Thu, 20 Feb 2020 09:19:43 -0500 (EST) X-Original-To: linux-mm@kvack.org X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0073.hostedemail.com [216.40.44.73]) by kanga.kvack.org (Postfix) with ESMTP id 2FCF06B0007 for ; Thu, 20 Feb 2020 09:19:43 -0500 (EST) Received: from smtpin29.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay03.hostedemail.com (Postfix) with ESMTP id C160A8248047 for ; Thu, 20 Feb 2020 14:19:42 +0000 (UTC) X-FDA: 76510713804.29.fork33_37974c257f240 X-Spam-Summary: 2,0,0,985e8c739bb114ef,d41d8cd98f00b204,3fjvoxgykcnkbgd89mbjjbg9.7jhgdips-hhfq57f.jmb@flex--glider.bounces.google.com,:dvyukov@google.com:andreyknvl@google.com:aryabinin@virtuozzo.com:akpm@linux-foundation.org:sergey.senozhatsky@gmail.com:arnd@arndb.de::vegard.nossum@oracle.com:elver@google.com:glider@google.com,RULES_HIT:41:69:152:355:379:541:800:960:973:988:989:1260:1277:1313:1314:1345:1359:1431:1437:1516:1518:1535:1543:1593:1594:1711:1730:1747:1777:1792:2393:2559:2562:2904:3138:3139:3140:3141:3142:3152:3353:3865:3866:3867:3871:3872:4117:4321:4605:5007:6119:6261:6653:7903:9592:9969:10004:10400:11026:11233:11473:11658:11914:12043:12048:12291:12297:12438:12555:12895:12986:13846:14181:14394:14659:14721:21080:21433:21444:21451:21627:21990:30025:30054:30064,0,RBL:209.85.128.73:@flex--glider.bounces.google.com:.lbl8.mailshell.net-66.100.201.100 62.18.0.100,CacheIP:none,Bayesian:0.5,0.5,0.5,Netcheck:none,DomainCache:0,MSF:not bulk,SPF:fp,MSBL:0,DNSBL:none,Custom_ru les:0:0: X-HE-Tag: fork33_37974c257f240 X-Filterd-Recvd-Size: 6253 Received: from mail-wm1-f73.google.com (mail-wm1-f73.google.com [209.85.128.73]) by imf03.hostedemail.com (Postfix) with ESMTP for ; Thu, 20 Feb 2020 14:19:41 +0000 (UTC) Received: by mail-wm1-f73.google.com with SMTP id p2so653072wma.3 for ; Thu, 20 Feb 2020 06:19:41 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=date:in-reply-to:message-id:mime-version:references:subject:from:to :cc; bh=518aQLJRI8AFjv7qv9JZfuL9toVQT5tEU8siwObWSF0=; b=CWg7cc5i1kMYEOXZGcc81lsT8KZNw+vzStKKyVRyifgNKES8AcSLbAgKlaNBIePjAB oFkkECMQ81Wx3MtQY0MBkBcPa46keE9QWpI+bEU0ZLL53cUFJ7VrOs4jiIWLkhiCwLTF ijAE61Q6ypT3+Ceb3DQUU/N1R08v9ZQH2oFXQIbWivw+sd3m4JZsbaE4YQl6Z0kQSzLD omD6W+crk8hahk09oAGsS5+csCmkPYDwbh0pLE2bdGdn0pw7PNbou/HpefxKISN3mb5s 8Bq5qpQZ3PryBaoaBJl3C+nxPFF4XsUItj1fR+R9tYQYShLAABxSVVUZU0FummftJJTJ Fo+g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:in-reply-to:message-id:mime-version :references:subject:from:to:cc; bh=518aQLJRI8AFjv7qv9JZfuL9toVQT5tEU8siwObWSF0=; b=hovrwSIireI11PsSB2VsDK10dw8gV8vXothrx0ckseqSFHCEXEVGaIKP7W0uuDab5D yqx65cOUeOZKic609l218qxWE2jEz3/8FgTBlxccTXZRWfrPHNmpL5udRwMxiThE0UzO nbOhBtrpTRXZFM7pCu0Q9pbn2ekoncqnGD+kKHCUrSDH7wzbVMVUXgMrdFflC94BfCIy /BXsIXN2U3prtKzgkUf5e5KFEV4Mijt2QVzOmf4XMtAgfXyhOsMKFAlRMbdM11zrbc7V MeF/qAO2FqY2LCTrjox3bGWHNDYJXbUF+a77blYFUtboZngdbrzD3gFzsB9BWxqXE7a/ +9dA== X-Gm-Message-State: APjAAAUPSBDyeq6F8H+5THCK0e47L78HNCi1QLvUV2meAytl4IY4M2EA JMDj5VTidjsCIBB1HPwpgYX1SiG86xQ= X-Google-Smtp-Source: APXvYqwBzC2qE4BKkiY1bqV3XKDAlLNqk/X08sP9fSBFQeMWM410TVt/LLLKf6BnorQYT1DjoR4sUk24g6g= X-Received: by 2002:adf:ecc2:: with SMTP id s2mr43534580wro.263.1582208380620; Thu, 20 Feb 2020 06:19:40 -0800 (PST) Date: Thu, 20 Feb 2020 15:19:16 +0100 In-Reply-To: <20200220141916.55455-1-glider@google.com> Message-Id: <20200220141916.55455-3-glider@google.com> Mime-Version: 1.0 References: <20200220141916.55455-1-glider@google.com> X-Mailer: git-send-email 2.25.0.265.gbab2e86ba0-goog Subject: [PATCH 3/3] kasan: stackdepot: move filter_irq_stacks() to stackdepot.c From: glider@google.com To: dvyukov@google.com, andreyknvl@google.com, aryabinin@virtuozzo.com, akpm@linux-foundation.org Cc: sergey.senozhatsky@gmail.com, arnd@arndb.de, linux-mm@kvack.org, vegard.nossum@oracle.com, elver@google.com, Alexander Potapenko 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: filter_irq_stacks() can be used by other tools (e.g. KMSAN), so it needs to be moved to a common location. lib/stackdepot.c seems a good place, as filter_irq_stacks() is usually applied to the output of stack_trace_save(). This patch has been previously mailed as part of KMSAN RFC patch series. Signed-off-by: Alexander Potapenko To: Alexander Potapenko Cc: Vegard Nossum Cc: Dmitry Vyukov Cc: Marco Elver Cc: Andrey Konovalov Cc: Andrey Ryabinin Cc: linux-mm@kvack.org Reported-by: kbuild test robot --- include/linux/stackdepot.h | 2 ++ lib/stackdepot.c | 24 ++++++++++++++++++++++++ mm/kasan/common.c | 23 ----------------------- 3 files changed, 26 insertions(+), 23 deletions(-) diff --git a/include/linux/stackdepot.h b/include/linux/stackdepot.h index 3efa97d482cbe..24d49c732341a 100644 --- a/include/linux/stackdepot.h +++ b/include/linux/stackdepot.h @@ -19,4 +19,6 @@ depot_stack_handle_t stack_depot_save(unsigned long *entries, unsigned int stack_depot_fetch(depot_stack_handle_t handle, unsigned long **entries); +unsigned int filter_irq_stacks(unsigned long *entries, unsigned int nr_entries); + #endif diff --git a/lib/stackdepot.c b/lib/stackdepot.c index a2f6cb900db80..da5d1880bf343 100644 --- a/lib/stackdepot.c +++ b/lib/stackdepot.c @@ -20,6 +20,7 @@ */ #include +#include #include #include #include @@ -318,3 +319,26 @@ depot_stack_handle_t stack_depot_save(unsigned long *entries, return retval; } EXPORT_SYMBOL_GPL(stack_depot_save); + +static inline int in_irqentry_text(unsigned long ptr) +{ + return (ptr >= (unsigned long)&__irqentry_text_start && + ptr < (unsigned long)&__irqentry_text_end) || + (ptr >= (unsigned long)&__softirqentry_text_start && + ptr < (unsigned long)&__softirqentry_text_end); +} + +unsigned int filter_irq_stacks(unsigned long *entries, + unsigned int nr_entries) +{ + unsigned int i; + + for (i = 0; i < nr_entries; i++) { + if (in_irqentry_text(entries[i])) { + /* Include the irqentry function into the stack. */ + return i + 1; + } + } + return nr_entries; +} +EXPORT_SYMBOL_GPL(filter_irq_stacks); diff --git a/mm/kasan/common.c b/mm/kasan/common.c index 6aa51723b92b9..92815ef9c80d3 100644 --- a/mm/kasan/common.c +++ b/mm/kasan/common.c @@ -15,7 +15,6 @@ */ #include -#include #include #include #include @@ -42,28 +41,6 @@ #include "kasan.h" #include "../slab.h" -static inline int in_irqentry_text(unsigned long ptr) -{ - return (ptr >= (unsigned long)&__irqentry_text_start && - ptr < (unsigned long)&__irqentry_text_end) || - (ptr >= (unsigned long)&__softirqentry_text_start && - ptr < (unsigned long)&__softirqentry_text_end); -} - -static inline unsigned int filter_irq_stacks(unsigned long *entries, - unsigned int nr_entries) -{ - unsigned int i; - - for (i = 0; i < nr_entries; i++) { - if (in_irqentry_text(entries[i])) { - /* Include the irqentry function into the stack. */ - return i + 1; - } - } - return nr_entries; -} - static inline depot_stack_handle_t save_stack(gfp_t flags) { unsigned long entries[KASAN_STACK_DEPTH];