diff --git a/bpf/aya-bpf/src/args.rs b/bpf/aya-bpf/src/args.rs index 48a4d53d..deb9aaa7 100644 --- a/bpf/aya-bpf/src/args.rs +++ b/bpf/aya-bpf/src/args.rs @@ -119,7 +119,7 @@ impl FromPtRegs for *const T { } fn from_stack_argument(ctx: &pt_regs, n: usize) -> Option { - let addr: __u64 = &ctx.sp + 8 * (n + 1) as __u64; + let addr: __u64 = &ctx.rsp + 8 * (n + 1) as __u64; unsafe { bpf_probe_read(addr as *const c_int).map(|v| v as *const _).ok() } } @@ -139,7 +139,7 @@ impl FromPtRegs for *const T { } fn from_stack_argument(ctx: &pt_regs, n: usize) -> Option { - let addr: __u64 = &ctx.sp + 8 * (n + 1) as __u64; + let addr: __u64 = &ctx.uregs[13] + 8 * (n + 1) as __u64; unsafe { bpf_probe_read(addr as *const c_int).map(|v| v as *const _).ok() } } @@ -183,7 +183,7 @@ impl FromPtRegs for *mut T { } fn from_stack_argument(ctx: &pt_regs, n: usize) -> Option { - let addr: __u64 = &ctx.sp + 8 * (n + 1) as __u64; + let addr: __u64 = &ctx.rsp + 8 * (n + 1) as __u64; unsafe { bpf_probe_read(addr as *const c_int).map(|v| v as *mut _).ok() } } @@ -203,7 +203,7 @@ impl FromPtRegs for *mut T { } fn from_stack_argument(ctx: &pt_regs, n: usize) -> Option { - let addr: __u64 = &ctx.sp + 8 * (n + 1) as __u64; + let addr: __u64 = &ctx.uregs[13] + 8 * (n + 1) as __u64; unsafe { bpf_probe_read(addr as *const c_int).map(|v| v as *mut _).ok() } }