diff options
Diffstat (limited to 'kernel/bpf/core.c')
-rw-r--r-- | kernel/bpf/core.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/kernel/bpf/core.c b/kernel/bpf/core.c index b54bb2c2e494..2c2bfaacce66 100644 --- a/kernel/bpf/core.c +++ b/kernel/bpf/core.c | |||
@@ -242,6 +242,7 @@ static unsigned int __bpf_prog_run(void *ctx, const struct bpf_insn *insn) | |||
242 | [BPF_LD | BPF_IND | BPF_W] = &&LD_IND_W, | 242 | [BPF_LD | BPF_IND | BPF_W] = &&LD_IND_W, |
243 | [BPF_LD | BPF_IND | BPF_H] = &&LD_IND_H, | 243 | [BPF_LD | BPF_IND | BPF_H] = &&LD_IND_H, |
244 | [BPF_LD | BPF_IND | BPF_B] = &&LD_IND_B, | 244 | [BPF_LD | BPF_IND | BPF_B] = &&LD_IND_B, |
245 | [BPF_LD | BPF_IMM | BPF_DW] = &&LD_IMM_DW, | ||
245 | }; | 246 | }; |
246 | void *ptr; | 247 | void *ptr; |
247 | int off; | 248 | int off; |
@@ -301,6 +302,10 @@ select_insn: | |||
301 | ALU64_MOV_K: | 302 | ALU64_MOV_K: |
302 | DST = IMM; | 303 | DST = IMM; |
303 | CONT; | 304 | CONT; |
305 | LD_IMM_DW: | ||
306 | DST = (u64) (u32) insn[0].imm | ((u64) (u32) insn[1].imm) << 32; | ||
307 | insn++; | ||
308 | CONT; | ||
304 | ALU64_ARSH_X: | 309 | ALU64_ARSH_X: |
305 | (*(s64 *) &DST) >>= SRC; | 310 | (*(s64 *) &DST) >>= SRC; |
306 | CONT; | 311 | CONT; |