Re: [PATCH] drm/amdgpu/powerplay/psm: Fix memory leak in power state init

From: Alex Deucher
Date: Tue Oct 18 2022 - 11:59:33 EST


Applied. Thanks!

Alex

On Mon, Oct 17, 2022 at 9:07 PM Quan, Evan <Evan.Quan@xxxxxxx> wrote:
>
> [AMD Official Use Only - General]
>
> Reviewed-by: Evan Quan <evan.quan@xxxxxxx>
>
> > -----Original Message-----
> > From: Rafael Mendonca <rafaelmendsr@xxxxxxxxx>
> > Sent: Tuesday, October 18, 2022 8:54 AM
> > To: Quan, Evan <Evan.Quan@xxxxxxx>; Deucher, Alexander
> > <Alexander.Deucher@xxxxxxx>; Koenig, Christian
> > <Christian.Koenig@xxxxxxx>; Pan, Xinhui <Xinhui.Pan@xxxxxxx>; David
> > Airlie <airlied@xxxxxxxxx>; Daniel Vetter <daniel@xxxxxxxx>
> > Cc: Rafael Mendonca <rafaelmendsr@xxxxxxxxx>; amd-
> > gfx@xxxxxxxxxxxxxxxxxxxxx; dri-devel@xxxxxxxxxxxxxxxxxxxxx; linux-
> > kernel@xxxxxxxxxxxxxxx
> > Subject: [PATCH] drm/amdgpu/powerplay/psm: Fix memory leak in power
> > state init
> >
> > Commit 902bc65de0b3 ("drm/amdgpu/powerplay/psm: return an error in
> > power state init") made the power state init function return early in case of
> > failure to get an entry from the powerplay table, but it missed to clean up the
> > allocated memory for the current power state before returning.
> >
> > Fixes: 902bc65de0b3 ("drm/amdgpu/powerplay/psm: return an error in
> > power state init")
> > Signed-off-by: Rafael Mendonca <rafaelmendsr@xxxxxxxxx>
> > ---
> > drivers/gpu/drm/amd/pm/powerplay/hwmgr/pp_psm.c | 2 ++
> > 1 file changed, 2 insertions(+)
> >
> > diff --git a/drivers/gpu/drm/amd/pm/powerplay/hwmgr/pp_psm.c
> > b/drivers/gpu/drm/amd/pm/powerplay/hwmgr/pp_psm.c
> > index 67d7da0b6fed..1d829402cd2e 100644
> > --- a/drivers/gpu/drm/amd/pm/powerplay/hwmgr/pp_psm.c
> > +++ b/drivers/gpu/drm/amd/pm/powerplay/hwmgr/pp_psm.c
> > @@ -75,8 +75,10 @@ int psm_init_power_state_table(struct pp_hwmgr
> > *hwmgr)
> > for (i = 0; i < table_entries; i++) {
> > result = hwmgr->hwmgr_func->get_pp_table_entry(hwmgr,
> > i, state);
> > if (result) {
> > + kfree(hwmgr->current_ps);
> > kfree(hwmgr->request_ps);
> > kfree(hwmgr->ps);
> > + hwmgr->current_ps = NULL;
> > hwmgr->request_ps = NULL;
> > hwmgr->ps = NULL;
> > return -EINVAL;
> > --
> > 2.34.1