mirror of
https://github.com/torvalds/linux.git
synced 2026-05-29 17:43:52 +02:00
selftests/bpf: Fix the u64_offset_to_skb_data test
The u64_offset_to_skb_data test is supposed to make a 64-bit fill, but instead makes a 16-bit one. Fix the test according to its intention and update the comments accordingly (umax is no longer 0xffff). The 16-bit fill is covered by u16_offset_to_skb_data. Signed-off-by: Maxim Mikityanskiy <maxim@isovalent.com> Acked-by: Eduard Zingerman <eddyz87@gmail.com> Link: https://lore.kernel.org/r/20240108205209.838365-2-maxtram95@gmail.com Signed-off-by: Alexei Starovoitov <ast@kernel.org>
This commit is contained in:
parent
f067074baf
commit
242d185141
|
|
@ -243,7 +243,7 @@ l0_%=: r0 = 0; \
|
|||
|
||||
SEC("tc")
|
||||
__description("Spill u32 const scalars. Refill as u64. Offset to skb->data")
|
||||
__failure __msg("invalid access to packet")
|
||||
__failure __msg("math between pkt pointer and register with unbounded min value is not allowed")
|
||||
__naked void u64_offset_to_skb_data(void)
|
||||
{
|
||||
asm volatile (" \
|
||||
|
|
@ -253,13 +253,11 @@ __naked void u64_offset_to_skb_data(void)
|
|||
w7 = 20; \
|
||||
*(u32*)(r10 - 4) = r6; \
|
||||
*(u32*)(r10 - 8) = r7; \
|
||||
r4 = *(u16*)(r10 - 8); \
|
||||
r4 = *(u64*)(r10 - 8); \
|
||||
r0 = r2; \
|
||||
/* r0 += r4 R0=pkt R2=pkt R3=pkt_end R4=umax=65535 */\
|
||||
/* r0 += r4 R0=pkt R2=pkt R3=pkt_end R4= */ \
|
||||
r0 += r4; \
|
||||
/* if (r0 > r3) R0=pkt,umax=65535 R2=pkt R3=pkt_end R4=umax=65535 */\
|
||||
if r0 > r3 goto l0_%=; \
|
||||
/* r0 = *(u32 *)r2 R0=pkt,umax=65535 R2=pkt R3=pkt_end R4=20 */\
|
||||
r0 = *(u32*)(r2 + 0); \
|
||||
l0_%=: r0 = 0; \
|
||||
exit; \
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user