From patchwork Fri Feb 19 15:58:09 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andrew Jones X-Patchwork-Id: 585262 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 986AF140775 for ; Sat, 20 Feb 2016 02:58:48 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1946547AbcBSP6r (ORCPT ); Fri, 19 Feb 2016 10:58:47 -0500 Received: from mx1.redhat.com ([209.132.183.28]:53479 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1946111AbcBSP6q (ORCPT ); Fri, 19 Feb 2016 10:58:46 -0500 Received: from int-mx09.intmail.prod.int.phx2.redhat.com (int-mx09.intmail.prod.int.phx2.redhat.com [10.5.11.22]) by mx1.redhat.com (Postfix) with ESMTPS id 812D4627C2; Fri, 19 Feb 2016 15:58:46 +0000 (UTC) Received: from hawk.localdomain.com (dhcp-1-251.brq.redhat.com [10.34.1.251]) by int-mx09.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id u1JFwWkD002316; Fri, 19 Feb 2016 10:58:44 -0500 From: Andrew Jones To: kvm@vger.kernel.org, kvm-ppc@vger.kernel.org Cc: thuth@redhat.com, dgibson@redhat.com, david@gibson.dropbear.id.au, agraf@suse.de, lvivier@redhat.com, pbonzini@redhat.com, rkrcmar@redhat.com Subject: [kvm-unit-tests PATCH v6 04/18] devicetree: fix dt_get_memory_params Date: Fri, 19 Feb 2016 16:58:09 +0100 Message-Id: <1455897503-11835-5-git-send-email-drjones@redhat.com> In-Reply-To: <1455897503-11835-1-git-send-email-drjones@redhat.com> References: <1455897503-11835-1-git-send-email-drjones@redhat.com> X-Scanned-By: MIMEDefang 2.68 on 10.5.11.22 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.38]); Fri, 19 Feb 2016 15:58:46 +0000 (UTC) Sender: kvm-ppc-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: kvm-ppc@vger.kernel.org Index nr was overreaching with its indexing. It should only index the caller's regs array. We need a different index for the memory nodes' reg properties. Signed-off-by: Andrew Jones Reviewed-by: Thomas Huth Tested-by: Laurent Vivier Reviewed-by: David Gibson --- The next patch needs this fix. --- lib/devicetree.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/lib/devicetree.c b/lib/devicetree.c index 36cb28610ff41..a5c7f7c69ddfd 100644 --- a/lib/devicetree.c +++ b/lib/devicetree.c @@ -165,22 +165,24 @@ int dt_pbus_get_base_compatible(const char *compatible, int dt_get_memory_params(struct dt_pbus_reg *regs, int nr_regs) { const char *pn = "device_type", *pv = "memory"; - int node, ret, pl = strlen(pv) + 1, nr = 0; + int node, ret, reg_idx, pl = strlen(pv) + 1, nr = 0; struct dt_pbus_reg reg; node = fdt_node_offset_by_prop_value(fdt, -1, pn, pv, pl); while (node >= 0) { + reg_idx = 0; + while (nr < nr_regs) { - ret = dt_pbus_translate_node(node, nr, ®); + ret = dt_pbus_translate_node(node, reg_idx, ®); if (ret == -FDT_ERR_NOTFOUND) break; if (ret < 0) return ret; regs[nr].addr = reg.addr; regs[nr].size = reg.size; - ++nr; + ++nr, ++reg_idx; } node = fdt_node_offset_by_prop_value(fdt, node, pn, pv, pl);