Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 7c8b87f0 authored by Alexei Starovoitov's avatar Alexei Starovoitov
Browse files

Merge branch 'fix-gso_segs'



Eric Dumazet says:

====================
First patch changes the kernel, second patch
adds a new test.

Note that other patches might be needed to take
care of similar issues in sock_ops_convert_ctx_access()
and SOCK_OPS_GET_FIELD()
====================

Signed-off-by: default avatarAlexei Starovoitov <ast@kernel.org>
parents d9b8aada be69483b
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -7455,12 +7455,12 @@ static u32 bpf_convert_ctx_access(enum bpf_access_type type,
	case offsetof(struct __sk_buff, gso_segs):
		/* si->dst_reg = skb_shinfo(SKB); */
#ifdef NET_SKBUFF_DATA_USES_OFFSET
		*insn++ = BPF_LDX_MEM(BPF_FIELD_SIZEOF(struct sk_buff, head),
				      si->dst_reg, si->src_reg,
				      offsetof(struct sk_buff, head));
		*insn++ = BPF_LDX_MEM(BPF_FIELD_SIZEOF(struct sk_buff, end),
				      BPF_REG_AX, si->src_reg,
				      offsetof(struct sk_buff, end));
		*insn++ = BPF_LDX_MEM(BPF_FIELD_SIZEOF(struct sk_buff, head),
				      si->dst_reg, si->src_reg,
				      offsetof(struct sk_buff, head));
		*insn++ = BPF_ALU64_REG(BPF_ADD, si->dst_reg, BPF_REG_AX);
#else
		*insn++ = BPF_LDX_MEM(BPF_FIELD_SIZEOF(struct sk_buff, end),
+11 −0
Original line number Diff line number Diff line
@@ -974,6 +974,17 @@
	.result = ACCEPT,
	.prog_type = BPF_PROG_TYPE_CGROUP_SKB,
},
{
	"read gso_segs from CGROUP_SKB",
	.insns = {
	BPF_LDX_MEM(BPF_W, BPF_REG_1, BPF_REG_1,
		    offsetof(struct __sk_buff, gso_segs)),
	BPF_MOV64_IMM(BPF_REG_0, 0),
	BPF_EXIT_INSN(),
	},
	.result = ACCEPT,
	.prog_type = BPF_PROG_TYPE_CGROUP_SKB,
},
{
	"write gso_segs from CGROUP_SKB",
	.insns = {