The Kernel stack is too small. Doing recursions there is a very bad idea, as, if something gets wrong, it could lead to data corruption. So, re-implement cio2_check_fwnode_graph() to avoid recursion. Compile-tested only. Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@xxxxxxxxxx> --- drivers/media/pci/intel/ipu3/ipu3-cio2-main.c | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/drivers/media/pci/intel/ipu3/ipu3-cio2-main.c b/drivers/media/pci/intel/ipu3/ipu3-cio2-main.c index 356ea966cf8d..8e4f250a8b56 100644 --- a/drivers/media/pci/intel/ipu3/ipu3-cio2-main.c +++ b/drivers/media/pci/intel/ipu3/ipu3-cio2-main.c @@ -1691,16 +1691,15 @@ static int cio2_check_fwnode_graph(struct fwnode_handle *fwnode) { struct fwnode_handle *endpoint; - if (IS_ERR_OR_NULL(fwnode)) - return -EINVAL; - - endpoint = fwnode_graph_get_next_endpoint(fwnode, NULL); - if (endpoint) { - fwnode_handle_put(endpoint); - return 0; + while (!IS_ERR_OR_NULL(fwnode)) { + endpoint = fwnode_graph_get_next_endpoint(fwnode, NULL); + if (endpoint) { + fwnode_handle_put(endpoint); + return 0; + } + fwnode = fwnode->secondary; } - - return cio2_check_fwnode_graph(fwnode->secondary); + return -EINVAL; } /**************** PCI interface ****************/ -- 2.33.1