24 Jul
2023
24 Jul
'23
11:52 a.m.
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