Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 092ce1cc authored by Soumya Managoli's avatar Soumya Managoli
Browse files

ASoC: Unmap lab buffer during listen session close



Ensure lab buffer de-alloc even if listen session
is not in start state to avoid memory leak
when multiple listen clients are created.

Change-Id: Id6d8b37a3dcdf49618ae2a4d80903d429393cd8e
Signed-off-by: default avatarSoumya Managoli <quic_c_smanag@quicinc.com>
parent 7743f757
Loading
Loading
Loading
Loading
+10 −8
Original line number Diff line number Diff line
// SPDX-License-Identifier: GPL-2.0-only
/*
 * Copyright (c) 2013-2020, The Linux Foundation. All rights reserved.
 * Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
 */
#include <linux/init.h>
#include <linux/err.h>
@@ -3092,14 +3093,6 @@ static int msm_lsm_close(struct snd_pcm_substream *substream)
						__func__, ret);
				prtd->lsm_client->lab_started = false;
			}
			if (prtd->lsm_client->lab_buffer) {
				ret = msm_lsm_lab_buffer_alloc(prtd,
						LAB_BUFFER_DEALLOC);
				if (ret)
					dev_err(rtd->dev,
						"%s: lab buffer dealloc failed ret %d\n",
						__func__, ret);
			}
		}

		if (!atomic_read(&prtd->read_abort)) {
@@ -3120,6 +3113,15 @@ static int msm_lsm_close(struct snd_pcm_substream *substream)
		prtd->lsm_client->started = false;
	}

	if (prtd->lsm_client->lab_enable && prtd->lsm_client->lab_buffer) {
		ret = msm_lsm_lab_buffer_alloc(prtd,
				LAB_BUFFER_DEALLOC);
		if (ret)
			dev_err(rtd->dev,
				"%s: lab buffer dealloc failed ret %d\n",
				__func__, ret);
	}

	/*
	 * De-register existing sound models
	 * to free SM and CAL buffer, even if