[PATCH] gpu: ipu-v3: fix OF node reference leaks in ipu_add_client_devices()

Joe Hattori joe at pf.is.s.u-tokyo.ac.jp
Sun Dec 15 03:22:22 UTC 2024


ipu_add_client_devices() does not release the obtained OF node reference
in the error path. Call of_node_put() on the OF nodes before returning
an error.

This bug was found by an experimental static analysis tool that I am
developing.

Fixes: 17e052175039 ("gpu: ipu-v3: Do not bail out on missing optional port nodes")
Signed-off-by: Joe Hattori <joe at pf.is.s.u-tokyo.ac.jp>
---
 drivers/gpu/ipu-v3/ipu-common.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/drivers/gpu/ipu-v3/ipu-common.c b/drivers/gpu/ipu-v3/ipu-common.c
index 947323f4a234..8091b959b7ea 100644
--- a/drivers/gpu/ipu-v3/ipu-common.c
+++ b/drivers/gpu/ipu-v3/ipu-common.c
@@ -1178,6 +1178,7 @@ static int ipu_add_client_devices(struct ipu_soc *ipu, unsigned long ipu_base)
 			ret = platform_device_add(pdev);
 		if (ret) {
 			platform_device_put(pdev);
+			of_node_put(of_node);
 			goto err_register;
 		}
 	}
@@ -1185,6 +1186,8 @@ static int ipu_add_client_devices(struct ipu_soc *ipu, unsigned long ipu_base)
 	return 0;
 
 err_register:
+	while (--i >= 0)
+		of_node_put(client_reg[i].pdata.of_node);
 	platform_device_unregister_children(to_platform_device(dev));
 
 	return ret;
-- 
2.34.1



More information about the dri-devel mailing list