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 ?
[Index of Archives]
[Pulseaudio]
[Linux Audio Users]
[ALSA Devel]
[Fedora Desktop]
[Fedora SELinux]
[Big List of Linux Books]
[Yosemite News]
[KDE Users]