On Mon, Jul 24, 2023 at 11:08:17AM +0200, Pierre-Louis Bossart wrote: > On 7/20/23 11:26, Brent Lu wrote: ... > > +/* helper function to get the number of specific codec */ ...and leak a lot of reference counts... > > +static int get_num_codecs(const char *hid) > > +{ > > + struct acpi_device *adev = NULL; > > + int dev_num = 0; > > + > > + do { > > + adev = acpi_dev_get_next_match_dev(adev, hid, NULL, -1); > > Humm, I am a bit worried about reference counts. > > See > https://elixir.bootlin.com/linux/latest/source/drivers/acpi/utils.c#L916, > it's not clear to me where the get() is done. > > Adding Andy to make sure this is done right. Thank you for Cc'ing. Yes, the above code is problematic. One has to use the respective for_each macro (defined nearby the used API). > > + if (adev) > > + dev_num++; > > + } while (adev != NULL); > > + > > + return dev_num; > > +} -- With Best Regards, Andy Shevchenko