lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Tue, 28 Jun 2022 21:48:02 +0200 From: Alexander Lobakin <alexandr.lobakin@...el.com> To: Alexei Starovoitov <ast@...nel.org>, Daniel Borkmann <daniel@...earbox.net>, Andrii Nakryiko <andrii@...nel.org> Cc: Alexander Lobakin <alexandr.lobakin@...el.com>, Larysa Zaremba <larysa.zaremba@...el.com>, Michal Swiatkowski <michal.swiatkowski@...ux.intel.com>, Jesper Dangaard Brouer <hawk@...nel.org>, Björn Töpel <bjorn@...nel.org>, Magnus Karlsson <magnus.karlsson@...el.com>, Maciej Fijalkowski <maciej.fijalkowski@...el.com>, Jonathan Lemon <jonathan.lemon@...il.com>, Toke Hoiland-Jorgensen <toke@...hat.com>, Lorenzo Bianconi <lorenzo@...nel.org>, "David S. Miller" <davem@...emloft.net>, Eric Dumazet <edumazet@...gle.com>, Jakub Kicinski <kuba@...nel.org>, Paolo Abeni <pabeni@...hat.com>, Jesse Brandeburg <jesse.brandeburg@...el.com>, John Fastabend <john.fastabend@...il.com>, Yajun Deng <yajun.deng@...ux.dev>, Willem de Bruijn <willemb@...gle.com>, bpf@...r.kernel.org, netdev@...r.kernel.org, linux-kernel@...r.kernel.org, xdp-hints@...-project.net Subject: [PATCH RFC bpf-next 42/52] net, xdp: shortcut skb->dev in bpf_prog_run_generic_xdp() It's being used 3 times and more to come. Fetch it onto the stack to reduce jumping back and forth. Signed-off-by: Alexander Lobakin <alexandr.lobakin@...el.com> --- net/bpf/dev.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/net/bpf/dev.c b/net/bpf/dev.c index cc43f73929f3..350ebdc783a0 100644 --- a/net/bpf/dev.c +++ b/net/bpf/dev.c @@ -31,6 +31,7 @@ u32 bpf_prog_run_generic_xdp(struct sk_buff *skb, struct xdp_buff *xdp, struct bpf_prog *xdp_prog) { void *orig_data, *orig_data_end, *hard_start; + struct net_device *dev = skb->dev; struct netdev_rx_queue *rxqueue; bool orig_bcast, orig_host; u32 mac_len, frame_sz; @@ -57,7 +58,7 @@ u32 bpf_prog_run_generic_xdp(struct sk_buff *skb, struct xdp_buff *xdp, orig_data_end = xdp->data_end; orig_data = xdp->data; eth = (struct ethhdr *)xdp->data; - orig_host = ether_addr_equal_64bits(eth->h_dest, skb->dev->dev_addr); + orig_host = ether_addr_equal_64bits(eth->h_dest, dev->dev_addr); orig_bcast = is_multicast_ether_addr_64bits(eth->h_dest); orig_eth_type = eth->h_proto; @@ -86,11 +87,11 @@ u32 bpf_prog_run_generic_xdp(struct sk_buff *skb, struct xdp_buff *xdp, eth = (struct ethhdr *)xdp->data; if ((orig_eth_type != eth->h_proto) || (orig_host != ether_addr_equal_64bits(eth->h_dest, - skb->dev->dev_addr)) || + dev->dev_addr)) || (orig_bcast != is_multicast_ether_addr_64bits(eth->h_dest))) { __skb_push(skb, ETH_HLEN); skb->pkt_type = PACKET_HOST; - skb->protocol = eth_type_trans(skb, skb->dev); + skb->protocol = eth_type_trans(skb, dev); } /* Redirect/Tx gives L2 packet, code that will reuse skb must __skb_pull -- 2.36.1
Powered by blists - more mailing lists