diff options
author | Alex Shi <alex.shi@linaro.org> | 2018-02-01 12:03:41 +0800 |
---|---|---|
committer | Alex Shi <alex.shi@linaro.org> | 2018-02-01 12:03:41 +0800 |
commit | 9cebd248bd83dea5ead3f1ab5f3cbaf241588e37 (patch) | |
tree | 5f2d8fd7122c345045c476d57cb7c5ad17a4f08b /net/core/filter.c | |
parent | 4f0ca2b2718d297c88b1c303f2d414327c537636 (diff) | |
parent | 6c6f924f9c6294944ee6efb1bbd8cdb853582e50 (diff) |
Merge tag 'v4.9.79' into linux-linaro-lsk-v4.9lsk-v4.9-18.02
This is the 4.9.79 stable release
Diffstat (limited to 'net/core/filter.c')
-rw-r--r-- | net/core/filter.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/net/core/filter.c b/net/core/filter.c index 4eb4ce0aeef4..e8c89d2d2bc0 100644 --- a/net/core/filter.c +++ b/net/core/filter.c @@ -441,6 +441,10 @@ do_pass: convert_bpf_extensions(fp, &insn)) break; + if (fp->code == (BPF_ALU | BPF_DIV | BPF_X) || + fp->code == (BPF_ALU | BPF_MOD | BPF_X)) + *insn++ = BPF_MOV32_REG(BPF_REG_X, BPF_REG_X); + *insn = BPF_RAW_INSN(fp->code, BPF_REG_A, BPF_REG_X, 0, fp->k); break; @@ -1005,11 +1009,9 @@ static struct bpf_prog *bpf_migrate_filter(struct bpf_prog *fp) */ goto out_err_free; - /* We are guaranteed to never error here with cBPF to eBPF - * transitions, since there's no issue with type compatibility - * checks on program arrays. - */ fp = bpf_prog_select_runtime(fp, &err); + if (err) + goto out_err_free; kfree(old_prog); return fp; |