From 4c2f148ebb8e1576398402b12c4ad1432eceebb0 Mon Sep 17 00:00:00 2001 From: Greg Kroah-Hartman Date: Tue, 3 Dec 2024 13:35:20 +0100 Subject: [PATCH] 4.19-stable patches added patches: rpmsg-glink-propagate-tx-failures-in-intentless-mode-as-well.patch --- ...-failures-in-intentless-mode-as-well.patch | 56 +++++++++++++++++++ queue-4.19/series | 1 + 2 files changed, 57 insertions(+) create mode 100644 queue-4.19/rpmsg-glink-propagate-tx-failures-in-intentless-mode-as-well.patch diff --git a/queue-4.19/rpmsg-glink-propagate-tx-failures-in-intentless-mode-as-well.patch b/queue-4.19/rpmsg-glink-propagate-tx-failures-in-intentless-mode-as-well.patch new file mode 100644 index 00000000000..f4e37bafadd --- /dev/null +++ b/queue-4.19/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-4.19/series b/queue-4.19/series index ec7946f1b8b..ed2880af9d0 100644 --- a/queue-4.19/series +++ b/queue-4.19/series @@ -123,3 +123,4 @@ media-wl128x-fix-atomicity-violation-in-fmc_send_cmd.patch usb-dwc3-gadget-fix-checking-for-number-of-trbs-left.patch lib-string_helpers-silence-snprintf-output-truncation-warning.patch nfsd-prevent-a-potential-integer-overflow.patch +rpmsg-glink-propagate-tx-failures-in-intentless-mode-as-well.patch -- 2.47.3