|
@@ -2408,7 +2408,13 @@ static int check_alu_op(struct bpf_verifier_env *env, struct bpf_insn *insn)
|
|
* remember the value we stored into this reg
|
|
* remember the value we stored into this reg
|
|
*/
|
|
*/
|
|
regs[insn->dst_reg].type = SCALAR_VALUE;
|
|
regs[insn->dst_reg].type = SCALAR_VALUE;
|
|
- __mark_reg_known(regs + insn->dst_reg, insn->imm);
|
|
|
|
|
|
+ if (BPF_CLASS(insn->code) == BPF_ALU64) {
|
|
|
|
+ __mark_reg_known(regs + insn->dst_reg,
|
|
|
|
+ insn->imm);
|
|
|
|
+ } else {
|
|
|
|
+ __mark_reg_known(regs + insn->dst_reg,
|
|
|
|
+ (u32)insn->imm);
|
|
|
|
+ }
|
|
}
|
|
}
|
|
|
|
|
|
} else if (opcode > BPF_END) {
|
|
} else if (opcode > BPF_END) {
|