Messages in this thread Patch in this message | | | Subject | Re: [PATCH] ASoC: Intel: bytcht_es8316: Add missed put_device() | From | Pierre-Louis Bossart <> | Date | Tue, 14 Jul 2020 10:32:59 -0500 |
| |
On 7/14/20 8:33 AM, Hans de Goede wrote: > Hi, > > On 7/14/20 10:09 AM, Jing Xiangfeng wrote: >> snd_byt_cht_es8316_mc_probe() misses to call put_device() in an error >> path. Add the missed function call to fix it. >> >> Fixes: ba49cf6f8e4a ("ASoC: Intel: bytcht_es8316: Add quirk for >> inverted jack detect") >> Signed-off-by: Jing Xiangfeng <jingxiangfeng@huawei.com> > > Patch looks good to me: > > Reviewed-by: Hans de Goede <hdegoede@redhat.com>
Actually the existing code looks quite odd to me:
if (cnt) { ret = device_add_properties(codec_dev, props); if (ret) return ret; }
devm_acpi_dev_add_driver_gpios(codec_dev, byt_cht_es8316_gpios); priv->speaker_en_gpio = gpiod_get_index(codec_dev, "speaker-enable", 0, /* see comment in byt_cht_es8316_resume */ GPIOD_OUT_LOW | GPIOD_FLAGS_BIT_NONEXCLUSIVE); put_device(codec_dev);
if the first branch is not taken the put_device() will not be balanced.
Shouldn't this be:
if (cnt) { ret = device_add_properties(codec_dev, props); put_device(codec_dev); if (ret) return ret; }
devm_acpi_dev_add_driver_gpios(codec_dev, byt_cht_es8316_gpios); priv->speaker_en_gpio = gpiod_get_index(codec_dev, "speaker-enable", 0, /* see comment in byt_cht_es8316_resume */ GPIOD_OUT_LOW | GPIOD_FLAGS_BIT_NONEXCLUSIVE); /* removed put_device(codec_dev); */
> > Regards, > > Hans > > >> --- >> sound/soc/intel/boards/bytcht_es8316.c | 4 +++- >> 1 file changed, 3 insertions(+), 1 deletion(-) >> >> diff --git a/sound/soc/intel/boards/bytcht_es8316.c >> b/sound/soc/intel/boards/bytcht_es8316.c >> index 9e5fc9430628..ecbc58e8a37f 100644 >> --- a/sound/soc/intel/boards/bytcht_es8316.c >> +++ b/sound/soc/intel/boards/bytcht_es8316.c >> @@ -543,8 +543,10 @@ static int snd_byt_cht_es8316_mc_probe(struct >> platform_device *pdev) >> if (cnt) { >> ret = device_add_properties(codec_dev, props); >> - if (ret) >> + if (ret) { >> + put_device(codec_dev); >> return ret; >> + } >> } >> devm_acpi_dev_add_driver_gpios(codec_dev, byt_cht_es8316_gpios); >> >
| |