linux/sound/soc
Ma Ke 49f3a867d9 ASoC: wcd934x: fix error handling in wcd934x_codec_parse_data()
[ Upstream commit 4e65bda827 ]

wcd934x_codec_parse_data() contains a device reference count leak in
of_slim_get_device() where device_find_child() increases the reference
count of the device but this reference is not properly decreased in
the success path. Add put_device() in wcd934x_codec_parse_data() and
add devm_add_action_or_reset() in the probe function, which ensures
that the reference count of the device is correctly managed.

Memory leak in regmap_init_slimbus() as the allocated regmap is not
released when the device is removed. Using devm_regmap_init_slimbus()
instead of regmap_init_slimbus() to ensure automatic regmap cleanup on
device removal.

Calling path: of_slim_get_device() -> of_find_slim_device() ->
device_find_child(). As comment of device_find_child() says, 'NOTE:
you will need to drop the reference with put_device() after use.'.

Found by code review.

Cc: stable@vger.kernel.org
Fixes: a61f3b4f47 ("ASoC: wcd934x: add support to wcd9340/wcd9341 codec")
Signed-off-by: Ma Ke <make24@iscas.ac.cn>
Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
Link: https://patch.msgid.link/20250923065212.26660-1-make24@iscas.ac.cn
Signed-off-by: Mark Brown <broonie@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
History 2025-10-19 16:21:50 +02:00
..
adi ASoC: axi-i2s: Use devm_platform_get_and_ioremap_resource() 2021-06-14 15:01:03 +01:00
amd ASoC: amd: vg: fix for pm resume callback sequence 2022-04-08 14:24:02 +02:00
atmel Revert "ASoC: atmel: Remove system clock tree configuration for at91sam9g20ek" 2024-01-25 14:52:31 -08:00
au1x ASoC: allow module autoloading for table db1200_pids 2024-10-17 15:10:38 +02:00
bcm ASoC: Updates for v5.15 2021-08-30 14:57:03 +02:00
cirrus ASoC: cirrus: sync parameter naming (rate/sample_bits) 2021-01-21 12:37:48 +00:00
codecs ASoC: wcd934x: fix error handling in wcd934x_codec_parse_data() 2025-10-19 16:21:50 +02:00
dwc ASoC: dwc: move DMA init to snd_soc_dai_driver probe() 2023-06-21 15:59:13 +02:00
fsl ASoC: fsl_sai: replace regmap_write with regmap_update_bits 2025-08-28 16:24:26 +02:00
generic ASoC: soc-dai.h: merge DAI call back functions into ops 2025-08-28 16:24:26 +02:00
hisilicon ASoC: hisilicon: Use devm_platform_get_and_ioremap_resource() 2021-06-15 16:39:49 +01:00
img ASoC: img-spdif-out: Use devm_platform_get_and_ioremap_resource() 2021-06-15 16:39:47 +01:00
intel ASoC: Intel: bytcr_rt5651: Fix invalid quirk input mapping 2025-10-19 16:21:34 +02:00
jz4740 ASoC: jz4740-i2s: Handle independent FIFO flush bits 2023-01-12 11:58:57 +01:00
kirkwood ASoC: kirkwood: Fix potential NULL dereference 2024-06-16 13:39:27 +02:00
mediatek ASoC: mediatek: disable buffer pre-allocation 2025-01-23 17:15:49 +01:00
meson ASoC: meson: meson-card-utils: use of_property_present() for DT parsing 2025-06-27 11:05:23 +01:00
mxs ASoC: mxs-saif: Fix refcount leak in mxs_saif_probe 2022-06-09 10:22:56 +02:00
pxa ARM: pxa: spitz: use gpio descriptors for audio 2024-08-19 05:44:54 +02:00
qcom ASoC: qcom: sdm845: Add error handling in sdm845_slim_snd_hw_params() 2025-06-27 11:05:23 +01:00
rockchip ASoC: rockchip: spdif: Add missing clk_disable_unprepare() in rk_spdif_runtime_resume() 2022-12-31 13:14:45 +01:00
samsung ASoC: samsung: Add missing depends on I2C 2025-02-01 18:24:00 +01:00
sh ASoC: rsnd: don't indicate warning on rsnd_kctrl_accept_runtime() 2025-04-10 14:31:50 +02:00
sof ASoC: SOF: Intel: hda-stream: Fix incorrect variable used in error message 2025-10-02 13:39:08 +02:00
spear ASoC: spear: spdif_out: Use devm_platform_get_and_ioremap_resource() 2021-06-17 13:47:06 +01:00
sprd ASoC: sprd: Use managed buffer allocation 2021-08-04 08:10:27 +02:00
sti ASoC: sti: Fix deadlock via snd_pcm_stop_xrun() call 2022-03-28 09:58:43 +02:00
stm ASoC: stm: Prevent potential division by zero in stm32_sai_get_clk_div() 2024-12-14 19:50:41 +01:00
sunxi ASoC: sun4i-spdif: Add clock multiplier settings 2025-03-13 12:50:00 +01:00
tegra ASoC: tegra210_ahub: Add check to of_device_get_match_data() 2025-06-27 11:05:28 +01:00
ti ASoC: ti: j721e-evm: Fix clock configuration for ti,j7200-cpb-audio compatible 2025-04-10 14:31:58 +02:00
uniphier ASoC: uniphier: drop selecting non-existing SND_SOC_UNIPHIER_AIO_DMA 2022-01-27 11:04:06 +01:00
ux500 ASoC: ux500: mop500: align function prototype 2021-03-31 18:03:28 +01:00
xilinx ASoC: xilinx: xlnx_formatter_pcm: Handle sysclk setting 2022-04-08 14:23:13 +02:00
xtensa ASoC: xtensa: use asoc_substream_to_rtd() 2020-07-23 19:07:42 +01:00
Kconfig ASoC: topology: Select SND_DYNAMIC_MINORS 2021-07-27 13:13:04 +01:00
Makefile ASoC: topology: adhere to KUNIT formatting standard 2021-04-14 15:26:24 +01:00
soc-ac97.c ASoC: soc-ac97: cleanup cppcheck warning 2021-08-16 13:29:36 +01:00
soc-acpi.c ASoC: soc-acpi: remove useless initialization 2021-04-19 14:03:29 +01:00
soc-card.c ASoC: soc-card: add snd_soc_card_remove_dai_link() 2020-05-30 02:11:42 +01:00
soc-component.c ASoC: soc-component: cleanup cppcheck warning at snd_soc_pcm_component_pm_runtime_get() 2021-08-16 13:29:35 +01:00
soc-compress.c ASoC: soc-compress: Inherit atomicity from DAI link for Compress FE 2023-05-17 11:50:26 +02:00
soc-core.c ASoC: soc-dai.h: merge DAI call back functions into ops 2025-08-28 16:24:26 +02:00
soc-dai.c ASoC: soc-dai.h: merge DAI call back functions into ops 2025-08-28 16:24:26 +02:00
soc-dapm.c ASoC: soc-dapm: set bias_level if snd_soc_dapm_set_bias_level() was successed 2025-08-28 16:24:18 +02:00
soc-devres.c ASoC: core: Remove only the registered component in devm functions 2020-07-07 11:55:46 +01:00
soc-generic-dmaengine-pcm.c ALSA: dmaengine: Synchronize dma channel after drop() 2024-07-27 10:46:11 +02:00
soc-jack.c ASoC: soc-jack: cleanup cppcheck warning for CONFIG_GPIOLIB 2021-08-16 13:29:34 +01:00
soc-link.c ASoC: soc-pcm: care trigger rollback 2020-12-09 12:13:38 +00:00
soc-ops.c ASoC: ops: dynamically allocate struct snd_ctl_elem_value 2025-08-28 16:24:06 +02:00
soc-pcm.c ASoC: soc-pcm: test if a BE can be prepared 2023-06-21 15:59:13 +02:00
soc-topology-test.c ASoC: topology: KUnit: Convert from cpu to data format 2021-02-02 17:08:21 +00:00
soc-topology.c ASoC: topology: Properly initialize soc_enum values 2024-09-12 11:07:47 +02:00
soc-utils.c ASoC: soc-utils: Export snd_soc_dai_is_dummy() symbol 2023-10-10 21:59:04 +02:00