diff options
Diffstat (limited to 'kernel/bpf')
| -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; |
