diff mbox series

[V3] drm: xlnx: zynqmp_dpsub: Add NULL check in zynqmp_audio_init

Message ID 20250211102049.6468-1-hanchunchao@inspur.com (mailing list archive)
State New, archived
Headers show
Series [V3] drm: xlnx: zynqmp_dpsub: Add NULL check in zynqmp_audio_init | expand

Commit Message

Charles Han Feb. 11, 2025, 10:20 a.m. UTC
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(+)

Comments

Markus Elfring Feb. 11, 2025, 10:42 a.m. UTC | #1
> ---
>  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
Tomi Valkeinen Feb. 11, 2025, 1:08 p.m. UTC | #2
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
Tomi Valkeinen Feb. 11, 2025, 1:20 p.m. UTC | #3
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
diff mbox series

Patch

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");