drm/amdxcp: fix amdxcp unloads incompletely
authorJames Zhu <James.Zhu@amd.com>
Thu, 7 Sep 2023 14:41:00 +0000 (10:41 -0400)
committerAlex Deucher <alexander.deucher@amd.com>
Thu, 26 Oct 2023 23:04:53 +0000 (19:04 -0400)
amdxcp unloads incompletely, and below error will be seen during load/unload,
sysfs: cannot create duplicate filename '/devices/platform/amdgpu_xcp.0'

devres_release_group will free xcp device at first, platform device will be
unregistered later in platform_device_unregister.

Signed-off-by: James Zhu <James.Zhu@amd.com>
Acked-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/amdxcp/amdgpu_xcp_drv.c

index 353597fc908d9ffc384f3d7181e4c757549220d6..90ddd8371176eeae16dda3cf041fb26bd5fde433 100644 (file)
@@ -89,9 +89,10 @@ EXPORT_SYMBOL(amdgpu_xcp_drm_dev_alloc);
 void amdgpu_xcp_drv_release(void)
 {
        for (--pdev_num; pdev_num >= 0; --pdev_num) {
-               devres_release_group(&xcp_dev[pdev_num]->pdev->dev, NULL);
-               platform_device_unregister(xcp_dev[pdev_num]->pdev);
-               xcp_dev[pdev_num]->pdev = NULL;
+               struct platform_device *pdev = xcp_dev[pdev_num]->pdev;
+
+               devres_release_group(&pdev->dev, NULL);
+               platform_device_unregister(pdev);
                xcp_dev[pdev_num] = NULL;
        }
        pdev_num = 0;