Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751432AbdIJK0J (ORCPT ); Sun, 10 Sep 2017 06:26:09 -0400 Received: from baptiste.telenet-ops.be ([195.130.132.51]:45536 "EHLO baptiste.telenet-ops.be" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751356AbdIJK0I (ORCPT ); Sun, 10 Sep 2017 06:26:08 -0400 From: Geert Uytterhoeven To: Pantelis Antoniou , Rob Herring , Frank Rowand , Grant Likely Cc: Arnd Bergmann , devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, Geert Uytterhoeven Subject: [PATCH] of: overlay: Fix uninitialized vars in dup_and_fixup_symbol_prop() Date: Sun, 10 Sep 2017 12:26:04 +0200 Message-Id: <1505039164-25468-1-git-send-email-geert@linux-m68k.org> X-Mailer: git-send-email 2.7.4 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1406 Lines: 39 With gcc 4.1.2: drivers/of/overlay.c: In function ‘dup_and_fixup_symbol_prop’: drivers/of/overlay.c:108: warning: ‘overlay_name_len’ may be used uninitialized in this function drivers/of/overlay.c:100: warning: ‘ovinfo’ may be used uninitialized in this function Indeed, if ov->count == 0, both variables are uninitialized, which may lead to a crash when dereferencing ovinfo later. Currently this is a false positive, as the sole creator of of_overlay structures (of_build_overlay_info(), introduced in commit 7518b5890d8ac366 ("of/overlay: Introduce DT overlay support") checks for this. To prevent future issues, add a check for a zero ov->count to dup_and_fixup_symbol_prop(). Note that this does not get rid of the actual compiler warning. Fixes: d1651b03c2df75db ("of: overlay: add overlay symbols to live device tree") Signed-off-by: Geert Uytterhoeven --- drivers/of/overlay.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/of/overlay.c b/drivers/of/overlay.c index 8ecfee31ab6d3874..ebe19e0f8e4d1f4b 100644 --- a/drivers/of/overlay.c +++ b/drivers/of/overlay.c @@ -108,7 +108,7 @@ static struct property *dup_and_fixup_symbol_prop(struct of_overlay *ov, int overlay_name_len; int target_path_len; - if (!prop->value) + if (!ov->count || !prop->value) return NULL; symbol_path = prop->value; -- 2.7.4