for_each_dyn_event(dpos)                \
                if (is_trace_kprobe(dpos) && (pos = to_trace_kprobe(dpos)))
 
-#define SIZEOF_TRACE_KPROBE(n)                         \
-       (offsetof(struct trace_kprobe, tp.args) +       \
-       (sizeof(struct probe_arg) * (n)))
-
 static nokprobe_inline bool trace_kprobe_is_return(struct trace_kprobe *tk)
 {
        return tk->rp.handler != NULL;
        struct trace_kprobe *tk;
        int ret = -ENOMEM;
 
-       tk = kzalloc(SIZEOF_TRACE_KPROBE(nargs), GFP_KERNEL);
+       tk = kzalloc(struct_size(tk, tp.args, nargs), GFP_KERNEL);
        if (!tk)
                return ERR_PTR(ret);
 
 
        for_each_dyn_event(dpos)                \
                if (is_trace_uprobe(dpos) && (pos = to_trace_uprobe(dpos)))
 
-#define SIZEOF_TRACE_UPROBE(n)                         \
-       (offsetof(struct trace_uprobe, tp.args) +       \
-       (sizeof(struct probe_arg) * (n)))
-
 static int register_uprobe_event(struct trace_uprobe *tu);
 static int unregister_uprobe_event(struct trace_uprobe *tu);
 
        struct trace_uprobe *tu;
        int ret;
 
-       tu = kzalloc(SIZEOF_TRACE_UPROBE(nargs), GFP_KERNEL);
+       tu = kzalloc(struct_size(tu, tp.args, nargs), GFP_KERNEL);
        if (!tu)
                return ERR_PTR(-ENOMEM);