lkml.org 
[lkml]   [2023]   [Jan]   [9]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
From
Subject[PATCH] rpmsg: glink: Avoid infinite loop on intent for missing channel
Date
In the event that an intent advertisement arrives on an unknown channel
the fifo is not advanced, resulting in the same message being handled
over and over.

Fixes: dacbb35e930f ("rpmsg: glink: Receive and store the remote intent buffers")
Signed-off-by: Bjorn Andersson <quic_bjorande@quicinc.com>
---
drivers/rpmsg/qcom_glink_native.c | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/drivers/rpmsg/qcom_glink_native.c b/drivers/rpmsg/qcom_glink_native.c
index f36740cb6866..7b1320b1579e 100644
--- a/drivers/rpmsg/qcom_glink_native.c
+++ b/drivers/rpmsg/qcom_glink_native.c
@@ -946,12 +946,12 @@ static void qcom_glink_handle_intent(struct qcom_glink *glink,
spin_unlock_irqrestore(&glink->idr_lock, flags);
if (!channel) {
dev_err(glink->dev, "intents for non-existing channel\n");
- return;
+ goto advance_rx;
}

msg = kmalloc(msglen, GFP_ATOMIC);
if (!msg)
- return;
+ goto advance_rx;

qcom_glink_rx_peak(glink, msg, 0, msglen);

@@ -973,6 +973,7 @@ static void qcom_glink_handle_intent(struct qcom_glink *glink,
}

kfree(msg);
+advance_rx:
qcom_glink_rx_advance(glink, ALIGN(msglen, 8));
}

--
2.37.3
\
 
 \ /
  Last update: 2023-03-26 23:34    [W:0.451 / U:0.088 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site