aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--kernel/trace/trace_kprobe.c27
1 files changed, 10 insertions, 17 deletions
diff --git a/kernel/trace/trace_kprobe.c b/kernel/trace/trace_kprobe.c
index 2e28ee36646f..6178abf3637e 100644
--- a/kernel/trace/trace_kprobe.c
+++ b/kernel/trace/trace_kprobe.c
@@ -942,7 +942,7 @@ static const struct file_operations kprobe_profile_ops = {
942}; 942};
943 943
944/* Kprobe handler */ 944/* Kprobe handler */
945static __kprobes int kprobe_trace_func(struct kprobe *kp, struct pt_regs *regs) 945static __kprobes void kprobe_trace_func(struct kprobe *kp, struct pt_regs *regs)
946{ 946{
947 struct trace_probe *tp = container_of(kp, struct trace_probe, rp.kp); 947 struct trace_probe *tp = container_of(kp, struct trace_probe, rp.kp);
948 struct kprobe_trace_entry *entry; 948 struct kprobe_trace_entry *entry;
@@ -962,7 +962,7 @@ static __kprobes int kprobe_trace_func(struct kprobe *kp, struct pt_regs *regs)
962 event = trace_current_buffer_lock_reserve(&buffer, call->id, size, 962 event = trace_current_buffer_lock_reserve(&buffer, call->id, size,
963 irq_flags, pc); 963 irq_flags, pc);
964 if (!event) 964 if (!event)
965 return 0; 965 return;
966 966
967 entry = ring_buffer_event_data(event); 967 entry = ring_buffer_event_data(event);
968 entry->nargs = tp->nr_args; 968 entry->nargs = tp->nr_args;
@@ -972,11 +972,10 @@ static __kprobes int kprobe_trace_func(struct kprobe *kp, struct pt_regs *regs)
972 972
973 if (!filter_current_check_discard(buffer, call, entry, event)) 973 if (!filter_current_check_discard(buffer, call, entry, event))
974 trace_nowake_buffer_unlock_commit(buffer, event, irq_flags, pc); 974 trace_nowake_buffer_unlock_commit(buffer, event, irq_flags, pc);
975 return 0;
976} 975}
977 976
978/* Kretprobe handler */ 977/* Kretprobe handler */
979static __kprobes int kretprobe_trace_func(struct kretprobe_instance *ri, 978static __kprobes void kretprobe_trace_func(struct kretprobe_instance *ri,
980 struct pt_regs *regs) 979 struct pt_regs *regs)
981{ 980{
982 struct trace_probe *tp = container_of(ri->rp, struct trace_probe, rp); 981 struct trace_probe *tp = container_of(ri->rp, struct trace_probe, rp);
@@ -995,7 +994,7 @@ static __kprobes int kretprobe_trace_func(struct kretprobe_instance *ri,
995 event = trace_current_buffer_lock_reserve(&buffer, call->id, size, 994 event = trace_current_buffer_lock_reserve(&buffer, call->id, size,
996 irq_flags, pc); 995 irq_flags, pc);
997 if (!event) 996 if (!event)
998 return 0; 997 return;
999 998
1000 entry = ring_buffer_event_data(event); 999 entry = ring_buffer_event_data(event);
1001 entry->nargs = tp->nr_args; 1000 entry->nargs = tp->nr_args;
@@ -1006,8 +1005,6 @@ static __kprobes int kretprobe_trace_func(struct kretprobe_instance *ri,
1006 1005
1007 if (!filter_current_check_discard(buffer, call, entry, event)) 1006 if (!filter_current_check_discard(buffer, call, entry, event))
1008 trace_nowake_buffer_unlock_commit(buffer, event, irq_flags, pc); 1007 trace_nowake_buffer_unlock_commit(buffer, event, irq_flags, pc);
1009
1010 return 0;
1011} 1008}
1012 1009
1013/* Event entry printers */ 1010/* Event entry printers */
@@ -1237,7 +1234,7 @@ static int kretprobe_event_show_format(struct ftrace_event_call *call,
1237#ifdef CONFIG_PERF_EVENTS 1234#ifdef CONFIG_PERF_EVENTS
1238 1235
1239/* Kprobe profile handler */ 1236/* Kprobe profile handler */
1240static __kprobes int kprobe_profile_func(struct kprobe *kp, 1237static __kprobes void kprobe_profile_func(struct kprobe *kp,
1241 struct pt_regs *regs) 1238 struct pt_regs *regs)
1242{ 1239{
1243 struct trace_probe *tp = container_of(kp, struct trace_probe, rp.kp); 1240 struct trace_probe *tp = container_of(kp, struct trace_probe, rp.kp);
@@ -1252,11 +1249,11 @@ static __kprobes int kprobe_profile_func(struct kprobe *kp,
1252 size -= sizeof(u32); 1249 size -= sizeof(u32);
1253 if (WARN_ONCE(size > FTRACE_MAX_PROFILE_SIZE, 1250 if (WARN_ONCE(size > FTRACE_MAX_PROFILE_SIZE,
1254 "profile buffer not large enough")) 1251 "profile buffer not large enough"))
1255 return 0; 1252 return;
1256 1253
1257 entry = ftrace_perf_buf_prepare(size, call->id, &rctx, &irq_flags); 1254 entry = ftrace_perf_buf_prepare(size, call->id, &rctx, &irq_flags);
1258 if (!entry) 1255 if (!entry)
1259 return 0; 1256 return;
1260 1257
1261 entry->nargs = tp->nr_args; 1258 entry->nargs = tp->nr_args;
1262 entry->ip = (unsigned long)kp->addr; 1259 entry->ip = (unsigned long)kp->addr;
@@ -1264,12 +1261,10 @@ static __kprobes int kprobe_profile_func(struct kprobe *kp,
1264 entry->args[i] = call_fetch(&tp->args[i].fetch, regs); 1261 entry->args[i] = call_fetch(&tp->args[i].fetch, regs);
1265 1262
1266 ftrace_perf_buf_submit(entry, size, rctx, entry->ip, 1, irq_flags); 1263 ftrace_perf_buf_submit(entry, size, rctx, entry->ip, 1, irq_flags);
1267
1268 return 0;
1269} 1264}
1270 1265
1271/* Kretprobe profile handler */ 1266/* Kretprobe profile handler */
1272static __kprobes int kretprobe_profile_func(struct kretprobe_instance *ri, 1267static __kprobes void kretprobe_profile_func(struct kretprobe_instance *ri,
1273 struct pt_regs *regs) 1268 struct pt_regs *regs)
1274{ 1269{
1275 struct trace_probe *tp = container_of(ri->rp, struct trace_probe, rp); 1270 struct trace_probe *tp = container_of(ri->rp, struct trace_probe, rp);
@@ -1284,11 +1279,11 @@ static __kprobes int kretprobe_profile_func(struct kretprobe_instance *ri,
1284 size -= sizeof(u32); 1279 size -= sizeof(u32);
1285 if (WARN_ONCE(size > FTRACE_MAX_PROFILE_SIZE, 1280 if (WARN_ONCE(size > FTRACE_MAX_PROFILE_SIZE,
1286 "profile buffer not large enough")) 1281 "profile buffer not large enough"))
1287 return 0; 1282 return;
1288 1283
1289 entry = ftrace_perf_buf_prepare(size, call->id, &rctx, &irq_flags); 1284 entry = ftrace_perf_buf_prepare(size, call->id, &rctx, &irq_flags);
1290 if (!entry) 1285 if (!entry)
1291 return 0; 1286 return;
1292 1287
1293 entry->nargs = tp->nr_args; 1288 entry->nargs = tp->nr_args;
1294 entry->func = (unsigned long)tp->rp.kp.addr; 1289 entry->func = (unsigned long)tp->rp.kp.addr;
@@ -1297,8 +1292,6 @@ static __kprobes int kretprobe_profile_func(struct kretprobe_instance *ri,
1297 entry->args[i] = call_fetch(&tp->args[i].fetch, regs); 1292 entry->args[i] = call_fetch(&tp->args[i].fetch, regs);
1298 1293
1299 ftrace_perf_buf_submit(entry, size, rctx, entry->ret_ip, 1, irq_flags); 1294 ftrace_perf_buf_submit(entry, size, rctx, entry->ret_ip, 1, irq_flags);
1300
1301 return 0;
1302} 1295}
1303 1296
1304static int probe_profile_enable(struct ftrace_event_call *call) 1297static int probe_profile_enable(struct ftrace_event_call *call)