From: Greg Kroah-Hartman Date: Tue, 3 Dec 2024 12:35:47 +0000 (+0100) Subject: 5.15-stable patches X-Git-Tag: v4.19.325~16 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=4f7248213e41a60b70d6984ec617497f468d511c;p=thirdparty%2Fkernel%2Fstable-queue.git 5.15-stable patches added patches: rpmsg-glink-propagate-tx-failures-in-intentless-mode-as-well.patch --- diff --git a/queue-5.15/rpmsg-glink-propagate-tx-failures-in-intentless-mode-as-well.patch b/queue-5.15/rpmsg-glink-propagate-tx-failures-in-intentless-mode-as-well.patch new file mode 100644 index 00000000000..f4e37bafadd --- /dev/null +++ b/queue-5.15/rpmsg-glink-propagate-tx-failures-in-intentless-mode-as-well.patch @@ -0,0 +1,56 @@ +From 7a68f9fa97357a0f2073c9c31ed4101da4fce93e Mon Sep 17 00:00:00 2001 +From: Bjorn Andersson +Date: Tue, 18 Apr 2023 09:30:17 -0700 +Subject: rpmsg: glink: Propagate TX failures in intentless mode as well + +From: Bjorn Andersson + +commit 7a68f9fa97357a0f2073c9c31ed4101da4fce93e upstream. + +As support for splitting transmission over several messages using +TX_DATA_CONT was introduced it does not immediately return the return +value of qcom_glink_tx(). + +The result is that in the intentless case (i.e. intent == NULL), the +code will continue to send all additional chunks. This is wasteful, and +it's possible that the send operation could incorrectly indicate +success, if the last chunk fits in the TX fifo. + +Fix the condition. + +Fixes: 8956927faed3 ("rpmsg: glink: Add TX_DATA_CONT command while sending") +Reviewed-by: Chris Lew +Signed-off-by: Bjorn Andersson +Signed-off-by: Bjorn Andersson +Link: https://lore.kernel.org/r/20230418163018.785524-2-quic_bjorande@quicinc.com +Signed-off-by: Greg Kroah-Hartman +--- + drivers/rpmsg/qcom_glink_native.c | 10 ++++++---- + 1 file changed, 6 insertions(+), 4 deletions(-) + +--- a/drivers/rpmsg/qcom_glink_native.c ++++ b/drivers/rpmsg/qcom_glink_native.c +@@ -1355,8 +1355,9 @@ static int __qcom_glink_send(struct glin + ret = qcom_glink_tx(glink, &req, sizeof(req), data, chunk_size, wait); + + /* Mark intent available if we failed */ +- if (ret && intent) { +- intent->in_use = false; ++ if (ret) { ++ if (intent) ++ intent->in_use = false; + return ret; + } + +@@ -1377,8 +1378,9 @@ static int __qcom_glink_send(struct glin + chunk_size, wait); + + /* Mark intent available if we failed */ +- if (ret && intent) { +- intent->in_use = false; ++ if (ret) { ++ if (intent) ++ intent->in_use = false; + break; + } + } diff --git a/queue-5.15/series b/queue-5.15/series index 46f4e72e20a..c76b16c6e95 100644 --- a/queue-5.15/series +++ b/queue-5.15/series @@ -339,3 +339,4 @@ usb-dwc3-gadget-fix-looping-of-queued-sg-entries.patch lib-string_helpers-silence-snprintf-output-truncation-warning.patch nfsd-prevent-a-potential-integer-overflow.patch sunrpc-make-sure-cache-entry-active-before-cache_show.patch +rpmsg-glink-propagate-tx-failures-in-intentless-mode-as-well.patch