mirror of https://github.com/aya-rs/aya
bpf: fix set_mark by not copying __sk_buff
Such an assignment in two parts (first deref in `unsafe`, then field access outside of `unsafe`) is bogus: the deref "returned" by the `unsafe` block actually creates a copy of the `__sk_buff` struct because it implements `Copy`. The mark value is written to the `mark` field of the copy, and not the real `__sk_buff`. Change it to do it all in the `unsafe` block. The same is done for the `.len()` getter to avoid copying the whole `__sk_buff` struct for a 32 bit field. Although such a copy should be optimized out by the compiler, it's better to help it do so.pull/480/head
parent
12927cf699
commit
890e8c9340
Loading…
Reference in New Issue