From: Masami Hiramatsu (Google) <[email protected]>

In store_trace_entry_data(), edata is cast to unsigned long for pointer
offset arithmetic before being cast back to unsigned long *. Cast edata
to u8 * instead.

Assisted-by: Antigravity:gemini-3.5-flash
Signed-off-by: Masami Hiramatsu (Google) <[email protected]>
---
 kernel/trace/trace_probe.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/kernel/trace/trace_probe.c b/kernel/trace/trace_probe.c
index eb7be3725e85..4899aa5f9230 100644
--- a/kernel/trace/trace_probe.c
+++ b/kernel/trace/trace_probe.c
@@ -1246,7 +1246,7 @@ void store_trace_entry_data(void *edata, struct 
trace_probe *tp, struct pt_regs
                        val = regs_get_kernel_argument(regs, code->param);
                        break;
                case FETCH_OP_ST_EDATA:
-                       *(unsigned long *)((unsigned long)edata + code->offset) 
= val;
+                       *(unsigned long *)((u8 *)edata + code->offset) = val;
                        break;
                case FETCH_OP_END:
                        goto end;


Reply via email to