| From be83a532e2a4362fa923a877521d8e84031416af Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Tue, 14 Feb 2023 15:42:31 -0800 |
| Subject: rpmsg: glink: Avoid infinite loop on intent for missing channel |
| |
| From: Bjorn Andersson <quic_bjorande@quicinc.com> |
| |
| [ Upstream commit 3e74ec2f39362bffbd42854acbb67c7f4cb808f9 ] |
| |
| 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> |
| Reviewed-by: Chris Lew <quic_clew@quicinc.com> |
| Signed-off-by: Bjorn Andersson <andersson@kernel.org> |
| Link: https://lore.kernel.org/r/20230214234231.2069751-1-quic_bjorande@quicinc.com |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| drivers/rpmsg/qcom_glink_native.c | 1 + |
| 1 file changed, 1 insertion(+) |
| |
| diff --git a/drivers/rpmsg/qcom_glink_native.c b/drivers/rpmsg/qcom_glink_native.c |
| index 4c90364638f9c..0fb185e0620aa 100644 |
| --- a/drivers/rpmsg/qcom_glink_native.c |
| +++ b/drivers/rpmsg/qcom_glink_native.c |
| @@ -928,6 +928,7 @@ 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"); |
| + qcom_glink_rx_advance(glink, ALIGN(msglen, 8)); |
| return; |
| } |
| |
| -- |
| 2.39.2 |
| |