lkml.org 
[lkml]   [2022]   [Oct]   [19]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 6.0 388/862] drm/amdgpu: Fix memory leak in hpd_rx_irq_create_workqueue()
    Date
    From: Rafael Mendonca <rafaelmendsr@gmail.com>

    [ Upstream commit 7136f956c73c4ba50bfeb61653dfd6a9669ea915 ]

    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: 8e794421bc98 ("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>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 10 +++++++++-
    1 file changed, 9 insertions(+), 1 deletion(-)

    diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
    index 6e36427aab46..194142c581c8 100644
    --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
    +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
    @@ -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 {
    --
    2.35.1


    \
     
     \ /
      Last update: 2022-10-19 14:56    [W:2.240 / U:0.060 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site