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

Commit d738dd6d authored by Dhoat Harpal's avatar Dhoat Harpal
Browse files

soc: qcom: glink_pkt: Add mutex in glink_pkt_read



Glink_pkt_read calls glink_queue_rx_intent without mutex lock.
This result in race condition where glink_queue_rx_intent generates
same intent id for two intents.

Mutex lock is added to avoid race condition in glink_queue_rx_intent.

CRs-Fixed: 2026579
Change-Id: Iedb9a8874193479154ebb932fa8ff80703402215
Signed-off-by: default avatarDhoat Harpal <hdhoat@codeaurora.org>
parent e8800dc9
Loading
Loading
Loading
Loading
+4 −1
Original line number Diff line number Diff line
/* Copyright (c) 2014-2016, The Linux Foundation. All rights reserved.
/* Copyright (c) 2014-2017, The Linux Foundation. All rights reserved.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License version 2 and
@@ -617,14 +617,17 @@ ssize_t glink_pkt_read(struct file *file,
		return -ENETRESET;
	}

	mutex_lock(&devp->ch_lock);
	if (!glink_rx_intent_exists(devp->handle, count)) {
		ret  = glink_queue_rx_intent(devp->handle, devp, count);
		if (ret) {
			GLINK_PKT_ERR("%s: failed to queue_rx_intent ret[%d]\n",
					__func__, ret);
			mutex_unlock(&devp->ch_lock);
			return ret;
		}
	}
	mutex_unlock(&devp->ch_lock);

	GLINK_PKT_INFO("Begin %s on glink_pkt_dev id:%d buffer_size %zu\n",
		__func__, devp->i, count);