mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/netdev/net.git/
synced 2026-04-27 03:58:31 -04:00
drm/amdgpu: Fix memory leak in hpd_rx_irq_create_workqueue()
If construction of the array of work queues to handle hpd_rx_irq offload
work fails, we need to unwind. Destroy all the created workqueues and
the allocated memory for the hpd_rx_irq_offload_work_queue struct array.
Fixes: 8e794421bc ("drm/amd/display: Fork thread to offload work of hpd_rx_irq")
Signed-off-by: Rafael Mendonca <rafaelmendsr@gmail.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
committed by
Alex Deucher
parent
221bb3a9c3
commit
7136f956c7
@@ -1296,13 +1296,21 @@ static struct hpd_rx_irq_offload_work_queue *hpd_rx_irq_create_workqueue(struct
|
||||
|
||||
if (hpd_rx_offload_wq[i].wq == NULL) {
|
||||
DRM_ERROR("create amdgpu_dm_hpd_rx_offload_wq fail!");
|
||||
return NULL;
|
||||
goto out_err;
|
||||
}
|
||||
|
||||
spin_lock_init(&hpd_rx_offload_wq[i].offload_lock);
|
||||
}
|
||||
|
||||
return hpd_rx_offload_wq;
|
||||
|
||||
out_err:
|
||||
for (i = 0; i < max_caps; i++) {
|
||||
if (hpd_rx_offload_wq[i].wq)
|
||||
destroy_workqueue(hpd_rx_offload_wq[i].wq);
|
||||
}
|
||||
kfree(hpd_rx_offload_wq);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
struct amdgpu_stutter_quirk {
|
||||
|
||||
Reference in New Issue
Block a user