From: Danilo Krummrich <dakr@redhat.com>
To: Zhanxin Qi <zhanxin@nfschina.com>
Cc: kherbst@redhat.com, lyude@redhat.com, airlied@gmail.com,
simona@ffwll.ch, dri-devel@lists.freedesktop.org,
nouveau@lists.freedesktop.org, linux-kernel@vger.kernel.org,
stable@vger.kernel.org, Duanjun Li <duanjun@nfschina.com>
Subject: Re: [PATCH v1 v1] drm/nouveau: Fix memory leak in nvbios_iccsense_parse
Date: Mon, 16 Dec 2024 15:07:06 +0100 [thread overview]
Message-ID: <Z2A0CuGRJD-asF3y@cassiopeiae> (raw)
In-Reply-To: <20241216130303.246223-1-zhanxin@nfschina.com>
The version after the inital one should be "v2". You can use
git format-patch -v{VERSION_NUMBER} for this.
On Mon, Dec 16, 2024 at 09:03:03PM +0800, Zhanxin Qi wrote:
> The nvbios_iccsense_parse function allocates memory for sensor data
> but fails to free it when the function exits, leading to a memory
> leak. Add proper cleanup to free the allocated memory.
>
> Fixes: 39b7e6e547ff ("drm/nouveau/nvbios/iccsense: add parsing of the SENSE table")
This should be
Fixes: b71c0892631a ("drm/nouveau/iccsense: implement for ina209, ina219 and ina3221")
instead.
The function introduced by 39b7e6e547ff ("drm/nouveau/nvbios/iccsense: add
parsing of the SENSE table") is correct, but the other commit did not clean up
after using it.
>
> Cc: stable@vger.kernel.org
> Signed-off-by: Zhanxin Qi <zhanxin@nfschina.com>
> Signed-off-by: Duanjun Li <duanjun@nfschina.com>
Why is there also Duanjun's SOB? If there is a co-author, this should be
indicated with a "Co-developed-by" tag. Adding the SOB only is not sufficient,
please see [1].
> Signed-off-by: Danilo Krummrich <dakr@redhat.com>
Please don't add my SOB to your commits -- I'll add it when I apply the patch.
Please also see [1].
[1] https://docs.kernel.org/process/submitting-patches.html#sign-your-work-the-developer-s-certificate-of-origin
> ---
> .../include/nvkm/subdev/bios/iccsense.h | 2 ++
> .../drm/nouveau/nvkm/subdev/bios/iccsense.c | 20 +++++++++++++++++++
> .../drm/nouveau/nvkm/subdev/iccsense/base.c | 3 +++
> 3 files changed, 25 insertions(+)
>
> diff --git a/drivers/gpu/drm/nouveau/include/nvkm/subdev/bios/iccsense.h b/drivers/gpu/drm/nouveau/include/nvkm/subdev/bios/iccsense.h
> index 4c108fd2c805..8bfc28c3f7a7 100644
> --- a/drivers/gpu/drm/nouveau/include/nvkm/subdev/bios/iccsense.h
> +++ b/drivers/gpu/drm/nouveau/include/nvkm/subdev/bios/iccsense.h
> @@ -20,4 +20,6 @@ struct nvbios_iccsense {
> };
>
> int nvbios_iccsense_parse(struct nvkm_bios *, struct nvbios_iccsense *);
> +
> +void nvbios_iccsense_cleanup(struct nvbios_iccsense *iccsense);
> #endif
> diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/bios/iccsense.c b/drivers/gpu/drm/nouveau/nvkm/subdev/bios/iccsense.c
> index dea444d48f94..38fcc91ffea6 100644
> --- a/drivers/gpu/drm/nouveau/nvkm/subdev/bios/iccsense.c
> +++ b/drivers/gpu/drm/nouveau/nvkm/subdev/bios/iccsense.c
> @@ -56,6 +56,19 @@ nvbios_iccsense_table(struct nvkm_bios *bios, u8 *ver, u8 *hdr, u8 *cnt,
> return 0;
> }
>
> +/**
> + * nvbios_iccsense_parse - Parse ICCSENSE table from VBIOS
> + * @bios: VBIOS base pointer
> + * @iccsense: ICCSENSE table structure to fill
> + *
> + * Parses the ICCSENSE table from VBIOS and fills the provided structure.
> + * The caller must invoke nvbios_iccsense_cleanup() after successful parsing
> + * to free the allocated rail resources.
> + *
> + * Returns:
> + * 0 - Success
> + * -ENODEV - Table not found
> + */
Looks good, thanks for adding this!
> int
> nvbios_iccsense_parse(struct nvkm_bios *bios, struct nvbios_iccsense *iccsense)
> {
> @@ -127,3 +140,10 @@ nvbios_iccsense_parse(struct nvkm_bios *bios, struct nvbios_iccsense *iccsense)
>
> return 0;
> }
> +
> +void
> +nvbios_iccsense_cleanup(struct nvbios_iccsense *iccsense)
> +{
> + kfree(iccsense->rail);
> + iccsense->rail = NULL;
> +}
> diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/iccsense/base.c b/drivers/gpu/drm/nouveau/nvkm/subdev/iccsense/base.c
> index 8f0ccd3664eb..4c1759ecce38 100644
> --- a/drivers/gpu/drm/nouveau/nvkm/subdev/iccsense/base.c
> +++ b/drivers/gpu/drm/nouveau/nvkm/subdev/iccsense/base.c
> @@ -291,6 +291,9 @@ nvkm_iccsense_oneinit(struct nvkm_subdev *subdev)
> list_add_tail(&rail->head, &iccsense->rails);
> }
> }
> +
> + nvbios_iccsense_cleanup(&stbl);
> +
> return 0;
> }
>
> --
> 2.30.2
>
next prev parent reply other threads:[~2024-12-16 14:07 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-12-16 1:52 [PATCH] drm/nouveau: Fix memory leak in nvbios_iccsense_parse Zhanxin Qi
2024-12-16 9:45 ` Danilo Krummrich
2024-12-16 12:46 ` [PATCH v1 v1] " Zhanxin Qi
2024-12-16 12:49 ` kernel test robot
2024-12-16 13:03 ` Zhanxin Qi
2024-12-16 14:07 ` Danilo Krummrich [this message]
2024-12-17 1:53 ` [PATCH v2] " Zhanxin Qi
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=Z2A0CuGRJD-asF3y@cassiopeiae \
--to=dakr@redhat.com \
--cc=airlied@gmail.com \
--cc=dri-devel@lists.freedesktop.org \
--cc=duanjun@nfschina.com \
--cc=kherbst@redhat.com \
--cc=linux-kernel@vger.kernel.org \
--cc=lyude@redhat.com \
--cc=nouveau@lists.freedesktop.org \
--cc=simona@ffwll.ch \
--cc=stable@vger.kernel.org \
--cc=zhanxin@nfschina.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.