[PATCH v2 1/6] amdgpu: fix possible resource leakage in kfd_cleanup_nodes()

Shuo Liu shuox.liu at linux.alibaba.com
Sun Jan 5 05:22:20 UTC 2025


Hi Gerry,

On Sun  5.Jan'25 at 10:45:29 +0800, Jiang Liu wrote:
>Fix possible resource leakage on error recovery path in function
>kgd2kfd_device_init().
>
>Signed-off-by: Jiang Liu <gerry at linux.alibaba.com>
>---
> drivers/gpu/drm/amd/amdkfd/kfd_device.c | 9 +++++----
> 1 file changed, 5 insertions(+), 4 deletions(-)
>
>diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_device.c b/drivers/gpu/drm/amd/amdkfd/kfd_device.c
>index a29374c86405..fa5054940486 100644
>--- a/drivers/gpu/drm/amd/amdkfd/kfd_device.c
>+++ b/drivers/gpu/drm/amd/amdkfd/kfd_device.c
>@@ -898,15 +898,15 @@ bool kgd2kfd_device_init(struct kfd_dev *kfd,
> 		if (kfd->adev->xcp_mgr)
> 			kfd_setup_interrupt_bitmap(node, i);
>
>+		spin_lock_init(&node->watch_points_lock);
>+
>+		kfd->nodes[i] = node;
>+
> 		/* Initialize the KFD node */
> 		if (kfd_init_node(node)) {
> 			dev_err(kfd_device, "Error initializing KFD node\n");
> 			goto node_init_error;
> 		}
>-
>-		spin_lock_init(&node->watch_points_lock);
>-
>-		kfd->nodes[i] = node;
> 	}
>
> 	svm_range_set_max_pages(kfd->adev);
>@@ -921,6 +921,7 @@ bool kgd2kfd_device_init(struct kfd_dev *kfd,
> 	goto out;
>
> node_init_error:
>+	i++;
The err cleanup path can release node itself. So the following
kfd_cleanup_nodes() may do a double free? 

> node_alloc_error:
> 	kfd_cleanup_nodes(kfd, i);
> 	kfd_doorbell_fini(kfd);
shuo


More information about the amd-gfx mailing list