Messages in this thread Patch in this message | ![/](/images/icornerl.gif) | | From | Jonathan Cameron <> | Subject | [RFC PATCH 3/5] of: unittest: Use for_each_child_of_node_scoped() | Date | Sun, 28 Jan 2024 16:05:40 +0000 |
| |
From: Jonathan Cameron <Jonathan.Cameron@huawei.com>
A simple example of the utility of this autocleanup approach to handling of_node_put()
Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com> --- drivers/of/unittest.c | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-)
diff --git a/drivers/of/unittest.c b/drivers/of/unittest.c index cfd60e35a899..d353327767b3 100644 --- a/drivers/of/unittest.c +++ b/drivers/of/unittest.c @@ -233,27 +233,22 @@ static void __init of_unittest_dynamic(void) static int __init of_unittest_check_node_linkage(struct device_node *np) { - struct device_node *child; int count = 0, rc; - for_each_child_of_node(np, child) { + for_each_child_of_node_scoped(np, child) { if (child->parent != np) { pr_err("Child node %pOFn links to wrong parent %pOFn\n", child, np); - rc = -EINVAL; - goto put_child; + return -EINVAL; } rc = of_unittest_check_node_linkage(child); if (rc < 0) - goto put_child; + return rc; count += rc; } return count + 1; -put_child: - of_node_put(child); - return rc; } static void __init of_unittest_check_tree_linkage(void) -- 2.43.0
| ![\](/images/icornerr.gif) |