diff options
author | Alex Iacobucci <alexiacobucci@google.com> | 2023-03-27 17:27:24 +0000 |
---|---|---|
committer | Alex Iacobucci <alexiacobucci@google.com> | 2023-03-27 17:30:16 +0000 |
commit | 8a3debf4821de5d0a8933ee228ff3e85c44498ba (patch) | |
tree | bcd7f1b7bd87ca375c79beb9f526eec258695b3c | |
parent | 6d567f2d699bf25b2b224500ea8b9ed72fc4d4b8 (diff) | |
download | aoc-8a3debf4821de5d0a8933ee228ff3e85c44498ba.tar.gz |
aoc/alsa: modify free_aoc_audio_service flow
In mmap playback with SSR case, aoc dev be freed first then
snd_aoc_pcm_close will hit null pointer access
bug: 272960822
Change-Id: I238b7e0c9b755781b6f23907dd52e4ed3b8d6e76
Signed-off-by: yixuanjiang <yixuanjiang@google.com>
-rw-r--r-- | alsa/aoc_alsa_drv.c | 3 | ||||
-rw-r--r-- | alsa/aoc_alsa_incall.c | 1 | ||||
-rw-r--r-- | alsa/aoc_alsa_pcm.c | 1 | ||||
-rw-r--r-- | alsa/aoc_alsa_voip.c | 1 |
4 files changed, 3 insertions, 3 deletions
diff --git a/alsa/aoc_alsa_drv.c b/alsa/aoc_alsa_drv.c index 7e3f4d7..1d31f97 100644 --- a/alsa/aoc_alsa_drv.c +++ b/alsa/aoc_alsa_drv.c @@ -192,6 +192,9 @@ int free_aoc_audio_service(const char *name, struct aoc_service_dev *dev) goto done; } + if (service_lists[i].dev) + service_lists[i].dev->prvdata = NULL; + service_lists[i].ref--; service_lists[i].event_callback = NULL; service_lists[i].prvdata = NULL; diff --git a/alsa/aoc_alsa_incall.c b/alsa/aoc_alsa_incall.c index 2dedcd2..6379de0 100644 --- a/alsa/aoc_alsa_incall.c +++ b/alsa/aoc_alsa_incall.c @@ -248,7 +248,6 @@ static int snd_aoc_pcm_close(struct snd_soc_component *component, return -EINTR; } - alsa_stream->dev->prvdata = NULL; runtime = substream->runtime; alsa_stream = runtime->private_data; diff --git a/alsa/aoc_alsa_pcm.c b/alsa/aoc_alsa_pcm.c index a725d72..1ebcef3 100644 --- a/alsa/aoc_alsa_pcm.c +++ b/alsa/aoc_alsa_pcm.c @@ -387,7 +387,6 @@ static int snd_aoc_pcm_close(struct snd_soc_component *component, return -EINTR; } - alsa_stream->dev->prvdata = NULL; runtime = substream->runtime; alsa_stream = runtime->private_data; diff --git a/alsa/aoc_alsa_voip.c b/alsa/aoc_alsa_voip.c index b8b9ab8..b620945 100644 --- a/alsa/aoc_alsa_voip.c +++ b/alsa/aoc_alsa_voip.c @@ -253,7 +253,6 @@ static int snd_aoc_pcm_close(struct snd_soc_component *component, if (err < 0) pr_err("ERR: fail in voip call tearing down\n"); - alsa_stream->dev->prvdata = NULL; runtime = substream->runtime; alsa_stream = runtime->private_data; |