Commit 55010a71 authored by Flora Cui's avatar Flora Cui Committed by Liu Chuang
Browse files

drm/amdkfd: init drm_client with funcs hook

mainline inclusion
from mainline-v6.8-rc1
commit 733965a90f885de5e9626d383c7605a0a7850074
category: bugfix
bugzilla: https://gitee.com/src-openeuler/kernel/issues/I9TM7F
CVE: CVE-2024-36022

Reference: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=733965a90f885de5e9626d383c7605a0a7850074



--------------------------------

otherwise drm_client_dev_unregister() would try to
kfree(&adev->kfd.client).

Fixes: 1819200166ce ("drm/amdkfd: Export DMABufs from KFD using GEM handles")
Signed-off-by: default avatarFlora Cui <flora.cui@amd.com>
Reviewed-by: default avatarFelix Kuehling <felix.kuehling@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
Signed-off-by: default avatarLiu Chuang <liuchuang40@huawei.com>
parent 1a8e7475
Loading
Loading
Loading
Loading
+4 −1
Original line number Diff line number Diff line
@@ -137,6 +137,9 @@ static void amdgpu_amdkfd_reset_work(struct work_struct *work)
	amdgpu_device_gpu_recover(adev, NULL, &reset_context);
}

static const struct drm_client_funcs kfd_client_funcs = {
	.unregister	= drm_client_release,
};
void amdgpu_amdkfd_device_init(struct amdgpu_device *adev)
{
	int i;
@@ -160,7 +163,7 @@ void amdgpu_amdkfd_device_init(struct amdgpu_device *adev)
			.enable_mes = adev->enable_mes,
		};

		ret = drm_client_init(&adev->ddev, &adev->kfd.client, "kfd", NULL);
		ret = drm_client_init(&adev->ddev, &adev->kfd.client, "kfd", &kfd_client_funcs);
		if (ret) {
			dev_err(adev->dev, "Failed to init DRM client: %d\n", ret);
			return;