diff options
author | David S. Miller <davem@davemloft.net> | 2016-01-06 22:54:18 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2016-01-06 22:54:18 -0500 |
commit | 9e0efaf6b41bf22c2eb81258fc2a6f1538a643e5 (patch) | |
tree | e2daa5fb47f707f44b6b7e9da82a6d8017af3f8c /include/linux/filter.h | |
parent | c7f5d105495a38ed09e70d825f75d9d7d5407264 (diff) | |
parent | 51cb67c0b0fcb91581b15bd2e85f29af4d4b2df6 (diff) |
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
Diffstat (limited to 'include/linux/filter.h')
-rw-r--r-- | include/linux/filter.h | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/include/linux/filter.h b/include/linux/filter.h index 294c3cdf07b3..f5b5891ed1ba 100644 --- a/include/linux/filter.h +++ b/include/linux/filter.h @@ -495,6 +495,25 @@ static inline void bpf_jit_free(struct bpf_prog *fp) #define BPF_ANC BIT(15) +static inline bool bpf_needs_clear_a(const struct sock_filter *first) +{ + switch (first->code) { + case BPF_RET | BPF_K: + case BPF_LD | BPF_W | BPF_LEN: + return false; + + case BPF_LD | BPF_W | BPF_ABS: + case BPF_LD | BPF_H | BPF_ABS: + case BPF_LD | BPF_B | BPF_ABS: + if (first->k == SKF_AD_OFF + SKF_AD_ALU_XOR_X) + return true; + return false; + + default: + return true; + } +} + static inline u16 bpf_anc_helper(const struct sock_filter *ftest) { BUG_ON(ftest->code & BPF_ANC); |