2023-02-14 23:43:11

by Bjorn Andersson

[permalink] [raw]
Subject: [PATCH v2] rpmsg: glink: Avoid infinite loop on intent for missing channel

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 <[email protected]>
---

Changes since v1:
- Don't drop packet if the following memory allocation fails.

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 89c3381f06c3..b6c60bf86009 100644
--- a/drivers/rpmsg/qcom_glink_native.c
+++ b/drivers/rpmsg/qcom_glink_native.c
@@ -966,6 +966,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.25.1



2023-02-15 00:03:54

by Chris Lew

[permalink] [raw]
Subject: Re: [PATCH v2] rpmsg: glink: Avoid infinite loop on intent for missing channel



On 2/14/2023 3:42 PM, Bjorn Andersson wrote:
> 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 <[email protected]>

Reviewed-by: Chris Lew <[email protected]>

> ---
>
> Changes since v1:
> - Don't drop packet if the following memory allocation fails.
>
> 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 89c3381f06c3..b6c60bf86009 100644
> --- a/drivers/rpmsg/qcom_glink_native.c
> +++ b/drivers/rpmsg/qcom_glink_native.c
> @@ -966,6 +966,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;
> }
>
>

2023-02-15 04:28:17

by Bjorn Andersson

[permalink] [raw]
Subject: Re: [PATCH v2] rpmsg: glink: Avoid infinite loop on intent for missing channel

On Tue, 14 Feb 2023 15:42:31 -0800, Bjorn Andersson wrote:
> 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.
>
>

Applied, thanks!

[1/1] rpmsg: glink: Avoid infinite loop on intent for missing channel
commit: 3e74ec2f39362bffbd42854acbb67c7f4cb808f9

Best regards,
--
Bjorn Andersson <[email protected]>