drivers/gpu/drm/xlnx/zynqmp_dp_audio.c | 4 ++++ 1 file changed, 4 insertions(+)
devm_kasprintf() calls can return null pointers on failure.
But some return values were not checked in zynqmp_audio_init().
Add NULL check in zynqmp_audio_init(), avoid referencing null
pointers in the subsequent code.
Signed-off-by: Charles Han <hanchunchao@inspur.com>
---
drivers/gpu/drm/xlnx/zynqmp_dp_audio.c | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/drivers/gpu/drm/xlnx/zynqmp_dp_audio.c b/drivers/gpu/drm/xlnx/zynqmp_dp_audio.c
index fa5f0ace6084..f07ff4eb3a6d 100644
--- a/drivers/gpu/drm/xlnx/zynqmp_dp_audio.c
+++ b/drivers/gpu/drm/xlnx/zynqmp_dp_audio.c
@@ -323,12 +323,16 @@ int zynqmp_audio_init(struct zynqmp_dpsub *dpsub)
audio->dai_name = devm_kasprintf(dev, GFP_KERNEL,
"%s-dai", dev_name(dev));
+ if (!audio->dai_name)
+ return -ENOMEM;
for (unsigned int i = 0; i < ZYNQMP_NUM_PCMS; ++i) {
audio->link_names[i] = devm_kasprintf(dev, GFP_KERNEL,
"%s-dp-%u", dev_name(dev), i);
audio->pcm_names[i] = devm_kasprintf(dev, GFP_KERNEL,
"%s-pcm-%u", dev_name(dev), i);
+ if (!audio->link_names[i] || !audio->pcm_names[i])
+ return -ENOMEM;
}
audio->base = devm_platform_ioremap_resource_byname(pdev, "aud");
--
2.43.0
… > --- > drivers/gpu/drm/xlnx/zynqmp_dp_audio.c | 4 ++++ … See also: https://lore.kernel.org/all/?q=%22This+looks+like+a+new+version+of+a+previously+submitted+patch%22 https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/Documentation/process/submitting-patches.rst?h=v6.14-rc2#n310 >> I will read these documents carefully. I would miss more desirable effects accordingly. Regards, Markus
Hi,
On 11/02/2025 12:20, Charles Han wrote:
> devm_kasprintf() calls can return null pointers on failure.
> But some return values were not checked in zynqmp_audio_init().
>
> Add NULL check in zynqmp_audio_init(), avoid referencing null
> pointers in the subsequent code.
>
> Signed-off-by: Charles Han <hanchunchao@inspur.com>
> ---
> drivers/gpu/drm/xlnx/zynqmp_dp_audio.c | 4 ++++
> 1 file changed, 4 insertions(+)
>
> diff --git a/drivers/gpu/drm/xlnx/zynqmp_dp_audio.c b/drivers/gpu/drm/xlnx/zynqmp_dp_audio.c
> index fa5f0ace6084..f07ff4eb3a6d 100644
> --- a/drivers/gpu/drm/xlnx/zynqmp_dp_audio.c
> +++ b/drivers/gpu/drm/xlnx/zynqmp_dp_audio.c
> @@ -323,12 +323,16 @@ int zynqmp_audio_init(struct zynqmp_dpsub *dpsub)
>
> audio->dai_name = devm_kasprintf(dev, GFP_KERNEL,
> "%s-dai", dev_name(dev));
> + if (!audio->dai_name)
> + return -ENOMEM;
>
> for (unsigned int i = 0; i < ZYNQMP_NUM_PCMS; ++i) {
> audio->link_names[i] = devm_kasprintf(dev, GFP_KERNEL,
> "%s-dp-%u", dev_name(dev), i);
> audio->pcm_names[i] = devm_kasprintf(dev, GFP_KERNEL,
> "%s-pcm-%u", dev_name(dev), i);
> + if (!audio->link_names[i] || !audio->pcm_names[i])
> + return -ENOMEM;
> }
>
> audio->base = devm_platform_ioremap_resource_byname(pdev, "aud");
Thanks, looks good to me. I'll apply with Laurent's RB, which he gave
for v1.
Tomi
Hi,
On 11/02/2025 15:08, Tomi Valkeinen wrote:
> Hi,
>
> On 11/02/2025 12:20, Charles Han wrote:
>> devm_kasprintf() calls can return null pointers on failure.
>> But some return values were not checked in zynqmp_audio_init().
>>
>> Add NULL check in zynqmp_audio_init(), avoid referencing null
>> pointers in the subsequent code.
>>
>> Signed-off-by: Charles Han <hanchunchao@inspur.com>
>> ---
>> drivers/gpu/drm/xlnx/zynqmp_dp_audio.c | 4 ++++
>> 1 file changed, 4 insertions(+)
>>
>> diff --git a/drivers/gpu/drm/xlnx/zynqmp_dp_audio.c b/drivers/gpu/drm/
>> xlnx/zynqmp_dp_audio.c
>> index fa5f0ace6084..f07ff4eb3a6d 100644
>> --- a/drivers/gpu/drm/xlnx/zynqmp_dp_audio.c
>> +++ b/drivers/gpu/drm/xlnx/zynqmp_dp_audio.c
>> @@ -323,12 +323,16 @@ int zynqmp_audio_init(struct zynqmp_dpsub *dpsub)
>> audio->dai_name = devm_kasprintf(dev, GFP_KERNEL,
>> "%s-dai", dev_name(dev));
>> + if (!audio->dai_name)
>> + return -ENOMEM;
>> for (unsigned int i = 0; i < ZYNQMP_NUM_PCMS; ++i) {
>> audio->link_names[i] = devm_kasprintf(dev, GFP_KERNEL,
>> "%s-dp-%u", dev_name(dev), i);
>> audio->pcm_names[i] = devm_kasprintf(dev, GFP_KERNEL,
>> "%s-pcm-%u", dev_name(dev), i);
>> + if (!audio->link_names[i] || !audio->pcm_names[i])
>> + return -ENOMEM;
>> }
>> audio->base = devm_platform_ioremap_resource_byname(pdev, "aud");
>
> Thanks, looks good to me. I'll apply with Laurent's RB, which he gave
> for v1.
Actually, looks like you dropped the Fixes tag that you had in the v1
and v2. I will add it back.
Tomi
© 2016 - 2025 Red Hat, Inc.