From c3790b3799f8d75d93d26f6fd7bb569fc8c8b0cb Mon Sep 17 00:00:00 2001 From: Nicolas Saenz Julienne Date: Fri, 21 Dec 2018 19:25:18 +0000 Subject: firmware: arm_sdei: fix wrong of_node_put() in init function After finding a "firmware" dt node arm_sdei tries to match it's compatible string with it. To do so it's calling of_find_matching_node() which already takes care of decreasing the refcount on the "firmware" node. We are then incorrectly decreasing the refcount on that node again. This patch removes the unwarranted call to of_node_put(). Signed-off-by: Nicolas Saenz Julienne Signed-off-by: James Morse Signed-off-by: Will Deacon --- drivers/firmware/arm_sdei.c | 1 - 1 file changed, 1 deletion(-) (limited to 'drivers/firmware') diff --git a/drivers/firmware/arm_sdei.c b/drivers/firmware/arm_sdei.c index 1ea71640fdc2..dffb47c6b480 100644 --- a/drivers/firmware/arm_sdei.c +++ b/drivers/firmware/arm_sdei.c @@ -1017,7 +1017,6 @@ static bool __init sdei_present_dt(void) return false; np = of_find_matching_node(fw_np, sdei_of_match); - of_node_put(fw_np); if (!np) return false; -- cgit From acafce48b07bf5f9994a38e7fe237193d43d092e Mon Sep 17 00:00:00 2001 From: James Morse Date: Fri, 21 Dec 2018 19:25:19 +0000 Subject: firmware: arm_sdei: Fix DT platform device creation It turns out the dt-probing part of this wasn't tested properly after it was merged. commit 3aa0582fdb82 ("of: platform: populate /firmware/ node from of_platform_default_populate_init()") changed the core-code to generate the platform devices, meaning the driver's attempt fails, and it bails out. Fix this by removing the manual platform-device creation for DT systems, core code has always done this for us. CC: Nicolas Saenz Julienne Signed-off-by: James Morse Signed-off-by: Will Deacon --- drivers/firmware/arm_sdei.c | 5 ----- 1 file changed, 5 deletions(-) (limited to 'drivers/firmware') diff --git a/drivers/firmware/arm_sdei.c b/drivers/firmware/arm_sdei.c index dffb47c6b480..c64c7da73829 100644 --- a/drivers/firmware/arm_sdei.c +++ b/drivers/firmware/arm_sdei.c @@ -1009,7 +1009,6 @@ static struct platform_driver sdei_driver = { static bool __init sdei_present_dt(void) { - struct platform_device *pdev; struct device_node *np, *fw_np; fw_np = of_find_node_by_name(NULL, "firmware"); @@ -1019,11 +1018,7 @@ static bool __init sdei_present_dt(void) np = of_find_matching_node(fw_np, sdei_of_match); if (!np) return false; - - pdev = of_platform_device_create(np, sdei_driver.driver.name, NULL); of_node_put(np); - if (!pdev) - return false; return true; } -- cgit