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

Commit b840d357 authored by Vidyakumar Athota's avatar Vidyakumar Athota Committed by Banajit Goswami
Browse files

soc: qcom: fix to avoid multiple memory allocations



There is a chance that glink channel memory can be allocated multiple
times if wdsp_glink_ch_info_init() is called from multiple threads.
Avoid this scenario by protecting the private data structure.

Change-Id: I04fc19232b0f128b36a00dc1e73a3bed03664a93
Signed-off-by: default avatarVidyakumar Athota <vathota@codeaurora.org>
parent 76889294
Loading
Loading
Loading
Loading
+8 −0
Original line number Original line Diff line number Diff line
@@ -531,6 +531,13 @@ static int wdsp_glink_ch_info_init(struct wdsp_glink_priv *wpriv,
	u8 *payload;
	u8 *payload;
	u32 ch_size, ch_cfg_size;
	u32 ch_size, ch_cfg_size;


	mutex_lock(&wpriv->glink_mutex);
	if (wpriv->ch) {
		dev_err(wpriv->dev, "%s: glink ch memory is already allocated\n",
			 __func__);
		ret = -EINVAL;
		goto done;
	}
	payload = (u8 *)pkt->payload;
	payload = (u8 *)pkt->payload;
	no_of_channels = pkt->no_of_channels;
	no_of_channels = pkt->no_of_channels;


@@ -611,6 +618,7 @@ static int wdsp_glink_ch_info_init(struct wdsp_glink_priv *wpriv,
	wpriv->no_of_channels = 0;
	wpriv->no_of_channels = 0;


done:
done:
	mutex_unlock(&wpriv->glink_mutex);
	return ret;
	return ret;
}
}