From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1758104AbcH3Kmh (ORCPT ); Tue, 30 Aug 2016 06:42:37 -0400 Received: from mailout3.w1.samsung.com ([210.118.77.13]:35233 "EHLO mailout3.w1.samsung.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1757333AbcH3Kme (ORCPT ); Tue, 30 Aug 2016 06:42:34 -0400 X-AuditID: cbfec7f5-f792e6d0000013f5-61-57c56316b6fe From: Andrzej Hajda To: Matt Fleming , linux-efi@vger.kernel.org (open list:EXTENSIBLE FIRMWARE INTERFACE (EFI)) Cc: Andrzej Hajda , Bartlomiej Zolnierkiewicz , Marek Szyprowski , linux-kernel@vger.kernel.org (open list), Ingo Molnar , Thomas Gleixner , "H . Peter Anvin" Subject: [PATCH v2] efi: fix handling error value in fdt_find_uefi_params Date: Tue, 30 Aug 2016 12:41:37 +0200 Message-id: <1472553697-27984-1-git-send-email-a.hajda@samsung.com> X-Mailer: git-send-email 1.9.1 In-reply-to: <20160830100742.GA32579@codeblueprint.co.uk> References: <20160830100742.GA32579@codeblueprint.co.uk> X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFlrALMWRmVeSWpSXmKPExsVy+t/xK7piyUfDDW7+N7e4te4cq8XGGetZ LaZtFLdoe3iL0eLyrjlsFmuP3GW36H9ZZrH63ylGi82bpjI7cHp0bZjF6LFpVSebx7tz59g9 +rasYvT4vEnO40TLF9YAtigum5TUnMyy1CJ9uwSujP1/PQquc1ScaF7K2MDYw97FyMkhIWAi cb9jJxuELSZx4d56IJuLQ0hgKaPE7x8bWUESQgJNTBIzbtuA2GwCmhJ/N98EaxARqJCYNfM7 C0gDs8BSJoldTdfBGoQFPCV+bP7PDGKzCKhK/F7+GKyBV8BZ4sKSvYwQ2+QkTh6bDFbPKWAp seDiRjaIZRYSc9tvs01g5F3AyLCKUTS1NLmgOCk910ivODG3uDQvXS85P3cTIyTcvu5gXHrM 6hCjAAejEg/vBJcj4UKsiWXFlbmHGCU4mJVEeNsSjoYL8aYkVlalFuXHF5XmpBYfYpTmYFES 5525632IkEB6YklqdmpqQWoRTJaJg1OqgbEkaHXBg7izO5c+nTVF6L2wU7fUTu+Q7y93pJ2Q 11LPWZkXlcQrMNuyc1tchm/9htP6BcqS0zert/bHZedy5C/wjFcTmDB5qadyDfMmt05Lj/fb yvpjG9U/Wtmt+cck/GfqTnMbK3mpkiWHf8Q/evBfMW35XQtXhr+8ng4353xcEqHNOJn9kxJL cUaioRZzUXEiABHzwV4zAgAA Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org of_get_flat_dt_subnode_by_name can return negative value in case of error. Assigning the result to unsigned variable and checking if the variable is lesser than zero is incorrect and always false. The patch fixes it by using signed variable to check the result. The problem has been detected using semantic patch scripts/coccinelle/tests/unsigned_lesser_than_zero.cocci Signed-off-by: Andrzej Hajda --- drivers/firmware/efi/efi.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/drivers/firmware/efi/efi.c b/drivers/firmware/efi/efi.c index 5a2631a..7dd2e2d 100644 --- a/drivers/firmware/efi/efi.c +++ b/drivers/firmware/efi/efi.c @@ -657,9 +657,12 @@ static int __init fdt_find_uefi_params(unsigned long node, const char *uname, } if (subnode) { - node = of_get_flat_dt_subnode_by_name(node, subnode); - if (node < 0) + int err = of_get_flat_dt_subnode_by_name(node, subnode); + + if (err < 0) return 0; + + node = err; } return __find_uefi_params(node, info, dt_params[i].params); -- 1.9.1