linux-yocto/net/ipv6
Florian Westphal b32e1590a8 netfilter: nf_reject: don't leak dst refcount for loopback packets
[ Upstream commit 91a79b792204313153e1bdbbe5acbfc28903b3a5 ]

recent patches to add a WARN() when replacing skb dst entry found an
old bug:

WARNING: include/linux/skbuff.h:1165 skb_dst_check_unset include/linux/skbuff.h:1164 [inline]
WARNING: include/linux/skbuff.h:1165 skb_dst_set include/linux/skbuff.h:1210 [inline]
WARNING: include/linux/skbuff.h:1165 nf_reject_fill_skb_dst+0x2a4/0x330 net/ipv4/netfilter/nf_reject_ipv4.c:234
[..]
Call Trace:
 nf_send_unreach+0x17b/0x6e0 net/ipv4/netfilter/nf_reject_ipv4.c:325
 nft_reject_inet_eval+0x4bc/0x690 net/netfilter/nft_reject_inet.c:27
 expr_call_ops_eval net/netfilter/nf_tables_core.c:237 [inline]
 ..

This is because blamed commit forgot about loopback packets.
Such packets already have a dst_entry attached, even at PRE_ROUTING stage.

Instead of checking hook just check if the skb already has a route
attached to it.

Fixes: f53b9b0bdc ("netfilter: introduce support for reject at prerouting stage")
Signed-off-by: Florian Westphal <fw@strlen.de>
Link: https://patch.msgid.link/20250820123707.10671-1-fw@strlen.de
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2025-08-28 16:34:51 +02:00
..
ila net: Fix checksum update for ILA adj-transport 2025-05-30 19:53:51 -07:00
netfilter netfilter: nf_reject: don't leak dst refcount for loopback packets 2025-08-28 16:34:51 +02:00
addrconf_core.c
addrconf.c ipv6: mcast: Check inet6_dev->dead under idev->mc_lock in __ipv6_dev_mc_inc(). 2025-08-20 18:41:11 +02:00
addrlabel.c ipv6: Use nlmsg_payload in addrlabel file 2025-04-16 18:33:02 -07:00
af_inet6.c net: annotate races around sk->sk_uid 2025-08-15 16:38:40 +02:00
ah6.c
anycast.c netlink: add IPv6 anycast join/leave notifications 2025-01-09 12:54:45 +01:00
calipso.c calipso: Fix null-ptr-deref in calipso_req_{set,del}attr(). 2025-06-19 08:33:09 -07:00
datagram.c net: annotate races around sk->sk_uid 2025-08-15 16:38:40 +02:00
esp6_offload.c xfrm: Add an inbound percpu state cache. 2024-10-29 11:56:18 +01:00
esp6.c espintcp: remove encap socket caching to avoid reference leak 2025-04-14 11:59:17 +02:00
exthdrs_core.c
exthdrs_offload.c
exthdrs.c net: use sock_kmemdup for ip_options 2025-03-03 17:16:34 -08:00
fib6_notifier.c net: do not acquire rtnl in fib_seq_sum() 2024-10-11 15:35:05 -07:00
fib6_rules.c ipv6: fib_rules: Add DSCP mask matching 2025-02-21 16:08:48 -08:00
fou6.c
icmp.c inet: ping: avoid skb_clone() dance in ping_rcv() 2025-02-28 14:41:33 -08:00
inet6_connection_sock.c net: annotate races around sk->sk_uid 2025-08-15 16:38:40 +02:00
inet6_hashtables.c inet: call inet6_ehashfn() once from inet6_hash_connect() 2025-03-06 15:26:02 -08:00
ioam6_iptunnel.c net: ipv6: ioam6: fix double reallocation 2025-04-17 12:52:34 +02:00
ioam6.c net: convert to nla_get_*_default() 2024-11-11 10:32:06 -08:00
ip6_checksum.c
ip6_fib.c ipv6: annotate data-races around rt->fib6_nsiblings 2025-08-15 16:38:55 +02:00
ip6_flowlabel.c treewide: Switch/rename to timer_delete[_sync]() 2025-04-05 10:30:12 +02:00
ip6_gre.c ipv6: Convert tunnel devices' ->exit_batch_rtnl() to ->exit_rtnl(). 2025-04-14 17:08:42 -07:00
ip6_icmp.c
ip6_input.c ipv6: Use RCU in ip6_input() 2025-02-06 16:14:15 -08:00
ip6_offload.c ipv6: reject malicious packets in ipv6_gso_segment() 2025-08-15 16:39:25 +02:00
ip6_offload.h
ip6_output.c net: devmem: Implement TX path 2025-05-13 11:12:48 +02:00
ip6_tunnel.c ipv6: Convert tunnel devices' ->exit_batch_rtnl() to ->exit_rtnl(). 2025-04-14 17:08:42 -07:00
ip6_udp_tunnel.c
ip6_vti.c ipv6: Convert tunnel devices' ->exit_batch_rtnl() to ->exit_rtnl(). 2025-04-14 17:08:42 -07:00
ip6mr.c net: ipv6: ip6mr: Fix in/out netdev to pass to the FORWARD chain 2025-08-15 16:38:38 +02:00
ipcomp6.c xfrm: delete x->tunnel as we delete x 2025-07-08 13:28:27 +02:00
ipv6_sockglue.c ipv6: avoid indirect calls for SOL_IP socket options 2024-08-26 14:53:50 -07:00
Kconfig net: ipv6: select DST_CACHE from IPV6_RPL_LWTUNNEL 2024-09-22 19:52:07 +01:00
Makefile
mcast_snoop.c
mcast.c ipv6: mcast: Check inet6_dev->dead under idev->mc_lock in __ipv6_dev_mc_inc(). 2025-08-20 18:41:11 +02:00
mip6.c
ndisc.c ndisc: ndisc_send_redirect() cleanup 2025-02-15 09:08:46 -08:00
netfilter.c netfilter: bridge: Move specific fragmented packet to slow_path instead of dropping it 2025-05-05 13:13:08 +02:00
output_core.c
ping.c net: annotate races around sk->sk_uid 2025-08-15 16:38:40 +02:00
proc.c minmax: add a few more MIN_T/MAX_T users 2024-07-28 13:41:14 -07:00
protocol.c
raw.c net: annotate races around sk->sk_uid 2025-08-15 16:38:40 +02:00
reassembly.c treewide, timers: Rename from_timer() to timer_container_of() 2025-06-08 09:07:37 +02:00
route.c ipv6: annotate data-races around rt->fib6_nsiblings 2025-08-15 16:38:55 +02:00
rpl_iptunnel.c rpl: Fix use-after-free in rpl_do_srh_inline(). 2025-07-13 23:15:42 +01:00
rpl.c
seg6_hmac.c ipv6: sr: validate HMAC algorithm ID in seg6_hmac_info_add 2025-08-28 16:34:47 +02:00
seg6_iptunnel.c net: ipv6: fix dst ref loop on input in seg6 lwt 2025-02-27 14:18:21 +01:00
seg6_local.c seg6: Fix validation of nexthop addresses 2025-06-05 08:03:17 -07:00
seg6.c ipv6: sr: restruct ifdefines 2024-05-30 18:29:38 -07:00
sit.c ipv6: Convert tunnel devices' ->exit_batch_rtnl() to ->exit_rtnl(). 2025-04-14 17:08:42 -07:00
syncookies.c net: annotate races around sk->sk_uid 2025-08-15 16:38:40 +02:00
sysctl_net_ipv6.c sysctl: treewide: constify the ctl_table argument of proc_handlers 2024-07-24 20:59:29 +02:00
tcp_ao.c
tcp_ipv6.c net: annotate races around sk->sk_uid 2025-08-15 16:38:40 +02:00
tcpv6_offload.c net: use sock_gen_put() when sk_state is TCP_TIME_WAIT 2025-05-01 07:00:19 -07:00
tunnel6.c
udp_impl.h
udp_offload.c udp_tunnel: create a fastpath GRO lookup. 2025-04-08 18:19:41 -07:00
udp.c net: annotate races around sk->sk_uid 2025-08-15 16:38:40 +02:00
udplite.c
xfrm6_input.c xfrm: Set transport header to fix UDP GRO handling 2025-07-02 09:19:56 +02:00
xfrm6_output.c xfrm: Fix the usage of skb->sk 2025-01-20 07:06:53 +01:00
xfrm6_policy.c xfrm: respect ip protocols rules criteria when performing dst lookups 2024-09-23 07:02:07 +02:00
xfrm6_protocol.c
xfrm6_state.c
xfrm6_tunnel.c xfrm: flush all states in xfrm_state_fini 2025-08-20 18:40:50 +02:00