trace_kprobe.c (b690490d6d466972ade172ee2e7f6ffa49e7e910) trace_kprobe.c (73f9b911faa74ac5107879de05c9489c419f41bb)
1// SPDX-License-Identifier: GPL-2.0
2/*
3 * Kprobes-based tracing events
4 *
5 * Created by Masami Hiramatsu <mhiramat@redhat.com>
6 *
7 */
8#define pr_fmt(fmt) "trace_kprobe: " fmt

--- 18 unchanged lines hidden (view full) ---

27/* Kprobe early definition from command line */
28static char kprobe_boot_events_buf[COMMAND_LINE_SIZE] __initdata;
29
30static int __init set_kprobe_boot_events(char *str)
31{
32 strlcpy(kprobe_boot_events_buf, str, COMMAND_LINE_SIZE);
33 disable_tracing_selftest("running kprobe events");
34
1// SPDX-License-Identifier: GPL-2.0
2/*
3 * Kprobes-based tracing events
4 *
5 * Created by Masami Hiramatsu <mhiramat@redhat.com>
6 *
7 */
8#define pr_fmt(fmt) "trace_kprobe: " fmt

--- 18 unchanged lines hidden (view full) ---

27/* Kprobe early definition from command line */
28static char kprobe_boot_events_buf[COMMAND_LINE_SIZE] __initdata;
29
30static int __init set_kprobe_boot_events(char *str)
31{
32 strlcpy(kprobe_boot_events_buf, str, COMMAND_LINE_SIZE);
33 disable_tracing_selftest("running kprobe events");
34
35 return 0;
35 return 1;
36}
37__setup("kprobe_event=", set_kprobe_boot_events);
38
39static int trace_kprobe_create(const char *raw_command);
40static int trace_kprobe_show(struct seq_file *m, struct dyn_event *ev);
41static int trace_kprobe_release(struct dyn_event *ev);
42static bool trace_kprobe_is_busy(struct dyn_event *ev);
43static bool trace_kprobe_match(const char *system, const char *event,

--- 1384 unchanged lines hidden (view full) ---

1428 entry = trace_event_buffer_reserve(&fbuffer, trace_file,
1429 sizeof(*entry) + tk->tp.size + dsize);
1430 if (!entry)
1431 return;
1432
1433 fbuffer.regs = regs;
1434 entry = fbuffer.entry = ring_buffer_event_data(fbuffer.event);
1435 entry->func = (unsigned long)tk->rp.kp.addr;
36}
37__setup("kprobe_event=", set_kprobe_boot_events);
38
39static int trace_kprobe_create(const char *raw_command);
40static int trace_kprobe_show(struct seq_file *m, struct dyn_event *ev);
41static int trace_kprobe_release(struct dyn_event *ev);
42static bool trace_kprobe_is_busy(struct dyn_event *ev);
43static bool trace_kprobe_match(const char *system, const char *event,

--- 1384 unchanged lines hidden (view full) ---

1428 entry = trace_event_buffer_reserve(&fbuffer, trace_file,
1429 sizeof(*entry) + tk->tp.size + dsize);
1430 if (!entry)
1431 return;
1432
1433 fbuffer.regs = regs;
1434 entry = fbuffer.entry = ring_buffer_event_data(fbuffer.event);
1435 entry->func = (unsigned long)tk->rp.kp.addr;
1436 entry->ret_ip = (unsigned long)ri->ret_addr;
1436 entry->ret_ip = get_kretprobe_retaddr(ri);
1437 store_trace_args(&entry[1], &tk->tp, regs, sizeof(*entry), dsize);
1438
1439 trace_event_buffer_commit(&fbuffer);
1440}
1441
1442static void
1443kretprobe_trace_func(struct trace_kprobe *tk, struct kretprobe_instance *ri,
1444 struct pt_regs *regs)

--- 178 unchanged lines hidden (view full) ---

1623 size = ALIGN(__size + sizeof(u32), sizeof(u64));
1624 size -= sizeof(u32);
1625
1626 entry = perf_trace_buf_alloc(size, NULL, &rctx);
1627 if (!entry)
1628 return;
1629
1630 entry->func = (unsigned long)tk->rp.kp.addr;
1437 store_trace_args(&entry[1], &tk->tp, regs, sizeof(*entry), dsize);
1438
1439 trace_event_buffer_commit(&fbuffer);
1440}
1441
1442static void
1443kretprobe_trace_func(struct trace_kprobe *tk, struct kretprobe_instance *ri,
1444 struct pt_regs *regs)

--- 178 unchanged lines hidden (view full) ---

1623 size = ALIGN(__size + sizeof(u32), sizeof(u64));
1624 size -= sizeof(u32);
1625
1626 entry = perf_trace_buf_alloc(size, NULL, &rctx);
1627 if (!entry)
1628 return;
1629
1630 entry->func = (unsigned long)tk->rp.kp.addr;
1631 entry->ret_ip = (unsigned long)ri->ret_addr;
1631 entry->ret_ip = get_kretprobe_retaddr(ri);
1632 store_trace_args(&entry[1], &tk->tp, regs, sizeof(*entry), dsize);
1633 perf_trace_buf_submit(entry, size, rctx, call->event.type, 1, regs,
1634 head, NULL);
1635}
1636NOKPROBE_SYMBOL(kretprobe_perf_func);
1637
1638int bpf_get_kprobe_info(const struct perf_event *event, u32 *fd_type,
1639 const char **symbol, u64 *probe_offset,

--- 458 unchanged lines hidden ---
1632 store_trace_args(&entry[1], &tk->tp, regs, sizeof(*entry), dsize);
1633 perf_trace_buf_submit(entry, size, rctx, call->event.type, 1, regs,
1634 head, NULL);
1635}
1636NOKPROBE_SYMBOL(kretprobe_perf_func);
1637
1638int bpf_get_kprobe_info(const struct perf_event *event, u32 *fd_type,
1639 const char **symbol, u64 *probe_offset,

--- 458 unchanged lines hidden ---