|
@@ -1721,6 +1721,7 @@ static bool tc_cls_act_is_valid_access(int off, int size,
|
|
|
switch (off) {
|
|
|
case offsetof(struct __sk_buff, mark):
|
|
|
case offsetof(struct __sk_buff, tc_index):
|
|
|
+ case offsetof(struct __sk_buff, priority):
|
|
|
case offsetof(struct __sk_buff, cb[0]) ...
|
|
|
offsetof(struct __sk_buff, cb[4]):
|
|
|
break;
|
|
@@ -1762,8 +1763,12 @@ static u32 bpf_net_convert_ctx_access(enum bpf_access_type type, int dst_reg,
|
|
|
case offsetof(struct __sk_buff, priority):
|
|
|
BUILD_BUG_ON(FIELD_SIZEOF(struct sk_buff, priority) != 4);
|
|
|
|
|
|
- *insn++ = BPF_LDX_MEM(BPF_W, dst_reg, src_reg,
|
|
|
- offsetof(struct sk_buff, priority));
|
|
|
+ if (type == BPF_WRITE)
|
|
|
+ *insn++ = BPF_STX_MEM(BPF_W, dst_reg, src_reg,
|
|
|
+ offsetof(struct sk_buff, priority));
|
|
|
+ else
|
|
|
+ *insn++ = BPF_LDX_MEM(BPF_W, dst_reg, src_reg,
|
|
|
+ offsetof(struct sk_buff, priority));
|
|
|
break;
|
|
|
|
|
|
case offsetof(struct __sk_buff, ingress_ifindex):
|