|
@@ -2333,7 +2333,8 @@ static int do_check(struct verifier_env *env)
|
|
|
if (err)
|
|
|
return err;
|
|
|
|
|
|
- if (BPF_SIZE(insn->code) != BPF_W) {
|
|
|
+ if (BPF_SIZE(insn->code) != BPF_W &&
|
|
|
+ BPF_SIZE(insn->code) != BPF_DW) {
|
|
|
insn_idx++;
|
|
|
continue;
|
|
|
}
|
|
@@ -2642,9 +2643,11 @@ static int convert_ctx_accesses(struct verifier_env *env)
|
|
|
for (i = 0; i < insn_cnt; i++, insn++) {
|
|
|
u32 insn_delta, cnt;
|
|
|
|
|
|
- if (insn->code == (BPF_LDX | BPF_MEM | BPF_W))
|
|
|
+ if (insn->code == (BPF_LDX | BPF_MEM | BPF_W) ||
|
|
|
+ insn->code == (BPF_LDX | BPF_MEM | BPF_DW))
|
|
|
type = BPF_READ;
|
|
|
- else if (insn->code == (BPF_STX | BPF_MEM | BPF_W))
|
|
|
+ else if (insn->code == (BPF_STX | BPF_MEM | BPF_W) ||
|
|
|
+ insn->code == (BPF_STX | BPF_MEM | BPF_DW))
|
|
|
type = BPF_WRITE;
|
|
|
else
|
|
|
continue;
|