diff options
author | Jakub Kicinski <jakub.kicinski@netronome.com> | 2020-01-10 04:38:32 -0800 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2020-01-10 11:20:46 -0800 |
commit | db885e66d268884dc72967279b7e84f522556abc (patch) | |
tree | f35e8641beeca511e3340a7b604c1532c172a3a1 /net/tls | |
parent | 5c5d22a750d4bcf35e9539dccec397b0edcce176 (diff) | |
download | linux-stable-db885e66d268884dc72967279b7e84f522556abc.tar.gz linux-stable-db885e66d268884dc72967279b7e84f522556abc.tar.bz2 linux-stable-db885e66d268884dc72967279b7e84f522556abc.zip |
net/tls: fix async operation
Mallesham reports the TLS with async accelerator was broken by
commit d10523d0b3d7 ("net/tls: free the record on encryption error")
because encryption can return -EINPROGRESS in such setups, which
should not be treated as an error.
The error is also present in the BPF path (likely copied from there).
Reported-by: Mallesham Jatharakonda <mallesham.jatharakonda@oneconvergence.com>
Fixes: d3b18ad31f93 ("tls: add bpf support to sk_msg handling")
Fixes: d10523d0b3d7 ("net/tls: free the record on encryption error")
Signed-off-by: Jakub Kicinski <jakub.kicinski@netronome.com>
Reviewed-by: Simon Horman <simon.horman@netronome.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/tls')
-rw-r--r-- | net/tls/tls_sw.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/net/tls/tls_sw.c b/net/tls/tls_sw.c index 1bf886269ede..5c7c00429f8e 100644 --- a/net/tls/tls_sw.c +++ b/net/tls/tls_sw.c @@ -770,7 +770,7 @@ static int bpf_exec_tx_verdict(struct sk_msg *msg, struct sock *sk, psock = sk_psock_get(sk); if (!psock || !policy) { err = tls_push_record(sk, flags, record_type); - if (err) { + if (err && err != -EINPROGRESS) { *copied -= sk_msg_free(sk, msg); tls_free_open_rec(sk); } @@ -799,7 +799,7 @@ more_data: switch (psock->eval) { case __SK_PASS: err = tls_push_record(sk, flags, record_type); - if (err < 0) { + if (err && err != -EINPROGRESS) { *copied -= sk_msg_free(sk, msg); tls_free_open_rec(sk); goto out_err; |