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: Dhoat Harpal <hdhoat@codeaurora.org>
This commit is contained in:
parent
22fe1e7de0
commit
ced05f44be
1 changed files with 3 additions and 0 deletions
|
@ -625,14 +625,17 @@ ssize_t glink_pkt_read(struct file *file,
|
||||||
return -ENETRESET;
|
return -ENETRESET;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
mutex_lock(&devp->ch_lock);
|
||||||
if (!glink_rx_intent_exists(devp->handle, count)) {
|
if (!glink_rx_intent_exists(devp->handle, count)) {
|
||||||
ret = glink_queue_rx_intent(devp->handle, devp, count);
|
ret = glink_queue_rx_intent(devp->handle, devp, count);
|
||||||
if (ret) {
|
if (ret) {
|
||||||
GLINK_PKT_ERR("%s: failed to queue_rx_intent ret[%d]\n",
|
GLINK_PKT_ERR("%s: failed to queue_rx_intent ret[%d]\n",
|
||||||
__func__, ret);
|
__func__, ret);
|
||||||
|
mutex_unlock(&devp->ch_lock);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
mutex_unlock(&devp->ch_lock);
|
||||||
|
|
||||||
GLINK_PKT_INFO("Begin %s on glink_pkt_dev id:%d buffer_size %zu\n",
|
GLINK_PKT_INFO("Begin %s on glink_pkt_dev id:%d buffer_size %zu\n",
|
||||||
__func__, devp->i, count);
|
__func__, devp->i, count);
|
||||||
|
|
Loading…
Add table
Reference in a new issue