From patchwork Wed Feb 1 01:54:38 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Dmitry Torokhov X-Patchwork-Id: 722335 Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Received: from lists.ozlabs.org (lists.ozlabs.org [103.22.144.68]) (using TLSv1.2 with cipher ADH-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3vCmVD1rjGz9sxS for ; Wed, 1 Feb 2017 12:57:40 +1100 (AEDT) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="BQ4EwIk+"; dkim-atps=neutral Received: from lists.ozlabs.org (lists.ozlabs.org [IPv6:2401:3900:2:1::3]) by lists.ozlabs.org (Postfix) with ESMTP id 3vCmVD0mN8zDqHj for ; Wed, 1 Feb 2017 12:57:40 +1100 (AEDT) Authentication-Results: lists.ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="BQ4EwIk+"; dkim-atps=neutral X-Original-To: linuxppc-dev@lists.ozlabs.org Delivered-To: linuxppc-dev@lists.ozlabs.org Received: from mail-pg0-x243.google.com (mail-pg0-x243.google.com [IPv6:2607:f8b0:400e:c05::243]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by lists.ozlabs.org (Postfix) with ESMTPS id 3vCmQr2MYNzDqC3 for ; Wed, 1 Feb 2017 12:54:44 +1100 (AEDT) Authentication-Results: lists.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="BQ4EwIk+"; dkim-atps=neutral Received: by mail-pg0-x243.google.com with SMTP id 75so32585279pgf.3 for ; Tue, 31 Jan 2017 17:54:44 -0800 (PST) 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; bh=IKqGTCvDtGqbOLHzCj+ZpnjKkKj9TWby3sQLcgpRo+c=; b=BQ4EwIk+qyi7VnjEGuACBQgdGuPtiR0kwrbtJ4uhuXU0MbxFR3cr4EzlsvRiCcD6Yp 83vCiyvFytCHtkaP/VEWBduB7tifftZTKwWxmFZKREQ4S9ZEpsTjl4xZwL7VRJ3fim/1 p2PTmmRqPFurGUWnpXGhbaB9quTNIcT4uUj2YurhRDeGAaSMUVWhI/kHGO1NM/sNRYYF M5z+JTnEPFWkqDtLgzYDh6SQmpwf60yJbdzSNWwa1NN9UUGOSLZVxeQq6T0TBRgr2wNQ G0fspYeZ1kIj2RGH8Ol4/He9w+LLBfFODWMo82ySxI3MWaBL6nJX3QaCQECB0bfALT+Y bZzg== 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; bh=IKqGTCvDtGqbOLHzCj+ZpnjKkKj9TWby3sQLcgpRo+c=; b=JitDcHWE0eex6uHO0I9tLxDrNyp0aG1rqyFvAvRY1VX7rY99Iyl6F88CcgsTT0SLlX lME9UTxtqFAP78XWFFwtlGPCCfofG5SsH2BROFqlJWEQVNceXOj22ZcAueYUHoIbvqxy o238OjatpZ/0aQIJCFU86lzyB04Wbsz1lin51C9BFOhHTeL870FXAsUKBngOaN0ARwtd oH8+O3yHISA2K6IEqXFTbePWbnASFfAZaMeeJUV+EjZqXBp/8QyJxVo+TGOouIf82Wa+ 0p6ua8yl1IQEk7VCV3IKFD1sfA0I9vhJF66S/jJ0iZCurIbXAiZ+3ov1AiuzTDwRazeA OOyw== X-Gm-Message-State: AIkVDXJP+gWat82fvu1kV/vyvd+nVd85cBJMUlHEsF36vr0nPvKGGr5Qba3TDPeWdZ7EMA== X-Received: by 10.84.175.74 with SMTP id s68mr542516plb.155.1485914082415; Tue, 31 Jan 2017 17:54:42 -0800 (PST) Received: from dtor-ws.mtv.corp.google.com ([172.22.152.34]) by smtp.gmail.com with ESMTPSA id w76sm44139127pfd.74.2017.01.31.17.54.41 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Tue, 31 Jan 2017 17:54:41 -0800 (PST) From: Dmitry Torokhov To: Benjamin Herrenschmidt , Paul Mackerras Subject: [PATCH 2/2] powerpc: make use of for_each_node_by_type() instead of open-coding it Date: Tue, 31 Jan 2017 17:54:38 -0800 Message-Id: <20170201015438.18826-2-dmitry.torokhov@gmail.com> X-Mailer: git-send-email 2.11.0.483.g087da7b7c-goog In-Reply-To: <20170201015438.18826-1-dmitry.torokhov@gmail.com> References: <20170201015438.18826-1-dmitry.torokhov@gmail.com> X-BeenThere: linuxppc-dev@lists.ozlabs.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Linux on PowerPC Developers Mail List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Arnd Bergmann , linux-kernel@vger.kernel.org, Scott Wood , linuxppc-dev@lists.ozlabs.org Errors-To: linuxppc-dev-bounces+patchwork-incoming=ozlabs.org@lists.ozlabs.org Sender: "Linuxppc-dev" Instead of manually coding the loop with of_find_node_by_type(), let's switch to the standard macro for iterating over nodes with given type. Also fixed a couple of refcount leaks in the aforementioned loops. Signed-off-by: Dmitry Torokhov --- arch/powerpc/kernel/setup-common.c | 9 +++++++-- arch/powerpc/platforms/cell/spu_manage.c | 4 ++-- arch/powerpc/platforms/powermac/pic.c | 7 ++++--- arch/powerpc/platforms/powermac/smp.c | 4 ++-- arch/powerpc/platforms/pseries/lparcfg.c | 4 ++-- 5 files changed, 17 insertions(+), 11 deletions(-) diff --git a/arch/powerpc/kernel/setup-common.c b/arch/powerpc/kernel/setup-common.c index f516ac508ae3..4a36360c0a67 100644 --- a/arch/powerpc/kernel/setup-common.c +++ b/arch/powerpc/kernel/setup-common.c @@ -452,13 +452,13 @@ static void __init cpu_init_thread_core_maps(int tpc) */ void __init smp_setup_cpu_maps(void) { - struct device_node *dn = NULL; + struct device_node *dn; int cpu = 0; int nthreads = 1; DBG("smp_setup_cpu_maps()\n"); - while ((dn = of_find_node_by_type(dn, "cpu")) && cpu < nr_cpu_ids) { + for_each_node_by_type(dn, "cpu") { const __be32 *intserv; __be32 cpu_be; int j, len; @@ -498,6 +498,11 @@ void __init smp_setup_cpu_maps(void) set_cpu_possible(cpu, true); cpu++; } + + if (cpu >= nr_cpu_ids) { + of_node_put(dn); + break; + } } /* If no SMT supported, nthreads is forced to 1 */ diff --git a/arch/powerpc/platforms/cell/spu_manage.c b/arch/powerpc/platforms/cell/spu_manage.c index 672d310dcf14..4a28d647911c 100644 --- a/arch/powerpc/platforms/cell/spu_manage.c +++ b/arch/powerpc/platforms/cell/spu_manage.c @@ -292,12 +292,12 @@ static int __init of_enumerate_spus(int (*fn)(void *data)) unsigned int n = 0; ret = -ENODEV; - for (node = of_find_node_by_type(NULL, "spe"); - node; node = of_find_node_by_type(node, "spe")) { + for_each_node_by_type(node, "spe") { ret = fn(node); if (ret) { printk(KERN_WARNING "%s: Error initializing %s\n", __func__, node->name); + of_node_put(node); break; } n++; diff --git a/arch/powerpc/platforms/powermac/pic.c b/arch/powerpc/platforms/powermac/pic.c index f5f9ad7c3398..057c0c4003ae 100644 --- a/arch/powerpc/platforms/powermac/pic.c +++ b/arch/powerpc/platforms/powermac/pic.c @@ -486,15 +486,16 @@ static int __init pmac_pic_probe_mpic(void) struct device_node *np, *master = NULL, *slave = NULL; /* We can have up to 2 MPICs cascaded */ - for (np = NULL; (np = of_find_node_by_type(np, "open-pic")) - != NULL;) { + for_each_node_by_type(np, "open-pic") { if (master == NULL && of_get_property(np, "interrupts", NULL) == NULL) master = of_node_get(np); else if (slave == NULL) slave = of_node_get(np); - if (master && slave) + if (master && slave) { + of_node_put(np); break; + } } /* Check for bogus setups */ diff --git a/arch/powerpc/platforms/powermac/smp.c b/arch/powerpc/platforms/powermac/smp.c index c9eb7d6540ea..1109850d12bd 100644 --- a/arch/powerpc/platforms/powermac/smp.c +++ b/arch/powerpc/platforms/powermac/smp.c @@ -772,8 +772,8 @@ static void __init smp_core99_probe(void) if (ppc_md.progress) ppc_md.progress("smp_core99_probe", 0x345); /* Count CPUs in the device-tree */ - for (cpus = NULL; (cpus = of_find_node_by_type(cpus, "cpu")) != NULL;) - ++ncpus; + for_each_node_by_type(cpus, "cpu") + ++ncpus; printk(KERN_INFO "PowerMac SMP probe found %d cpus\n", ncpus); diff --git a/arch/powerpc/platforms/pseries/lparcfg.c b/arch/powerpc/platforms/pseries/lparcfg.c index 779fc2a1c8f7..1c1668c6b8c7 100644 --- a/arch/powerpc/platforms/pseries/lparcfg.c +++ b/arch/powerpc/platforms/pseries/lparcfg.c @@ -370,10 +370,10 @@ static void parse_system_parameter_string(struct seq_file *m) */ static int lparcfg_count_active_processors(void) { - struct device_node *cpus_dn = NULL; + struct device_node *cpus_dn; int count = 0; - while ((cpus_dn = of_find_node_by_type(cpus_dn, "cpu"))) { + for_each_node_by_type(cpus_dn, "cpu") { #ifdef LPARCFG_DEBUG printk(KERN_ERR "cpus_dn %p\n", cpus_dn); #endif