of: property: decrement node refcount in of_fwnode_get_reference_args()
authorYang Yingliang <yangyingliang@huawei.com>
Mon, 21 Nov 2022 02:32:09 +0000 (10:32 +0800)
committerRob Herring <robh@kernel.org>
Tue, 22 Nov 2022 23:22:52 +0000 (17:22 -0600)
In of_fwnode_get_reference_args(), the refcount of of_args.np has
been incremented in the case of successful return from
of_parse_phandle_with_args() or of_parse_phandle_with_fixed_args().

Decrement the refcount if of_args is not returned to the caller of
of_fwnode_get_reference_args().

Fixes: 3e3119d3088f ("device property: Introduce fwnode_property_get_reference_args")
Signed-off-by: Yang Yingliang <yangyingliang@huawei.com>
Reviewed-by: Sakari Ailus <sakari.ailus@linux.intel.com>
Reviewed-by: Frank Rowand <frowand.list@gmail.com>
Link: https://lore.kernel.org/r/20221121023209.3909759-1-yangyingliang@huawei.com
Signed-off-by: Rob Herring <robh@kernel.org>
drivers/of/property.c

index 967f79b..134cfc9 100644 (file)
@@ -993,8 +993,10 @@ of_fwnode_get_reference_args(const struct fwnode_handle *fwnode,
                                                       nargs, index, &of_args);
        if (ret < 0)
                return ret;
-       if (!args)
+       if (!args) {
+               of_node_put(of_args.np);
                return 0;
+       }
 
        args->nargs = of_args.args_count;
        args->fwnode = of_fwnode_handle(of_args.np);