diff options
| author | 2021-04-20 10:13:58 +0200 | |
|---|---|---|
| committer | 2021-04-20 10:13:58 +0200 | |
| commit | d0d252b8ca7a636640a7dca8606edf7c3bcfe0b8 (patch) | |
| tree | 992b53f3c91669f3597e05997b61fa09db2155df /include/linux/skmsg.h | |
| parent | sched/debug: Rename the sched_debug parameter to sched_verbose (diff) | |
| parent | Linux 5.12-rc8 (diff) | |
Merge tag 'v5.12-rc8' into sched/core, to pick up fixes
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Diffstat (limited to 'include/linux/skmsg.h')
| -rw-r--r-- | include/linux/skmsg.h | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/include/linux/skmsg.h b/include/linux/skmsg.h index 8edbbf5f2f93..822c048934e3 100644 --- a/include/linux/skmsg.h +++ b/include/linux/skmsg.h @@ -349,8 +349,13 @@ static inline void sk_psock_update_proto(struct sock *sk, static inline void sk_psock_restore_proto(struct sock *sk, struct sk_psock *psock) { - sk->sk_prot->unhash = psock->saved_unhash; if (inet_csk_has_ulp(sk)) { + /* TLS does not have an unhash proto in SW cases, but we need + * to ensure we stop using the sock_map unhash routine because + * the associated psock is being removed. So use the original + * unhash handler. + */ + WRITE_ONCE(sk->sk_prot->unhash, psock->saved_unhash); tcp_update_ulp(sk, psock->sk_proto, psock->saved_write_space); } else { sk->sk_write_space = psock->saved_write_space; |
