From: Greg Kroah-Hartman Date: Mon, 13 Apr 2026 14:51:18 +0000 (+0200) Subject: 5.10-stable patches X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=cf5ac011c90a4e6ce2423ccda4a5c03ac472ada8;p=thirdparty%2Fkernel%2Fstable-queue.git 5.10-stable patches added patches: device-property-fix-of-node-refcount-leak-in-fwnode_graph_get_next_endpoint.patch --- diff --git a/queue-5.10/device-property-fix-of-node-refcount-leak-in-fwnode_graph_get_next_endpoint.patch b/queue-5.10/device-property-fix-of-node-refcount-leak-in-fwnode_graph_get_next_endpoint.patch new file mode 100644 index 0000000000..bf7a405e53 --- /dev/null +++ b/queue-5.10/device-property-fix-of-node-refcount-leak-in-fwnode_graph_get_next_endpoint.patch @@ -0,0 +1,69 @@ +From 39af728649b05e88a2b40e714feeee6451c3f18e Mon Sep 17 00:00:00 2001 +From: Yang Yingliang +Date: Wed, 23 Nov 2022 10:25:42 +0800 +Subject: device property: fix of node refcount leak in fwnode_graph_get_next_endpoint() + +From: Yang Yingliang + +commit 39af728649b05e88a2b40e714feeee6451c3f18e upstream. + +The 'parent' returned by fwnode_graph_get_port_parent() +with refcount incremented when 'prev' is not NULL, it +needs be put when finish using it. + +Because the parent is const, introduce a new variable to +store the returned fwnode, then put it before returning +from fwnode_graph_get_next_endpoint(). + +Fixes: b5b41ab6b0c1 ("device property: Check fwnode->secondary in fwnode_graph_get_next_endpoint()") +Signed-off-by: Yang Yingliang +Reviewed-by: Sakari Ailus +Reviewed-by: Andy Shevchenko +Reviewed-and-tested-by: Daniel Scally +Link: https://lore.kernel.org/r/20221123022542.2999510-1-yangyingliang@huawei.com +Signed-off-by: Greg Kroah-Hartman +--- + drivers/base/property.c | 18 ++++++++++++------ + 1 file changed, 12 insertions(+), 6 deletions(-) + +--- a/drivers/base/property.c ++++ b/drivers/base/property.c +@@ -1054,26 +1054,32 @@ struct fwnode_handle * + fwnode_graph_get_next_endpoint(const struct fwnode_handle *fwnode, + struct fwnode_handle *prev) + { ++ struct fwnode_handle *ep, *port_parent = NULL; + const struct fwnode_handle *parent; +- struct fwnode_handle *ep; + + /* + * If this function is in a loop and the previous iteration returned + * an endpoint from fwnode->secondary, then we need to use the secondary + * as parent rather than @fwnode. + */ +- if (prev) +- parent = fwnode_graph_get_port_parent(prev); +- else ++ if (prev) { ++ port_parent = fwnode_graph_get_port_parent(prev); ++ parent = port_parent; ++ } else { + parent = fwnode; ++ } + if (IS_ERR_OR_NULL(parent)) + return NULL; + + ep = fwnode_call_ptr_op(parent, graph_get_next_endpoint, prev); + if (ep) +- return ep; ++ goto out_put_port_parent; + +- return fwnode_graph_get_next_endpoint(parent->secondary, NULL); ++ ep = fwnode_graph_get_next_endpoint(parent->secondary, NULL); ++ ++out_put_port_parent: ++ fwnode_handle_put(port_parent); ++ return ep; + } + EXPORT_SYMBOL_GPL(fwnode_graph_get_next_endpoint); + diff --git a/queue-5.10/series b/queue-5.10/series index fe0b6aec3b..9c971a34c7 100644 --- a/queue-5.10/series +++ b/queue-5.10/series @@ -490,3 +490,4 @@ device-property-allow-error-pointer-to-be-passed-to-fwnode-apis.patch device-property-allow-secondary-lookup-in-fwnode_get_next_child_node.patch batman-adv-avoid-ogm-aggregation-when-skb-tailroom-is-insufficient.patch s390-syscalls-add-spectre-boundary-for-syscall-dispatch-table.patch +device-property-fix-of-node-refcount-leak-in-fwnode_graph_get_next_endpoint.patch