OpenCloudOS-Kernel/net/core
Toke Høiland-Jørgensen b1bc4a35a0 net: xdp: Disallow attaching device-bound programs in generic mode
[ Upstream commit 3595599fa8360bb3c7afa7ee50c810b4a64106ea ]

Device-bound programs are used to support RX metadata kfuncs. These
kfuncs are driver-specific and rely on the driver context to read the
metadata. This means they can't work in generic XDP mode. However, there
is no check to disallow such programs from being attached in generic
mode, in which case the metadata kfuncs will be called in an invalid
context, leading to crashes.

Fix this by adding a check to disallow attaching device-bound programs
in generic mode.

Fixes: 2b3486bc2d ("bpf: Introduce device-bound XDP programs")
Reported-by: Marcus Wichelmann <marcus.wichelmann@hetzner-cloud.de>
Closes: https://lore.kernel.org/r/dae862ec-43b5-41a0-8edf-46c59071cdda@hetzner-cloud.de
Tested-by: Marcus Wichelmann <marcus.wichelmann@hetzner-cloud.de>
Acked-by: Stanislav Fomichev <sdf@fomichev.me>
Signed-off-by: Toke Høiland-Jørgensen <toke@redhat.com>
Acked-by: Daniel Borkmann <daniel@iogearbox.net>
Acked-by: Martin KaFai Lau <martin.lau@kernel.org>
Link: https://patch.msgid.link/20250127131344.238147-1-toke@redhat.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2025-02-08 09:52:31 +01:00
..
Makefile
bpf_sk_storage.c
datagram.c net: fix rc7's __skb_datagram_iter() 2024-07-18 13:21:13 +02:00
dev.c net: xdp: Disallow attaching device-bound programs in generic mode 2025-02-08 09:52:31 +01:00
dev.h net: fix removing a namespace with conflicting altnames 2024-01-31 16:19:01 -08:00
dev_addr_lists.c
dev_addr_lists_test.c
dev_ioctl.c
drop_monitor.c drop_monitor: replace spin_lock by raw_spin_lock 2024-06-27 13:49:01 +02:00
dst.c net: do not delay dst_entries_add() in dst_release() 2024-10-17 15:24:28 +02:00
dst_cache.c ipv6: introduce dst_rt6_info() helper 2024-12-14 19:59:35 +01:00
failover.c
fib_notifier.c
fib_rules.c
filter.c bpf: tcp: Mark bpf_load_hdr_opt() arg2 as read-write 2025-02-08 09:52:09 +01:00
flow_dissector.c net: flow_dissector: use DEBUG_NET_WARN_ON_ONCE 2024-08-03 08:54:05 +02:00
flow_offload.c
gen_estimator.c net: use unrcu_pointer() helper 2024-12-09 10:32:10 +01:00
gen_stats.c
gro.c net: Add netif_get_gro_max_size helper for GRO 2024-10-10 11:57:16 +02:00
gro_cells.c
gso.c
hwbm.c
link_watch.c ipvlan: Fix use-after-free in ipvlan_get_iflink(). 2025-01-17 13:36:13 +01:00
lwt_bpf.c
lwtunnel.c
neighbour.c net/neighbor: clear error in case strict check is not set 2024-12-14 20:00:09 +01:00
net-procfs.c
net-sysfs.c ethtool: check device is present when getting link settings 2024-09-04 13:28:26 +02:00
net-sysfs.h
net-traces.c
net_namespace.c net: add exit_batch_rtnl() method 2025-01-23 17:21:10 +01:00
netclassid_cgroup.c
netdev-genl-gen.c
netdev-genl-gen.h
netdev-genl.c
netevent.c
netpoll.c netpoll: Use rcu_access_pointer() in __netpoll_setup 2024-12-14 20:00:10 +01:00
netprio_cgroup.c
of_net.c
page_pool.c net: page_pool: add missing free_percpu when page_pool_init fail 2023-11-20 11:59:34 +01:00
pktgen.c pktgen: Avoid out-of-bounds access in get_imix_entries 2025-01-23 17:21:10 +01:00
ptp_classifier.c
request_sock.c tcp: make sure init the accept_queue's spinlocks once 2024-01-31 16:19:00 -08:00
rtnetlink.c net: fix crash when config small gso_max_size/gso_ipv4_max_size 2024-11-08 16:28:18 +01:00
scm.c io_uring/unix: drop usage of io_uring socket 2024-03-26 18:19:09 -04:00
secure_seq.c
selftests.c
skbuff.c net: core: reject skb_copy(_expand) for fraglist GSO skbs 2024-05-17 12:02:06 +02:00
skmsg.c tcp_bpf: Add sk_rmem_alloc related logic for tcp_bpf ingress redirection 2025-01-02 10:32:00 +01:00
sock.c net: restrict SO_REUSEPORT to inet sockets 2025-01-09 13:32:02 +01:00
sock_destructor.h
sock_diag.c net: use unrcu_pointer() helper 2024-12-09 10:32:10 +01:00
sock_map.c bpf, sockmap: Fix update element with same 2024-12-19 18:11:25 +01:00
sock_reuseport.c
stream.c net: Return error from sk_stream_wait_connect() if sk_wait_event() fails 2024-01-01 12:42:30 +00:00
sysctl_net_core.c net: let net.core.dev_weight always be non-zero 2025-02-08 09:52:02 +01:00
timestamping.c
tso.c
utils.c
xdp.c xdp: fix invalid wait context of page_pool_destroy() 2024-08-03 08:53:44 +02:00