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 PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Thu, 3 Sep 2020 18:13:58 -0700 From: Alexei Starovoitov <alexei.starovoitov@...il.com> To: Lorenzo Bianconi <lorenzo@...nel.org> Cc: netdev@...r.kernel.org, bpf@...r.kernel.org, davem@...emloft.net, lorenzo.bianconi@...hat.com, brouer@...hat.com, echaudro@...hat.com, sameehj@...zon.com, kuba@...nel.org, john.fastabend@...il.com, daniel@...earbox.net, ast@...nel.org, shayagr@...zon.com Subject: Re: [PATCH v2 net-next 6/9] bpf: helpers: add bpf_xdp_adjust_mb_header helper On Thu, Sep 03, 2020 at 10:58:50PM +0200, Lorenzo Bianconi wrote: > +BPF_CALL_2(bpf_xdp_adjust_mb_header, struct xdp_buff *, xdp, > + int, offset) > +{ > + void *data_hard_end, *data_end; > + struct skb_shared_info *sinfo; > + int frag_offset, frag_len; > + u8 *addr; > + > + if (!xdp->mb) > + return -EOPNOTSUPP; > + > + sinfo = xdp_get_shared_info_from_buff(xdp); > + > + frag_len = skb_frag_size(&sinfo->frags[0]); > + if (offset > frag_len) > + return -EINVAL; > + > + frag_offset = skb_frag_off(&sinfo->frags[0]); > + data_end = xdp->data_end + offset; > + > + if (offset < 0 && (-offset > frag_offset || > + data_end < xdp->data + ETH_HLEN)) > + return -EINVAL; > + > + data_hard_end = xdp_data_hard_end(xdp); /* use xdp->frame_sz */ > + if (data_end > data_hard_end) > + return -EINVAL; > + > + addr = page_address(skb_frag_page(&sinfo->frags[0])) + frag_offset; > + if (offset > 0) { > + memcpy(xdp->data_end, addr, offset); > + } else { > + memcpy(addr + offset, xdp->data_end + offset, -offset); > + memset(xdp->data_end + offset, 0, -offset); > + } > + > + skb_frag_size_sub(&sinfo->frags[0], offset); > + skb_frag_off_add(&sinfo->frags[0], offset); > + xdp->data_end = data_end; > + > + return 0; > +} wait a sec. Are you saying that multi buffer XDP actually should be skb based? If that's what mvneta driver is doing that's fine, but that is not a reasonable requirement to put on all other drivers.
Powered by blists - more mailing lists