tcp_ipv6: set the drop_reason in the right place
authorJakub Kicinski <kuba@kernel.org>
Fri, 20 May 2022 02:13:47 +0000 (19:13 -0700)
committerJakub Kicinski <kuba@kernel.org>
Fri, 20 May 2022 16:35:42 +0000 (09:35 -0700)
commitdc7769244e03e932262a4f10eeab11657cb601c7
treea5cf8de4af1ef24fd6c77c07694d3a4b88801f78
parentb6d261449e6e4ed69ae654e3b4b41c0c416cf2a9
tcp_ipv6: set the drop_reason in the right place

Looks like the IPv6 version of the patch under Fixes was
a copy/paste of the IPv4 but hit the wrong spot.
It is tcp_v6_rcv() which uses drop_reason as a boolean, and
needs to be protected against reason == 0 before calling free.
tcp_v6_do_rcv() has a pretty straightforward flow.

The resulting warning looks like this:
  WARNING: CPU: 1 PID: 0 at net/core/skbuff.c:775
  Call Trace:
    tcp_v6_rcv (net/ipv6/tcp_ipv6.c:1767)
    ip6_protocol_deliver_rcu (net/ipv6/ip6_input.c:438)
    ip6_input_finish (include/linux/rcupdate.h:726)
    ip6_input (include/linux/netfilter.h:307)

Fixes: f8319dfd1b3b ("net: tcp: reset 'drop_reason' to NOT_SPCIFIED in tcp_v{4,6}_rcv()")
Tested-by: Matthieu Baerts <matthieu.baerts@tessares.net>
Link: https://lore.kernel.org/r/20220520021347.2270207-1-kuba@kernel.org
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
net/ipv6/tcp_ipv6.c