On 03/01/23 02:00, Andy Shevchenko wrote: > Theoretically the device might gone if its reference count drops to 0. > This might be the case when we try to find the first physical node of > the ACPI device. We need to keep reference to it until we get a result > of the above mentioned call. Refactor the code to drop the reference > count at the correct place. > > While at it, move to acpi_dev_put() as symmetrical call to the > acpi_dev_get_first_match_dev(). > > Fixes: 02527c3f2300 ("ASoC: amd: add Machine driver for Jadeite platform") > Signed-off-by: Andy Shevchenko <andriy.shevchenko@xxxxxxxxxxxxxxx> Acked-by: Vijendar Mukunda <Vijendar.Mukunda@xxxxxxx> > --- > sound/soc/amd/acp-es8336.c | 6 ++++-- > 1 file changed, 4 insertions(+), 2 deletions(-) > > diff --git a/sound/soc/amd/acp-es8336.c b/sound/soc/amd/acp-es8336.c > index 2fe8df86053a..89499542c803 100644 > --- a/sound/soc/amd/acp-es8336.c > +++ b/sound/soc/amd/acp-es8336.c > @@ -198,9 +198,11 @@ static int st_es8336_late_probe(struct snd_soc_card *card) > int ret; > > adev = acpi_dev_get_first_match_dev("ESSX8336", NULL, -1); > - if (adev) > - put_device(&adev->dev); > + if (!adev) > + return -ENODEV; > + > codec_dev = acpi_get_first_physical_node(adev); > + acpi_dev_put(adev); > if (!codec_dev) > dev_err(card->dev, "can not find codec dev\n"); >