mirror of
https://github.com/torvalds/linux.git
synced 2026-11-10 17:11:02 +01:00
ASoC: qcom: q6apm: clear g_apm on driver removal
The global g_apm pointer is set during apm_probe() but never cleared
in apm_remove(). After the driver is removed the devm-managed struct
q6apm is freed, leaving g_apm dangling. A subsequent call to
q6apm_is_adsp_ready() dereferences the freed pointer.
Clear g_apm in apm_remove() before the component is unregistered so
that q6apm_is_adsp_ready() returns false instead of triggering a
use-after-free.
Fixes: 5477518b8a ("ASoC: qdsp6: audioreach: add q6apm support")
Signed-off-by: Ajay Kumar Nandam <ajay.nandam@oss.qualcomm.com>
Link: https://patch.msgid.link/20260923-vmid-v4-v6-1-3d61a0319b1c@oss.qualcomm.com
Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
parent
cee9395acd
commit
be2172758f
|
|
@ -900,6 +900,7 @@ static int apm_probe(gpr_device_t *gdev)
|
|||
|
||||
static void apm_remove(gpr_device_t *gdev)
|
||||
{
|
||||
g_apm = NULL;
|
||||
of_platform_depopulate(&gdev->dev);
|
||||
snd_soc_unregister_component(&gdev->dev);
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user