* [bug report] ASoC: Intel: cht_bsw_rt5645: Set card.components string
@ 2024-07-19 23:53 Dan Carpenter
2024-07-22 14:06 ` Pierre-Louis Bossart
0 siblings, 1 reply; 3+ messages in thread
From: Dan Carpenter @ 2024-07-19 23:53 UTC (permalink / raw)
To: Hans de Goede; +Cc: alsa-devel
Hello Hans de Goede,
Commit f87b4402163b ("ASoC: Intel: cht_bsw_rt5645: Set
card.components string") from Nov 26, 2023 (linux-next), leads to the
following Smatch static checker warning:
sound/soc/intel/boards/cht_bsw_rt5645.c:587 snd_cht_mc_probe()
error: we previously assumed 'adev' could be null (see line 581)
sound/soc/intel/boards/cht_bsw_rt5645.c
570 /* set correct codec name */
571 for (i = 0; i < ARRAY_SIZE(cht_dailink); i++)
572 if (cht_dailink[i].codecs->name &&
573 !strcmp(cht_dailink[i].codecs->name,
574 "i2c-10EC5645:00")) {
575 dai_index = i;
576 break;
577 }
578
579 /* fixup codec name based on HID */
580 adev = acpi_dev_get_first_match_dev(mach->id, NULL, -1);
581 if (adev) {
^^^^
The old code assumes adev can be NULL
582 snprintf(cht_rt5645_codec_name, sizeof(cht_rt5645_codec_name),
583 "i2c-%s", acpi_dev_name(adev));
584 cht_dailink[dai_index].codecs->name = cht_rt5645_codec_name;
585 }
586 /* acpi_get_first_physical_node() returns a borrowed ref, no need to deref */
--> 587 codec_dev = acpi_get_first_physical_node(adev);
^^^^
Unchecked dereference
588 acpi_dev_put(adev);
589 if (!codec_dev)
590 return -EPROBE_DEFER;
591
592 snd_soc_card_chtrt5645.components = rt5645_components(codec_dev);
593 snd_soc_card_chtrt5650.components = rt5645_components(codec_dev);
594
regards,
dan carpenter
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [bug report] ASoC: Intel: cht_bsw_rt5645: Set card.components string
2024-07-19 23:53 [bug report] ASoC: Intel: cht_bsw_rt5645: Set card.components string Dan Carpenter
@ 2024-07-22 14:06 ` Pierre-Louis Bossart
2024-07-23 15:38 ` Dan Carpenter
0 siblings, 1 reply; 3+ messages in thread
From: Pierre-Louis Bossart @ 2024-07-22 14:06 UTC (permalink / raw)
To: Dan Carpenter, Hans de Goede
Cc: alsa-devel, linux-sound@vger.kernel.org, Mark Brown, Takashi Iwai
Thanks Dan for the report.
> Commit f87b4402163b ("ASoC: Intel: cht_bsw_rt5645: Set
> card.components string") from Nov 26, 2023 (linux-next), leads to the
> following Smatch static checker warning:
>
> sound/soc/intel/boards/cht_bsw_rt5645.c:587 snd_cht_mc_probe()
> error: we previously assumed 'adev' could be null (see line 581)
>
> sound/soc/intel/boards/cht_bsw_rt5645.c
> 570 /* set correct codec name */
> 571 for (i = 0; i < ARRAY_SIZE(cht_dailink); i++)
> 572 if (cht_dailink[i].codecs->name &&
> 573 !strcmp(cht_dailink[i].codecs->name,
> 574 "i2c-10EC5645:00")) {
> 575 dai_index = i;
> 576 break;
> 577 }
> 578
> 579 /* fixup codec name based on HID */
> 580 adev = acpi_dev_get_first_match_dev(mach->id, NULL, -1);
> 581 if (adev) {
> ^^^^
> The old code assumes adev can be NULL
>
> 582 snprintf(cht_rt5645_codec_name, sizeof(cht_rt5645_codec_name),
> 583 "i2c-%s", acpi_dev_name(adev));
> 584 cht_dailink[dai_index].codecs->name = cht_rt5645_codec_name;
> 585 }
> 586 /* acpi_get_first_physical_node() returns a borrowed ref, no need to deref */
> --> 587 codec_dev = acpi_get_first_physical_node(adev);
> ^^^^
> Unchecked dereference
This looks like a problem in multiple machine drivers sharing similar
code, if we want to consistently check the output we probably need
something like https://github.com/thesofproject/linux/pull/5117 ?
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [bug report] ASoC: Intel: cht_bsw_rt5645: Set card.components string
2024-07-22 14:06 ` Pierre-Louis Bossart
@ 2024-07-23 15:38 ` Dan Carpenter
0 siblings, 0 replies; 3+ messages in thread
From: Dan Carpenter @ 2024-07-23 15:38 UTC (permalink / raw)
To: Pierre-Louis Bossart
Cc: Hans de Goede, alsa-devel, linux-sound@vger.kernel.org,
Mark Brown, Takashi Iwai
On Mon, Jul 22, 2024 at 04:06:58PM +0200, Pierre-Louis Bossart wrote:
> Thanks Dan for the report.
>
>
> > Commit f87b4402163b ("ASoC: Intel: cht_bsw_rt5645: Set
> > card.components string") from Nov 26, 2023 (linux-next), leads to the
> > following Smatch static checker warning:
> >
> > sound/soc/intel/boards/cht_bsw_rt5645.c:587 snd_cht_mc_probe()
> > error: we previously assumed 'adev' could be null (see line 581)
> >
> > sound/soc/intel/boards/cht_bsw_rt5645.c
> > 570 /* set correct codec name */
> > 571 for (i = 0; i < ARRAY_SIZE(cht_dailink); i++)
> > 572 if (cht_dailink[i].codecs->name &&
> > 573 !strcmp(cht_dailink[i].codecs->name,
> > 574 "i2c-10EC5645:00")) {
> > 575 dai_index = i;
> > 576 break;
> > 577 }
> > 578
> > 579 /* fixup codec name based on HID */
> > 580 adev = acpi_dev_get_first_match_dev(mach->id, NULL, -1);
> > 581 if (adev) {
> > ^^^^
> > The old code assumes adev can be NULL
> >
> > 582 snprintf(cht_rt5645_codec_name, sizeof(cht_rt5645_codec_name),
> > 583 "i2c-%s", acpi_dev_name(adev));
> > 584 cht_dailink[dai_index].codecs->name = cht_rt5645_codec_name;
> > 585 }
> > 586 /* acpi_get_first_physical_node() returns a borrowed ref, no need to deref */
> > --> 587 codec_dev = acpi_get_first_physical_node(adev);
> > ^^^^
> > Unchecked dereference
>
> This looks like a problem in multiple machine drivers sharing similar
> code, if we want to consistently check the output we probably need
> something like https://github.com/thesofproject/linux/pull/5117 ?
>
These are actually Smatch warnings, not Sparse warnings btw. (Smatch
uses Sparse as a parser. Everyone gets them mixed up).
regards,
dan carpenter
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2024-07-31 8:46 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-07-19 23:53 [bug report] ASoC: Intel: cht_bsw_rt5645: Set card.components string Dan Carpenter
2024-07-22 14:06 ` Pierre-Louis Bossart
2024-07-23 15:38 ` Dan Carpenter
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox