From patchwork Wed May 27 20:50:53 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Uladzislau Rezki X-Patchwork-Id: 11573949 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 2914960D for ; Wed, 27 May 2020 20:51:08 +0000 (UTC) Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.kernel.org (Postfix) with ESMTP id E9F6E20890 for ; Wed, 27 May 2020 20:51:07 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="n3AmKW+b" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org E9F6E20890 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=owner-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix) id 2C0DA800B6; Wed, 27 May 2020 16:51:06 -0400 (EDT) Delivered-To: linux-mm-outgoing@kvack.org Received: by kanga.kvack.org (Postfix, from userid 40) id 2255F80010; Wed, 27 May 2020 16:51:06 -0400 (EDT) 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 F40C7800B6; Wed, 27 May 2020 16:51:05 -0400 (EDT) X-Original-To: linux-mm@kvack.org X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0188.hostedemail.com [216.40.44.188]) by kanga.kvack.org (Postfix) with ESMTP id DD46780010 for ; Wed, 27 May 2020 16:51:05 -0400 (EDT) Received: from smtpin02.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay05.hostedemail.com (Postfix) with ESMTP id 9A7DD181AC9C6 for ; Wed, 27 May 2020 20:51:05 +0000 (UTC) X-FDA: 76863693690.02.town28_60cf365092407 Received: from filter.hostedemail.com (10.5.16.251.rfc1918.com [10.5.16.251]) by smtpin02.hostedemail.com (Postfix) with ESMTP id 7CE40DDC6E for ; Wed, 27 May 2020 20:51:05 +0000 (UTC) X-Spam-Summary: 2,0,0,a04cd68b6b739914,d41d8cd98f00b204,urezki@gmail.com,,RULES_HIT:41:69:355:379:541:800:960:966:973:988:989:1260:1311:1314:1345:1359:1437:1515:1535:1542:1711:1730:1747:1777:1792:2196:2199:2393:2559:2562:3138:3139:3140:3141:3142:3353:3865:3866:3867:3868:3871:3872:4321:4385:5007:6261:6653:7514:8603:9010:9413:9592:10004:11026:11473:11658:11914:12043:12114:12296:12297:12438:12517:12519:12555:12683:12895:12986:13161:13229:13894:14181:14394:14687:14721:21080:21324:21444:21451:21627:21666:21990:30054:30056:30070,0,RBL:209.85.167.66:@gmail.com:.lbl8.mailshell.net-62.18.0.100 66.100.201.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:0:0,LFtime:25,LUA_SUMMARY:none X-HE-Tag: town28_60cf365092407 X-Filterd-Recvd-Size: 5430 Received: from mail-lf1-f66.google.com (mail-lf1-f66.google.com [209.85.167.66]) by imf50.hostedemail.com (Postfix) with ESMTP for ; Wed, 27 May 2020 20:51:05 +0000 (UTC) Received: by mail-lf1-f66.google.com with SMTP id d7so4125580lfi.12 for ; Wed, 27 May 2020 13:51:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=jZe9RvzT7wl7ndcZbn0P06YqzSmFmsaoAvrOUPt0Ne8=; b=n3AmKW+bKEYTPO20auGkzmmC8j2yS6HdooUNkIgxZhVvxbBwSjtiXZgEgozslW60RD ogH8JqfhCJF+R2MfnvFuOSTvPocn6q6heuZaPt41lm/7L7xhUOpAHSE76Fic3PbwnRGt kf9bcQN7tMt+EQMJOXgEuwvTlmXFQyA4HO58X0X0iqb8QX8PsNtn2XvyXTkd35qDmHsU ce28g+ITpqbkBblq/BZAhxWi/4kAit2ny6TaIDhR7r9vhvW5owNwWouUErgbJgXC/Fal 3tJHPdt5IPGnlOWdzCGIFJa/BiyhmqgAq9GlQ4wgK/cR6F1w4lp4QWkHph6dyCehXCtG cxHw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=jZe9RvzT7wl7ndcZbn0P06YqzSmFmsaoAvrOUPt0Ne8=; b=opSuzH4RUgaloB7rD6Ba7UBAYIiOkMyXTHOz7irX+tsrsPmTpjMZv0KuwZa0zH36MT qUQEGSooBQM8BQtLRR8XgrXL6NcSS55cMVG3xDtIg2bINnkN03x0B4XZ80VEOnUspuFZ Tl40J4UCCEpGZLJJnCUXUSOUjL09gi+Zf1p/Feb59nDstTMMZtOxJ675SfLvJOBrT1YK qSBPBXwBaiQa2dJOrUSK1mEUe7fwsq/5+QGMAEI51SbtTJOiQXD/I9dWYukWBG4To+pp PdG7M7yxhJH2yX/CtlvjtwerdFqNaDoTu1bgoBGxzwy7bRxWvqyjbslA3PprN4k8GiAc DCrA== X-Gm-Message-State: AOAM533qHYHWKhKslbjm0IElkP8FxqRiEQfpND5NKmWH3Cgzcu7OukPY BiI10Fqj+mttGUCMsLRGhp0= X-Google-Smtp-Source: ABdhPJx2ZWW44hsL/x3eDlEFjD3nvzE31o/wrgaO+cuPsQZoKAwspUtTZZ5einOvs8496ZFr9mvhVA== X-Received: by 2002:a19:6554:: with SMTP id c20mr3886603lfj.140.1590612663778; Wed, 27 May 2020 13:51:03 -0700 (PDT) Received: from pc638.lan (h5ef52e31.seluork.dyn.perspektivbredband.net. [94.245.46.49]) by smtp.gmail.com with ESMTPSA id z78sm1045919lfc.80.2020.05.27.13.51.02 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 27 May 2020 13:51:03 -0700 (PDT) From: "Uladzislau Rezki (Sony)" To: Andrew Morton Cc: linux-mm@kvack.org, LKML , Uladzislau Rezki , Hillf Danton , Michal Hocko , Matthew Wilcox , Oleksiy Avramchenko , Steven Rostedt Subject: [PATCH 2/3] mm/vmalloc: simplify augment_tree_propagate_check() func. Date: Wed, 27 May 2020 22:50:53 +0200 Message-Id: <20200527205054.1696-2-urezki@gmail.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20200527205054.1696-1-urezki@gmail.com> References: <20200527205054.1696-1-urezki@gmail.com> MIME-Version: 1.0 X-Rspamd-Queue-Id: 7CE40DDC6E X-Spamd-Result: default: False [0.00 / 100.00] X-Rspamd-Server: rspam03 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: This function is for debug purpose only. Currently it uses recursion for tree traversal, checking an augmented value of each node to find out if it is valid or not. The recursion can corrupt the stack because the tree can be huge if synthetic tests are applied. To prevent it, navigate the tree from bottom to upper levels using a regular list instead, because nodes are linked among each other also. It is faster and without recursion. Signed-off-by: Uladzislau Rezki (Sony) --- mm/vmalloc.c | 42 ++++++++---------------------------------- 1 file changed, 8 insertions(+), 34 deletions(-) diff --git a/mm/vmalloc.c b/mm/vmalloc.c index a875eef1e2c2..62d48f5e7105 100644 --- a/mm/vmalloc.c +++ b/mm/vmalloc.c @@ -589,43 +589,17 @@ unlink_va(struct vmap_area *va, struct rb_root *root) #if DEBUG_AUGMENT_PROPAGATE_CHECK static void -augment_tree_propagate_check(struct rb_node *n) +augment_tree_propagate_check(void) { struct vmap_area *va; - struct rb_node *node; - unsigned long size; - bool found = false; - - if (n == NULL) - return; - - va = rb_entry(n, struct vmap_area, rb_node); - size = va->subtree_max_size; - node = n; - - while (node) { - va = rb_entry(node, struct vmap_area, rb_node); - - if (get_subtree_max_size(node->rb_left) == size) { - node = node->rb_left; - } else { - if (va_size(va) == size) { - found = true; - break; - } + unsigned long computed_size; - node = node->rb_right; - } - } - - if (!found) { - va = rb_entry(n, struct vmap_area, rb_node); - pr_emerg("tree is corrupted: %lu, %lu\n", - va_size(va), va->subtree_max_size); + list_for_each_entry(va, &free_vmap_area_list, list) { + computed_size = compute_subtree_max_size(va); + if (computed_size != va->subtree_max_size) + pr_emerg("tree is corrupted: %lu, %lu\n", + va_size(va), va->subtree_max_size); } - - augment_tree_propagate_check(n->rb_left); - augment_tree_propagate_check(n->rb_right); } #endif @@ -680,7 +654,7 @@ augment_tree_propagate_from(struct vmap_area *va) } #if DEBUG_AUGMENT_PROPAGATE_CHECK - augment_tree_propagate_check(free_vmap_area_root.rb_node); + augment_tree_propagate_check(); #endif }