On 7/16/24 12:54 PM, Eduard Zingerman wrote:
On Mon, 2024-07-15 at 13:18 -0700, Yonghong Song wrote:
[...]
+SEC("xdp")
+__description("LDSX, xdp s32 xdp_md->data")
+__failure __msg("invalid bpf_context access")
+__naked void ldsx_ctx_1(void)
+{
+ asm volatile (
+ "r2 = *(s32 *)(r1 + %[xdp_md_data]);"
Nit: this test fails at the first instruction,
hence there is no need to include it's tail.
I think it would be good to keep these tests minimal.
Okay, I will shorten the test to have minimum instructions
to reproduce the issue.
+ "r3 = *(u32 *)(r1 + %[xdp_md_data_end]);"
+ "r1 = r2;"
+ "r1 += 8;"
+ "if r1 > r3 goto l0_%=;"
+ "r0 = *(u64 *)(r1 - 8);"
+"l0_%=:"
+ "r0 = 0;"
+ "exit;"
+ :
+ : __imm_const(xdp_md_data, offsetof(struct xdp_md, data)),
+ __imm_const(xdp_md_data_end, offsetof(struct xdp_md, data_end))
+ : __clobber_all);
+}
[...]