Applied. Thanks! On Mon, Sep 12, 2022 at 10:12 PM Rafael Mendonca <rafaelmendsr@xxxxxxxxx> wrote: > > 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@xxxxxxxxx> > --- > 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 5140d9c2bf3b..6a2e455c5466 100644 > --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c > +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c > @@ -1295,13 +1295,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.34.1 >