Commit ad2ab129 authored by Mike Tipton's avatar Mike Tipton Committed by Georgi Djakov
Browse files

interconnect: Treat xlate() returning NULL node as an error



Currently, if provider->xlate() or provider->xlate_extended()
"successfully" return a NULL node, then of_icc_get_from_provider() won't
consider that an error and will successfully return the NULL node. This
bypasses error handling in of_icc_get_by_index() and leads to NULL
dereferences in path_find().

This could be avoided by ensuring provider callbacks always return an
error for NULL nodes, but it's better to explicitly protect against this
in the common framework.

Fixes: 87e3031b ("interconnect: Allow endpoints translation via DT")
Signed-off-by: default avatarMike Tipton <quic_mdtipton@quicinc.com>
Link: https://lore.kernel.org/r/20231025145829.11603-1-quic_mdtipton@quicinc.com


Signed-off-by: default avatarGeorgi Djakov <djakov@kernel.org>
parent b85ea95d
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -395,6 +395,9 @@ struct icc_node_data *of_icc_get_from_provider(struct of_phandle_args *spec)
	}
	mutex_unlock(&icc_lock);

	if (!node)
		return ERR_PTR(-EINVAL);

	if (IS_ERR(node))
		return ERR_CAST(node);