[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[PATCH] xen/arm: bootfdt: Check return code of device_tree_for_each_node()


  • To: <xen-devel@xxxxxxxxxxxxxxxxxxxx>
  • From: Michal Orzel <michal.orzel@xxxxxxx>
  • Date: Thu, 7 Dec 2023 11:14:32 +0100
  • Arc-authentication-results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=lists.xenproject.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none (0)
  • Arc-message-signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=WOVdor1/yV1fzI4Tcri4bpJHQ8CioN6n2kubyVLWEik=; b=nFJBAJiTodQ50ptNVsafy9aYnO54zcxPd2AclY78lxsycntoPp76o3j5vKegmS5lUVqMuVUgoZIb3krE0MFsQEU7dxiC/5ROM8dsAGBDm6vd6YUAAX1x/XloQdsAVkAaIRxdUvOfb4xt3Kfk+CiyHkHPahUyfZbwbDjvnTZmeg1mhRsWzXf1vQfRLfr59VnktT+mtAWw2RLzEH2xh0a2/E0NjOMs6+3Bo8/VWLuVy73bFBfj3fEYRRgshvzdDqYRwkRfQrUHv7OIIcwayxV1fJ4FcFpmmh2bRsWwBmEubjaxFCOLAJqWTBZfdU89/m01HDnVTkHRFdhzz6xT0/S5HQ==
  • Arc-seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=A6rASXLSUg7L400/jcb/QIseqtMmXPd8CODRMPRud97oY33VeXDoc/wirb5J/cVCOp0VpceJaL7rMo7LGQ4Rtk7VXx0KFtJcxsPcYIE/0UJqSBsAkh2gbydbjN9+AA16jJMOl8KexFFV0gDTKsT2G6g9P3Og0fqqG3rkrZ48DLWL36TaaL8hgtuMVEqduL8ngqJMY/1tXfcg5YVCEd2hxKDhjXXMzQ9dYXtQ6cGwOP8QLvDaYNLQK9pmbqkCr5vueYmuSKWXSWwT+YpHd15xykzcF+jPFMttviwMzpNW4t7rBSEiSKNs44PGjL2rqzHH72vItEGLYSaR3xgjP7vhkg==
  • Cc: Michal Orzel <michal.orzel@xxxxxxx>, Stefano Stabellini <sstabellini@xxxxxxxxxx>, Julien Grall <julien@xxxxxxx>, Bertrand Marquis <bertrand.marquis@xxxxxxx>, Volodymyr Babchuk <Volodymyr_Babchuk@xxxxxxxx>
  • Delivery-date: Thu, 07 Dec 2023 10:14:55 +0000
  • List-id: Xen developer discussion <xen-devel.lists.xenproject.org>

As a result of not checking the return code of device_tree_for_each_node()
in boot_fdt_info(), any error occured during early FDT parsing does not
stop Xen from booting. This can result in an unwanted behavior in later
boot stages. Fix it by checking the return code and panicing on an error.

Fixes: 9cf4a9a46717 ("device tree: add device_tree_for_each_node()")
Signed-off-by: Michal Orzel <michal.orzel@xxxxxxx>
---
I've lost count how many times I had to fix missing rc check. However, I have
not yet found any checker for this (-Wunused-result is pretty useless).
---
 xen/arch/arm/bootfdt.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/xen/arch/arm/bootfdt.c b/xen/arch/arm/bootfdt.c
index b1f03eb2fcdd..f496a8cf9494 100644
--- a/xen/arch/arm/bootfdt.c
+++ b/xen/arch/arm/bootfdt.c
@@ -541,7 +541,9 @@ size_t __init boot_fdt_info(const void *fdt, paddr_t paddr)
 
     add_boot_module(BOOTMOD_FDT, paddr, fdt_totalsize(fdt), false);
 
-    device_tree_for_each_node((void *)fdt, 0, early_scan_node, NULL);
+    ret = device_tree_for_each_node((void *)fdt, 0, early_scan_node, NULL);
+    if ( ret )
+        panic("Early FDT parsing failed (%d)\n", ret);
 
     /*
      * On Arm64 setup_directmap_mappings() expects to be called with the lowest
-- 
2.25.1




 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.