On Fri, Apr 25, 2025 at 01:59:57PM +0800, Jiayuan Chen wrote: > net/tls/tls_sw.c | 7 +++++++ > 1 file changed, 7 insertions(+) > > diff --git a/net/tls/tls_sw.c b/net/tls/tls_sw.c > index f3d7d19482da..fc88e34b7f33 100644 > --- a/net/tls/tls_sw.c > +++ b/net/tls/tls_sw.c > @@ -908,6 +908,13 @@ static int bpf_exec_tx_verdict(struct sk_msg *msg, > struct sock *sk, > &msg_redir, send, flags); > lock_sock(sk); > if (err < 0) { > + /* Regardless of whether the data represented by > + * msg_redir is sent successfully, we have already > + * uncharged it via sk_msg_return_zero(). The > + * msg->sg.size represents the remaining unprocessed > + * data, which needs to be uncharged here. > + */ > + sk_mem_uncharge(sk, msg->sg.size); > *copied -= sk_msg_free_nocharge(sk, &msg_redir);
Equivalent to sk_msg_free() ? Thanks.