]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
mptcp: reclaim forward-allocated memory on RX path errors
authorPaolo Abeni <pabeni@redhat.com>
Mon, 3 Aug 2026 16:16:40 +0000 (18:16 +0200)
committerJakub Kicinski <kuba@kernel.org>
Thu, 6 Aug 2026 15:46:24 +0000 (08:46 -0700)
After commit 9db5b3cec4ec ("mptcp: borrow forward memory from subflow"),
errors in the receive path prior to queueing skbs into the receive
queue do not trigger forward-allocated memory reclaiming.

Prevent forward memory from growing unboundedly in pathological drop
scenarios by explicitly reclaiming memory when skbs are dropped.

Fixes: 9db5b3cec4ec ("mptcp: borrow forward memory from subflow")
Cc: stable@vger.kernel.org
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
Reviewed-by: Matthieu Baerts (NGI0) <matttbe@kernel.org>
Signed-off-by: Matthieu Baerts (NGI0) <matttbe@kernel.org>
Link: https://patch.msgid.link/20260803-net-mptcp-misc-fixes-7-2-rc6-v2-8-b8f496d71664@kernel.org
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
net/mptcp/protocol.c

index ca644ec53eedb1360875cad0adc07211a82f7d4e..7c8180d8d5eff66cc4e92a4c44d2aee6b5d8fd0e 100644 (file)
@@ -149,6 +149,12 @@ struct sock *__mptcp_nmpc_sk(struct mptcp_sock *msk)
 
 static void mptcp_drop(struct sock *sk, struct sk_buff *skb)
 {
+       /* The skb forward memory was already transferred to sk by
+        * mptcp_borrow_fwdmem(), even before setting the destructor.
+        */
+       if (!skb->destructor)
+               sk_mem_reclaim(sk);
+
        sk_drops_skbadd(sk, skb);
        __kfree_skb(skb);
 }