]> git.proxmox.com Git - mirror_ubuntu-jammy-kernel.git/blobdiff - net/ipv4/tcp_bpf.c
bpf, sockmap: Fix more uncharged while msg has more_data
[mirror_ubuntu-jammy-kernel.git] / net / ipv4 / tcp_bpf.c
index 9b9b02052fd362ad067fc0887a2889e449962684..304800c6042738dbde2b55d605271830171ebde3 100644 (file)
@@ -335,7 +335,7 @@ more_data:
                        cork = true;
                        psock->cork = NULL;
                }
-               sk_msg_return(sk, msg, tosend);
+               sk_msg_return(sk, msg, msg->sg.size);
                release_sock(sk);
 
                ret = tcp_bpf_sendmsg_redir(sk_redir, msg, tosend, flags);
@@ -375,8 +375,11 @@ more_data:
                }
                if (msg &&
                    msg->sg.data[msg->sg.start].page_link &&
-                   msg->sg.data[msg->sg.start].length)
+                   msg->sg.data[msg->sg.start].length) {
+                       if (eval == __SK_REDIRECT)
+                               sk_mem_charge(sk, msg->sg.size);
                        goto more_data;
+               }
        }
        return ret;
 }