Applied. Thanks. On Thu, Sep 29, 2022 at 10:04 AM Yang Yingliang <yangyingliang@xxxxxxxxxx> wrote: > > In some error path in amdgpu_sdma_init_microcode(), release_firmware() is > not called, the memory allocated in request_firmware() will be leaked, > calling amdgpu_sdma_destroy_inst_ctx() which calls release_firmware() to > avoid memory leak. > > Fixes: 60704abdddd9 ("drm/amdgpu: add function to init SDMA microcode") > Signed-off-by: Yang Yingliang <yangyingliang@xxxxxxxxxx> > --- > drivers/gpu/drm/amd/amdgpu/amdgpu_sdma.c | 8 +++++--- > 1 file changed, 5 insertions(+), 3 deletions(-) > > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_sdma.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_sdma.c > index 3949b7e3907f..43cf8632cc1a 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_sdma.c > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_sdma.c > @@ -222,8 +222,10 @@ int amdgpu_sdma_init_microcode(struct amdgpu_device *adev, > adev->sdma.instance[instance].fw->data; > version_major = le16_to_cpu(header->header_version_major); > > - if ((duplicate && instance) || (!duplicate && version_major > 1)) > - return -EINVAL; > + if ((duplicate && instance) || (!duplicate && version_major > 1)) { > + err = -EINVAL; > + goto out; > + } > > err = amdgpu_sdma_init_inst_ctx(&adev->sdma.instance[instance]); > if (err) > @@ -272,7 +274,7 @@ int amdgpu_sdma_init_microcode(struct amdgpu_device *adev, > ALIGN(le32_to_cpu(sdma_hdr->ctl_ucode_size_bytes), PAGE_SIZE); > break; > default: > - return -EINVAL; > + err = -EINVAL; > } > } > > -- > 2.25.1 >