projects
/
linux.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
| inline |
side by side
(parent:
bbd5217
)
bpf, devmap: Compute proper xdp_frame len redirecting frames
author
Lorenzo Bianconi
<lorenzo@kernel.org>
Sat, 23 Jul 2022 17:17:10 +0000
(19:17 +0200)
committer
Daniel Borkmann
<daniel@iogearbox.net>
Tue, 26 Jul 2022 14:26:19 +0000
(16:26 +0200)
Even if it is currently forbidden to XDP_REDIRECT a multi-frag xdp_frame into
a devmap, compute proper xdp_frame length in __xdp_enqueue and is_valid_dst
routines running xdp_get_frame_len().
Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
Link:
https://lore.kernel.org/bpf/894d99c01139e921bdb6868158ff8e67f661c072.1658596075.git.lorenzo@kernel.org
kernel/bpf/devmap.c
patch
|
blob
|
history
diff --git
a/kernel/bpf/devmap.c
b/kernel/bpf/devmap.c
index 1400561efb15d98b18bdc5fda6784d590610b270..a0e02b0094876b40686215fbcfcd7049876246cd 100644
(file)
--- a/
kernel/bpf/devmap.c
+++ b/
kernel/bpf/devmap.c
@@
-477,7
+477,7
@@
static inline int __xdp_enqueue(struct net_device *dev, struct xdp_frame *xdpf,
if (!dev->netdev_ops->ndo_xdp_xmit)
return -EOPNOTSUPP;
- err = xdp_ok_fwd_dev(dev, xdp
f->len
);
+ err = xdp_ok_fwd_dev(dev, xdp
_get_frame_len(xdpf)
);
if (unlikely(err))
return err;
@@
-536,7
+536,7
@@
static bool is_valid_dst(struct bpf_dtab_netdev *obj, struct xdp_frame *xdpf)
!obj->dev->netdev_ops->ndo_xdp_xmit)
return false;
- if (xdp_ok_fwd_dev(obj->dev, xdp
f->len
))
+ if (xdp_ok_fwd_dev(obj->dev, xdp
_get_frame_len(xdpf)
))
return false;
return true;