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)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 8 Dec 2022 10:28:39 +0000 (11:28 +0100)
[ Upstream commit 60d865bd5a9b15a3961eb1c08bd4155682a3c81e ]

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>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/of/property.c

index a348348..acf0d31 100644 (file)
@@ -975,8 +975,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);