From patchwork Thu Feb 20 14:19:14 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alexander Potapenko X-Patchwork-Id: 11394225 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 BC52E930 for ; Thu, 20 Feb 2020 14:19:34 +0000 (UTC) Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.kernel.org (Postfix) with ESMTP id 7F56B208E4 for ; Thu, 20 Feb 2020 14:19:34 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b="ajF+nKm6" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 7F56B208E4 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 9CE856B0005; Thu, 20 Feb 2020 09:19:33 -0500 (EST) Delivered-To: linux-mm-outgoing@kvack.org Received: by kanga.kvack.org (Postfix, from userid 40) id 958286B0006; Thu, 20 Feb 2020 09:19:33 -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 81FB66B0007; Thu, 20 Feb 2020 09:19:33 -0500 (EST) X-Original-To: linux-mm@kvack.org X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0062.hostedemail.com [216.40.44.62]) by kanga.kvack.org (Postfix) with ESMTP id 674FC6B0005 for ; Thu, 20 Feb 2020 09:19:33 -0500 (EST) Received: from smtpin08.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay03.hostedemail.com (Postfix) with ESMTP id 037C9824934B for ; Thu, 20 Feb 2020 14:19:33 +0000 (UTC) X-FDA: 76510713384.08.mine23_3630e1764464f X-Spam-Summary: 2,0,0,e8b6b09f867e44ba,d41d8cd98f00b204,3cpvoxgykcm8163yzc19916z.x97638fi-775gvx5.9c1@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:152:355:379:541:800:960:973:988:989:1260:1277:1313:1314:1345:1431:1437:1516:1518:1534:1541:1593:1594:1711:1730:1747:1777:1792:2393:2553:2559:2562:3138:3139:3140:3141:3142:3152:3352:3865:3866:3867:3870:4250:4321:4605:5007:6119:6261:6653:8603:9969:10004:10400:11026:11473:11658:11914:12043:12048:12296:12297:12438:12555:12895:13069:13311:13357:13846:14181:14394:14659:14721:21080:21444:21451:21611:21627:21990:30054:30064:30070:30080:30090,0,RBL:209.85.221.74:@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:neutral,Custom _rules:0 X-HE-Tag: mine23_3630e1764464f X-Filterd-Recvd-Size: 4099 Received: from mail-wr1-f74.google.com (mail-wr1-f74.google.com [209.85.221.74]) by imf11.hostedemail.com (Postfix) with ESMTP for ; Thu, 20 Feb 2020 14:19:32 +0000 (UTC) Received: by mail-wr1-f74.google.com with SMTP id 50so1812374wrc.2 for ; Thu, 20 Feb 2020 06:19:32 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=date:message-id:mime-version:subject:from:to:cc; bh=UNlPHrhz2kZWv/9q8fQt17ZUaDBQ0fpG/HdjNpQio7Q=; b=ajF+nKm6zwkDMm/8OJcJvlv0HyT+BWrBz1HkoZxAURCRUeF7sMp3dDbY9W5Z5BcXu2 SgnQCeisoQmDelTYLnjyC4XbkUmeGvC+3gWt30GaaDBXqLlY3/1iGM8OrXPzeKdggYXW KcVMB6X7M9BPX/ZA4c/A6pUgujOMq6rmkNdjHOEOS4PHg1Aft0OsVdFBoh9ZSKdUu7vf cNeHShBPDvlV1GrYY6lIRIOhAhtTwQM1ZQqS6TPkazwvaEHN65jUsHa5DTchICZch2ON cezrq2PzhhMHIkuexGD6ZybikXo+0ZgxewpA1VIzT24CSJov1sY2o0EWOXVnZkKcaf6H 4DuA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:message-id:mime-version:subject:from:to:cc; bh=UNlPHrhz2kZWv/9q8fQt17ZUaDBQ0fpG/HdjNpQio7Q=; b=gtO1LGM6SgHjnMnVX47nhdysYpbUQsdfHtDaiRV9yVhQYINWhRM5V/W2pAwgBM8TNz 9wzdHkx06HGKQ30uZXcaImYBBNZNQ4LWkqLNoHHyazhJR3/n6fN5gPqMAorBWx1X0hz5 UZcTHh6HTy/hqqs2Fvx1b0Fi0rcXjFK/gBq52d2bx0t0REO3RPvOJ9vqC36QCsKtVz0z OU84aHubwAtgzfFhYBL4IOnvWtJhsFNs3gzAjUihKRd/cN2BLEVGZ+ozozcZJbxNvp+r eSbicVARA5tmD84B6LPSdxp/lK0YRZmeVPww0Bfxqlc2SCYVvGSyJ0wNQiMO6P/EEOXy lg0A== X-Gm-Message-State: APjAAAXLKc94gjMYOE/a3w9XrkxIAqYfyDzWRLXbPVzDZDG33eXmHVTu oTCu0LMl+EMOTPt8Y3ThLxTu2Djn6zA= X-Google-Smtp-Source: APXvYqx+l2xnjcZBUCDOZvLUYqZQvgtAhIbUMvUEklSLVfv3ANGBT5XqV49BoENsJYbgsUw9WsZYiBr8XIE= X-Received: by 2002:adf:fa50:: with SMTP id y16mr40859361wrr.183.1582208370718; Thu, 20 Feb 2020 06:19:30 -0800 (PST) Date: Thu, 20 Feb 2020 15:19:14 +0100 Message-Id: <20200220141916.55455-1-glider@google.com> Mime-Version: 1.0 X-Mailer: git-send-email 2.25.0.265.gbab2e86ba0-goog Subject: [PATCH 1/3] stackdepot: check depot_index before accessing the stack slab 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: Avoid crashes on corrupted stack ids. Despite stack ID corruption may indicate other bugs in the program, we'd better fail gracefully on such IDs instead of crashing the kernel. 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: linux-mm@kvack.org --- lib/stackdepot.c | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/lib/stackdepot.c b/lib/stackdepot.c index 81c69c08d1d15..a2f6cb900db80 100644 --- a/lib/stackdepot.c +++ b/lib/stackdepot.c @@ -202,9 +202,22 @@ unsigned int stack_depot_fetch(depot_stack_handle_t handle, unsigned long **entries) { union handle_parts parts = { .handle = handle }; - void *slab = stack_slabs[parts.slabindex]; + void *slab; size_t offset = parts.offset << STACK_ALLOC_ALIGN; - struct stack_record *stack = slab + offset; + struct stack_record *stack; + + if (parts.slabindex > depot_index) { + WARN(1, "slab index %d out of bounds (%d) for stack id %08x\n", + parts.slabindex, depot_index, handle); + *entries = NULL; + return 0; + } + slab = stack_slabs[parts.slabindex]; + stack = slab + offset; + if (!stack) { + *entries = NULL; + return 0; + } *entries = stack->entries; return stack->size; From patchwork Thu Feb 20 14:19:15 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alexander Potapenko X-Patchwork-Id: 11394227 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 A962F924 for ; Thu, 20 Feb 2020 14:19:39 +0000 (UTC) Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.kernel.org (Postfix) with ESMTP id 6C1E6206E2 for ; Thu, 20 Feb 2020 14:19:39 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b="fcrj9qbV" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 6C1E6206E2 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 8E3816B0006; Thu, 20 Feb 2020 09:19:38 -0500 (EST) Delivered-To: linux-mm-outgoing@kvack.org Received: by kanga.kvack.org (Postfix, from userid 40) id 86E2C6B0007; Thu, 20 Feb 2020 09:19:38 -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 75C916B0008; Thu, 20 Feb 2020 09:19:38 -0500 (EST) X-Original-To: linux-mm@kvack.org X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0212.hostedemail.com [216.40.44.212]) by kanga.kvack.org (Postfix) with ESMTP id 5FE236B0006 for ; Thu, 20 Feb 2020 09:19:38 -0500 (EST) Received: from smtpin24.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay02.hostedemail.com (Postfix) with ESMTP id F121D33CD for ; Thu, 20 Feb 2020 14:19:37 +0000 (UTC) X-FDA: 76510713594.24.car61_36ec05df7de47 X-Spam-Summary: 2,0,0,60b76ba909a83911,d41d8cd98f00b204,3ejvoxgykcnu7c945i7ff7c5.3fdc9elo-ddbm13b.fi7@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:152:355:379:541:800:960:973:988:989:1260:1277:1313:1314:1345:1359:1431:1437:1516:1518:1534:1541:1593:1594:1711:1730:1747:1777:1792:2393:2553:2559:2562:3138:3139:3140:3141:3142:3152:3352:3865:3866:3867:3871:5007:6119:6261:6653:7514:8660:9969:10004:10400:11026:11473:11658:11914:12043:12048:12297:12438:12555:12895:13069:13148:13230:13311:13357:13846:14096:14097:14181:14394:14659:14721:21080:21444:21451:21627:30054:30064:30090,0,RBL:209.85.221.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_rules:0:0:0,L Ftime:27 X-HE-Tag: car61_36ec05df7de47 X-Filterd-Recvd-Size: 4097 Received: from mail-wr1-f73.google.com (mail-wr1-f73.google.com [209.85.221.73]) by imf41.hostedemail.com (Postfix) with ESMTP for ; Thu, 20 Feb 2020 14:19:37 +0000 (UTC) Received: by mail-wr1-f73.google.com with SMTP id n23so1789141wra.20 for ; Thu, 20 Feb 2020 06:19:37 -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=K2x0S2qfilo80kDLb3QBqLqDnpLdzrJVv99C/+2ox28=; b=fcrj9qbVmSDo1yXsXTHfwuQPvSdCBR3qnpXKiDLSM5d+6VtCWdYZ45sjMw/x7x7WOh JjxWNGvfD2DkD0sZNfof0OVifrKVE49nDRC/QCdhYZs/FCYCWOtb8Kt6G2popNbUDiJg D3O4XFiQ8/G77vX6Lyk0PxEJcr0neOVWUpsJdPWEXogtknL6k/wM+x1mWN+S3Q/U0scK sCk6VQIUPVYi0fgnaLnVEPPdSYEMcaBEum5ZEtIbUlL4sTj+2TKtUHgXP3A0O8+hYRzo bDa7vula0HxSISrDHLUxOZJwfp52ItUxw6yuRfh81aZ02GMOATWkQU+TxMBAUG0t435y prfw== 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=K2x0S2qfilo80kDLb3QBqLqDnpLdzrJVv99C/+2ox28=; b=CM8Oa1hFzXD7U9wIw4ypg3SJ7xeSY/AvWDLFFJuRTAbEswANTyjUl0GVel5A2Ohp3b tinLGaLHn+f9VuGAQG/8tO8221zvZrJbvGWd4lKEZihKXn+BNBTP3JohRNee32S9fKEz cseKGvBPm/4a6hLjjOOLD7hpD2p7jLsbF6BTuUt8P20wLo1XdDyg8np93oIG/XvVqriG UGErb4t4jxNwYQ95vyIpajWmCZQmGGiw4yRxIlSKwg2Ssmfm3/7RiYy/rMrofZ4IjRkn RrTewRfgk1cAYaFqrbveJLh0TmstQccF2i2+/qbZ5gusQnWRmQl4EUPgQMN8Gml4UxgF F8WQ== X-Gm-Message-State: APjAAAXBAtRNUGgkQkcOAiPyd9SXoEgdivmpHcvqSm/twpJsPD2imoYT pjmsFbNo5QF++wgawwUJ4o8lJPBHmIg= X-Google-Smtp-Source: APXvYqxc2qIoy0IH/jrPoR7Ibv4Cs2PRgx4cVNijK0fzVzE8YjgEYHwJ/kfVnjE5iOjexvugihfWe7RhBfE= X-Received: by 2002:a5d:4d8d:: with SMTP id b13mr42894690wru.6.1582208376125; Thu, 20 Feb 2020 06:19:36 -0800 (PST) Date: Thu, 20 Feb 2020 15:19:15 +0100 In-Reply-To: <20200220141916.55455-1-glider@google.com> Message-Id: <20200220141916.55455-2-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 2/3] stackdepot: build with -fno-builtin 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: Clang may replace stackdepot_memcmp() with a call to instrumented bcmp(), which is exactly what we wanted to avoid creating stackdepot_memcmp(). Building the file with -fno-builtin prevents such optimizations. 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: Sergey Senozhatsky Cc: Arnd Bergmann Cc: Andrey Ryabinin Cc: linux-mm@kvack.org --- lib/Makefile | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/lib/Makefile b/lib/Makefile index 23ca78d43d247..390e90d2ee88b 100644 --- a/lib/Makefile +++ b/lib/Makefile @@ -220,6 +220,10 @@ obj-$(CONFIG_MEMREGION) += memregion.o obj-$(CONFIG_STMP_DEVICE) += stmp_device.o obj-$(CONFIG_IRQ_POLL) += irq_poll.o +# stackdepot.c should not be instrumented or call instrumented functions. +# Prevent the compiler from calling builtins like memcmp() or bcmp() from this +# file. +CFLAGS_stackdepot.o += -fno-builtin obj-$(CONFIG_STACKDEPOT) += stackdepot.o KASAN_SANITIZE_stackdepot.o := n KCOV_INSTRUMENT_stackdepot.o := n 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];