]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
tcp: Fix imbalanced icsk_accept_queue count.
authorKuniyuki Iwashima <kuniyu@google.com>
Wed, 6 May 2026 03:59:19 +0000 (03:59 +0000)
committerJakub Kicinski <kuba@kernel.org>
Fri, 8 May 2026 21:54:51 +0000 (14:54 -0700)
When TCP socket migration happens in reqsk_timer_handler(),
@sk_listener will be updated with the new listener.

When we call __inet_csk_reqsk_queue_drop(), the listener must
be the one stored in req->rsk_listener.

The cited commit accidentally replaced oreq->rsk_listener with
sk_listener, leading to imbalanced icsk_accept_queue count.

Let's pass the correct listener to __inet_csk_reqsk_queue_drop().

Fixes: e8c526f2bdf1 ("tcp/dccp: Don't use timer_pending() in reqsk_queue_unlink().")
Reported-by: Damiano Melotti <melotti@google.com>
Signed-off-by: Kuniyuki Iwashima <kuniyu@google.com>
Link: https://patch.msgid.link/20260506035954.1563147-3-kuniyu@google.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
net/ipv4/inet_connection_sock.c

index 971f9db2c5869a5e2e03ce2311ded3f9822fd659..dbcd37dfdc15b10824876b32e2e6900cec8073f2 100644 (file)
@@ -1134,7 +1134,7 @@ no_ownership:
        }
 
 drop:
-       __inet_csk_reqsk_queue_drop(sk_listener, oreq, true);
+       __inet_csk_reqsk_queue_drop(oreq->rsk_listener, oreq, true);
        reqsk_put(oreq);
 }