[PATCH] drm/display: fix of_node refcount leak in of_dp_aux_populate_bus()

Wentao Liang posted 1 patch 1 day, 19 hours ago
drivers/gpu/drm/display/drm_dp_aux_bus.c | 1 +
1 file changed, 1 insertion(+)
[PATCH] drm/display: fix of_node refcount leak in of_dp_aux_populate_bus()
Posted by Wentao Liang 1 day, 19 hours ago
of_dp_aux_populate_bus() acquires two references on np:
(1) of_get_next_available_child() at line 272, and
(2) of_node_get(np) at line 296 via device_set_node().

On the device_register() failure path, put_device() triggers
dp_aux_ep_dev_release() which only does kfree() without calling
of_node_put(). The error cleanup at err_did_get_np only releases
the first reference, leaking the second.

Add of_node_put(np) before goto err_did_set_populated to release
the extra reference on the error path.

Cc: stable@vger.kernel.org
Fixes: fe2e59aa5d70 ("drm: display: Set fwnode for aux bus devices")
Signed-off-by: Wentao Liang <vulab@iscas.ac.cn>
---
 drivers/gpu/drm/display/drm_dp_aux_bus.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/gpu/drm/display/drm_dp_aux_bus.c b/drivers/gpu/drm/display/drm_dp_aux_bus.c
index 6e5e3e542290..9dd64cf25d87 100644
--- a/drivers/gpu/drm/display/drm_dp_aux_bus.c
+++ b/drivers/gpu/drm/display/drm_dp_aux_bus.c
@@ -305,6 +305,7 @@ int of_dp_aux_populate_bus(struct drm_dp_aux *aux,
 		 * of kfree() directly for error cases.
 		 */
 		put_device(&aux_ep->dev);
+		of_node_put(np);
 
 		goto err_did_set_populated;
 	}
-- 
2.34.1