Zero-copy mode was left enabled even when zerocopy_from_iter() failed.
Set the zero-copy mode only when zerocopy_from_iter() succeeds.

Signed-off-by: Vakul Garg <vakul.g...@nxp.com>
---
 net/tls/tls_sw.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/net/tls/tls_sw.c b/net/tls/tls_sw.c
index 7453f5ae0819..d31dc2487488 100644
--- a/net/tls/tls_sw.c
+++ b/net/tls/tls_sw.c
@@ -800,7 +800,6 @@ int tls_sw_recvmsg(struct sock *sk,
                                struct scatterlist sgin[MAX_SKB_FRAGS + 1];
                                int pages = 0;
 
-                               zc = true;
                                sg_init_table(sgin, MAX_SKB_FRAGS + 1);
                                sg_set_buf(&sgin[0], ctx->rx_aad_plaintext,
                                           TLS_AAD_SPACE_SIZE);
@@ -811,6 +810,8 @@ int tls_sw_recvmsg(struct sock *sk,
                                                         MAX_SKB_FRAGS, false);
                                if (err < 0)
                                        goto fallback_to_reg_recv;
+                               else
+                                       zc = true;
 
                                err = decrypt_skb(sk, skb, sgin);
                                for (; pages > 0; pages--)
-- 
2.13.6

Reply via email to