mirror of
https://github.com/tbsdtv/linux_media.git
synced 2025-07-23 12:43:29 +02:00
Merge tag 'for-netdev' of https://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf
Daniel Borkmann says: ==================== pull-request: bpf 2023-07-05 We've added 2 non-merge commits during the last 1 day(s) which contain a total of 3 files changed, 16 insertions(+), 4 deletions(-). The main changes are: 1) Fix BTF to warn but not returning an error for a NULL BTF to still be able to load modules under CONFIG_DEBUG_INFO_BTF, from SeongJae Park. 2) Fix xsk sockets to honor SO_BINDTODEVICE in bind(), from Ilya Maximets. * tag 'for-netdev' of https://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf: xsk: Honor SO_BINDTODEVICE on bind bpf, btf: Warn but return no error for NULL btf from __register_btf_kfunc_id_set() ==================== Link: https://lore.kernel.org/r/20230705171716.6494-1-daniel@iogearbox.net Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
@@ -433,6 +433,15 @@ start N bytes into the buffer leaving the first N bytes for the
|
|||||||
application to use. The final option is the flags field, but it will
|
application to use. The final option is the flags field, but it will
|
||||||
be dealt with in separate sections for each UMEM flag.
|
be dealt with in separate sections for each UMEM flag.
|
||||||
|
|
||||||
|
SO_BINDTODEVICE setsockopt
|
||||||
|
--------------------------
|
||||||
|
|
||||||
|
This is a generic SOL_SOCKET option that can be used to tie AF_XDP
|
||||||
|
socket to a particular network interface. It is useful when a socket
|
||||||
|
is created by a privileged process and passed to a non-privileged one.
|
||||||
|
Once the option is set, kernel will refuse attempts to bind that socket
|
||||||
|
to a different interface. Updating the value requires CAP_NET_RAW.
|
||||||
|
|
||||||
XDP_STATISTICS getsockopt
|
XDP_STATISTICS getsockopt
|
||||||
-------------------------
|
-------------------------
|
||||||
|
|
||||||
|
@@ -7891,10 +7891,8 @@ static int __register_btf_kfunc_id_set(enum btf_kfunc_hook hook,
|
|||||||
pr_err("missing vmlinux BTF, cannot register kfuncs\n");
|
pr_err("missing vmlinux BTF, cannot register kfuncs\n");
|
||||||
return -ENOENT;
|
return -ENOENT;
|
||||||
}
|
}
|
||||||
if (kset->owner && IS_ENABLED(CONFIG_DEBUG_INFO_BTF_MODULES)) {
|
if (kset->owner && IS_ENABLED(CONFIG_DEBUG_INFO_BTF_MODULES))
|
||||||
pr_err("missing module BTF, cannot register kfuncs\n");
|
pr_warn("missing module BTF, cannot register kfuncs\n");
|
||||||
return -ENOENT;
|
|
||||||
}
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
if (IS_ERR(btf))
|
if (IS_ERR(btf))
|
||||||
|
@@ -886,6 +886,7 @@ static int xsk_bind(struct socket *sock, struct sockaddr *addr, int addr_len)
|
|||||||
struct sock *sk = sock->sk;
|
struct sock *sk = sock->sk;
|
||||||
struct xdp_sock *xs = xdp_sk(sk);
|
struct xdp_sock *xs = xdp_sk(sk);
|
||||||
struct net_device *dev;
|
struct net_device *dev;
|
||||||
|
int bound_dev_if;
|
||||||
u32 flags, qid;
|
u32 flags, qid;
|
||||||
int err = 0;
|
int err = 0;
|
||||||
|
|
||||||
@@ -899,6 +900,10 @@ static int xsk_bind(struct socket *sock, struct sockaddr *addr, int addr_len)
|
|||||||
XDP_USE_NEED_WAKEUP))
|
XDP_USE_NEED_WAKEUP))
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
|
||||||
|
bound_dev_if = READ_ONCE(sk->sk_bound_dev_if);
|
||||||
|
if (bound_dev_if && bound_dev_if != sxdp->sxdp_ifindex)
|
||||||
|
return -EINVAL;
|
||||||
|
|
||||||
rtnl_lock();
|
rtnl_lock();
|
||||||
mutex_lock(&xs->mutex);
|
mutex_lock(&xs->mutex);
|
||||||
if (xs->state != XSK_READY) {
|
if (xs->state != XSK_READY) {
|
||||||
|
Reference in New Issue
Block a user