@@ -174,8 +174,10 @@ static int __init bl_idle_init(void)
/*
* Initialize the driver just for a compliant set of machines
*/
- if (!of_match_node(compatible_machine_match, root))
- return -ENODEV;
+ if (!of_match_node(compatible_machine_match, root)){
+ ret = -ENODEV;
+ goto out_release_node;
+ }
if (!mcpm_is_available())
return -EUNATCH;
@@ -222,6 +224,8 @@ static int __init bl_idle_init(void)
kfree(bl_idle_big_driver.cpumask);
out_uninit_little:
kfree(bl_idle_little_driver.cpumask);
+out_release_node:
+ of_node_put(root);
return ret;
}
use of_node_put() to release the refcount. Signed-off-by: Yangtao Li <tiny.windzz@gmail.com> --- drivers/cpuidle/cpuidle-big_little.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-)