On Tue, Oct 15, 2019 at 08:24:54PM -0700, Alexei Starovoitov wrote: > v2->v3: > - while trying to adopt btf-based tracing in production service realized > that disabling bpf_probe_read() was premature. The real tracing program > needs to see much more than this type safe tracking can provide. > With these patches the verifier will be able to see that skb->data > is a pointer to 'u8 *', but it cannot possibly know how many bytes > of it is readable. Hence bpf_probe_read() is necessary to do basic > packet reading from tracing program. Some helper can be introduced to > solve this particular problem, but there are other similar structures. > Another issue is bitfield reading. The support for bitfields > is coming to llvm. libbpf will be supporting it eventually as well, > but there will be corner cases where bpf_probe_read() is necessary. > The long term goal is still the same: get rid of probe_read eventually. > - fixed build issue with clang reported by Nathan Chancellor. > - addressed a ton of comments from Andrii. > bitfields and arrays are explicitly unsupported in btf-based tracking. > This will be improved in the future. > Right now the verifier is more strict than necessary. > In some cases it can fall back to 'scalar' instead of rejecting > the program, but rejection today allows to make better decisions > in the future. > - adjusted testcase to demo bitfield and skb->data reading. Applied, thanks!