Linux Audio

Check our new training course

Loading...
Note: File does not exist in v6.13.7.
  1{
  2	"direct packet read test#1 for CGROUP_SKB",
  3	.insns = {
  4	BPF_LDX_MEM(BPF_W, BPF_REG_2, BPF_REG_1,
  5		    offsetof(struct __sk_buff, data)),
  6	BPF_LDX_MEM(BPF_W, BPF_REG_3, BPF_REG_1,
  7		    offsetof(struct __sk_buff, data_end)),
  8	BPF_LDX_MEM(BPF_W, BPF_REG_4, BPF_REG_1,
  9		    offsetof(struct __sk_buff, len)),
 10	BPF_LDX_MEM(BPF_W, BPF_REG_5, BPF_REG_1,
 11		    offsetof(struct __sk_buff, pkt_type)),
 12	BPF_LDX_MEM(BPF_W, BPF_REG_6, BPF_REG_1,
 13		    offsetof(struct __sk_buff, mark)),
 14	BPF_STX_MEM(BPF_W, BPF_REG_1, BPF_REG_6,
 15		    offsetof(struct __sk_buff, mark)),
 16	BPF_LDX_MEM(BPF_W, BPF_REG_7, BPF_REG_1,
 17		    offsetof(struct __sk_buff, queue_mapping)),
 18	BPF_LDX_MEM(BPF_W, BPF_REG_8, BPF_REG_1,
 19		    offsetof(struct __sk_buff, protocol)),
 20	BPF_LDX_MEM(BPF_W, BPF_REG_9, BPF_REG_1,
 21		    offsetof(struct __sk_buff, vlan_present)),
 22	BPF_MOV64_REG(BPF_REG_0, BPF_REG_2),
 23	BPF_ALU64_IMM(BPF_ADD, BPF_REG_0, 8),
 24	BPF_JMP_REG(BPF_JGT, BPF_REG_0, BPF_REG_3, 1),
 25	BPF_LDX_MEM(BPF_B, BPF_REG_0, BPF_REG_2, 0),
 26	BPF_MOV64_IMM(BPF_REG_0, 0),
 27	BPF_EXIT_INSN(),
 28	},
 29	.result = ACCEPT,
 30	.result_unpriv = REJECT,
 31	.errstr_unpriv = "invalid bpf_context access off=76 size=4",
 32	.prog_type = BPF_PROG_TYPE_CGROUP_SKB,
 33},
 34{
 35	"direct packet read test#2 for CGROUP_SKB",
 36	.insns = {
 37	BPF_LDX_MEM(BPF_W, BPF_REG_4, BPF_REG_1,
 38		    offsetof(struct __sk_buff, vlan_tci)),
 39	BPF_LDX_MEM(BPF_W, BPF_REG_5, BPF_REG_1,
 40		    offsetof(struct __sk_buff, vlan_proto)),
 41	BPF_LDX_MEM(BPF_W, BPF_REG_6, BPF_REG_1,
 42		    offsetof(struct __sk_buff, priority)),
 43	BPF_STX_MEM(BPF_W, BPF_REG_1, BPF_REG_6,
 44		    offsetof(struct __sk_buff, priority)),
 45	BPF_LDX_MEM(BPF_W, BPF_REG_7, BPF_REG_1,
 46		    offsetof(struct __sk_buff, ingress_ifindex)),
 47	BPF_LDX_MEM(BPF_W, BPF_REG_8, BPF_REG_1,
 48		    offsetof(struct __sk_buff, tc_index)),
 49	BPF_LDX_MEM(BPF_W, BPF_REG_9, BPF_REG_1,
 50		    offsetof(struct __sk_buff, hash)),
 51	BPF_MOV64_IMM(BPF_REG_0, 0),
 52	BPF_EXIT_INSN(),
 53	},
 54	.result = ACCEPT,
 55	.prog_type = BPF_PROG_TYPE_CGROUP_SKB,
 56},
 57{
 58	"direct packet read test#3 for CGROUP_SKB",
 59	.insns = {
 60	BPF_LDX_MEM(BPF_W, BPF_REG_4, BPF_REG_1,
 61		    offsetof(struct __sk_buff, cb[0])),
 62	BPF_LDX_MEM(BPF_W, BPF_REG_5, BPF_REG_1,
 63		    offsetof(struct __sk_buff, cb[1])),
 64	BPF_LDX_MEM(BPF_W, BPF_REG_6, BPF_REG_1,
 65		    offsetof(struct __sk_buff, cb[2])),
 66	BPF_LDX_MEM(BPF_W, BPF_REG_7, BPF_REG_1,
 67		    offsetof(struct __sk_buff, cb[3])),
 68	BPF_LDX_MEM(BPF_W, BPF_REG_8, BPF_REG_1,
 69		    offsetof(struct __sk_buff, cb[4])),
 70	BPF_LDX_MEM(BPF_W, BPF_REG_9, BPF_REG_1,
 71		    offsetof(struct __sk_buff, napi_id)),
 72	BPF_STX_MEM(BPF_W, BPF_REG_1, BPF_REG_4,
 73		    offsetof(struct __sk_buff, cb[0])),
 74	BPF_STX_MEM(BPF_W, BPF_REG_1, BPF_REG_5,
 75		    offsetof(struct __sk_buff, cb[1])),
 76	BPF_STX_MEM(BPF_W, BPF_REG_1, BPF_REG_6,
 77		    offsetof(struct __sk_buff, cb[2])),
 78	BPF_STX_MEM(BPF_W, BPF_REG_1, BPF_REG_7,
 79		    offsetof(struct __sk_buff, cb[3])),
 80	BPF_STX_MEM(BPF_W, BPF_REG_1, BPF_REG_8,
 81		    offsetof(struct __sk_buff, cb[4])),
 82	BPF_MOV64_IMM(BPF_REG_0, 0),
 83	BPF_EXIT_INSN(),
 84	},
 85	.result = ACCEPT,
 86	.prog_type = BPF_PROG_TYPE_CGROUP_SKB,
 87},
 88{
 89	"direct packet read test#4 for CGROUP_SKB",
 90	.insns = {
 91	BPF_LDX_MEM(BPF_W, BPF_REG_2, BPF_REG_1,
 92		    offsetof(struct __sk_buff, family)),
 93	BPF_LDX_MEM(BPF_W, BPF_REG_3, BPF_REG_1,
 94		    offsetof(struct __sk_buff, remote_ip4)),
 95	BPF_LDX_MEM(BPF_W, BPF_REG_4, BPF_REG_1,
 96		    offsetof(struct __sk_buff, local_ip4)),
 97	BPF_LDX_MEM(BPF_W, BPF_REG_5, BPF_REG_1,
 98		    offsetof(struct __sk_buff, remote_ip6[0])),
 99	BPF_LDX_MEM(BPF_W, BPF_REG_5, BPF_REG_1,
100		    offsetof(struct __sk_buff, remote_ip6[1])),
101	BPF_LDX_MEM(BPF_W, BPF_REG_5, BPF_REG_1,
102		    offsetof(struct __sk_buff, remote_ip6[2])),
103	BPF_LDX_MEM(BPF_W, BPF_REG_5, BPF_REG_1,
104		    offsetof(struct __sk_buff, remote_ip6[3])),
105	BPF_LDX_MEM(BPF_W, BPF_REG_6, BPF_REG_1,
106		    offsetof(struct __sk_buff, local_ip6[0])),
107	BPF_LDX_MEM(BPF_W, BPF_REG_6, BPF_REG_1,
108		    offsetof(struct __sk_buff, local_ip6[1])),
109	BPF_LDX_MEM(BPF_W, BPF_REG_6, BPF_REG_1,
110		    offsetof(struct __sk_buff, local_ip6[2])),
111	BPF_LDX_MEM(BPF_W, BPF_REG_6, BPF_REG_1,
112		    offsetof(struct __sk_buff, local_ip6[3])),
113	BPF_LDX_MEM(BPF_W, BPF_REG_7, BPF_REG_1,
114		    offsetof(struct __sk_buff, remote_port)),
115	BPF_LDX_MEM(BPF_W, BPF_REG_8, BPF_REG_1,
116		    offsetof(struct __sk_buff, local_port)),
117	BPF_MOV64_IMM(BPF_REG_0, 0),
118	BPF_EXIT_INSN(),
119	},
120	.result = ACCEPT,
121	.prog_type = BPF_PROG_TYPE_CGROUP_SKB,
122},
123{
124	"invalid access of tc_classid for CGROUP_SKB",
125	.insns = {
126	BPF_LDX_MEM(BPF_W, BPF_REG_0, BPF_REG_1,
127		    offsetof(struct __sk_buff, tc_classid)),
128	BPF_MOV64_IMM(BPF_REG_0, 0),
129	BPF_EXIT_INSN(),
130	},
131	.result = REJECT,
132	.errstr = "invalid bpf_context access",
133	.prog_type = BPF_PROG_TYPE_CGROUP_SKB,
134},
135{
136	"invalid access of data_meta for CGROUP_SKB",
137	.insns = {
138	BPF_LDX_MEM(BPF_W, BPF_REG_0, BPF_REG_1,
139		    offsetof(struct __sk_buff, data_meta)),
140	BPF_MOV64_IMM(BPF_REG_0, 0),
141	BPF_EXIT_INSN(),
142	},
143	.result = REJECT,
144	.errstr = "invalid bpf_context access",
145	.prog_type = BPF_PROG_TYPE_CGROUP_SKB,
146},
147{
148	"invalid access of flow_keys for CGROUP_SKB",
149	.insns = {
150	BPF_LDX_MEM(BPF_W, BPF_REG_0, BPF_REG_1,
151		    offsetof(struct __sk_buff, flow_keys)),
152	BPF_MOV64_IMM(BPF_REG_0, 0),
153	BPF_EXIT_INSN(),
154	},
155	.result = REJECT,
156	.errstr = "invalid bpf_context access",
157	.prog_type = BPF_PROG_TYPE_CGROUP_SKB,
158},
159{
160	"invalid write access to napi_id for CGROUP_SKB",
161	.insns = {
162	BPF_LDX_MEM(BPF_W, BPF_REG_9, BPF_REG_1,
163		    offsetof(struct __sk_buff, napi_id)),
164	BPF_STX_MEM(BPF_W, BPF_REG_1, BPF_REG_9,
165		    offsetof(struct __sk_buff, napi_id)),
166	BPF_MOV64_IMM(BPF_REG_0, 0),
167	BPF_EXIT_INSN(),
168	},
169	.result = REJECT,
170	.errstr = "invalid bpf_context access",
171	.prog_type = BPF_PROG_TYPE_CGROUP_SKB,
172},
173{
174	"write tstamp from CGROUP_SKB",
175	.insns = {
176	BPF_MOV64_IMM(BPF_REG_0, 0),
177	BPF_STX_MEM(BPF_DW, BPF_REG_1, BPF_REG_0,
178		    offsetof(struct __sk_buff, tstamp)),
179	BPF_MOV64_IMM(BPF_REG_0, 0),
180	BPF_EXIT_INSN(),
181	},
182	.result = ACCEPT,
183	.result_unpriv = REJECT,
184	.errstr_unpriv = "invalid bpf_context access off=152 size=8",
185	.prog_type = BPF_PROG_TYPE_CGROUP_SKB,
186},
187{
188	"read tstamp from CGROUP_SKB",
189	.insns = {
190	BPF_LDX_MEM(BPF_DW, BPF_REG_0, BPF_REG_1,
191		    offsetof(struct __sk_buff, tstamp)),
192	BPF_MOV64_IMM(BPF_REG_0, 0),
193	BPF_EXIT_INSN(),
194	},
195	.result = ACCEPT,
196	.prog_type = BPF_PROG_TYPE_CGROUP_SKB,
197},