From d2eb817457b3591969fdcb587c52f7643d109f21 Mon Sep 17 00:00:00 2001 From: Yang Yingliang Date: Tue, 19 Nov 2019 11:17:15 +0800 Subject: [PATCH] drm/amdkfd: check kfd->ih_wq in kfd_interrupt_init() hulk inclusion category: bugfix bugzilla: 13690 CVE: CVE-2019-16229 ------------------------------------------------- There are multiple points in the Linux Kernel where alloc_workqueue is not getting checked for errors and as a result, a potential NULL dereference could occur. https://lkml.org/lkml/2019/9/9/487 Signed-off-by: Yang Yingliang Reviewed-by: Wenan Mao Signed-off-by: Yang Yingliang --- drivers/gpu/drm/amd/amdkfd/kfd_interrupt.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_interrupt.c b/drivers/gpu/drm/amd/amdkfd/kfd_interrupt.c index c56ac47cd318..c07c9bf58d5f 100644 --- a/drivers/gpu/drm/amd/amdkfd/kfd_interrupt.c +++ b/drivers/gpu/drm/amd/amdkfd/kfd_interrupt.c @@ -62,6 +62,11 @@ int kfd_interrupt_init(struct kfd_dev *kfd) } kfd->ih_wq = alloc_workqueue("KFD IH", WQ_HIGHPRI, 1); + if (!kfd->ih_wq) { + kfifo_free(&kfd->ih_fifo); + dev_err(kfd_chardev(), "Failed to allocate KFD IH workqueue\n"); + return -ENOMEM; + } spin_lock_init(&kfd->interrupt_lock); INIT_WORK(&kfd->interrupt_work, interrupt_wq); -- GitLab