diff options
Diffstat (limited to 'kernel/trace/trace_kprobe.c')
| -rw-r--r-- | kernel/trace/trace_kprobe.c | 27 |
1 files changed, 11 insertions, 16 deletions
diff --git a/kernel/trace/trace_kprobe.c b/kernel/trace/trace_kprobe.c index 21b81a41dae5..919e0ddd8fcc 100644 --- a/kernel/trace/trace_kprobe.c +++ b/kernel/trace/trace_kprobe.c | |||
| @@ -459,16 +459,14 @@ static int __register_trace_kprobe(struct trace_kprobe *tk) | |||
| 459 | if (ret == 0) | 459 | if (ret == 0) |
| 460 | tk->tp.flags |= TP_FLAG_REGISTERED; | 460 | tk->tp.flags |= TP_FLAG_REGISTERED; |
| 461 | else { | 461 | else { |
| 462 | pr_warning("Could not insert probe at %s+%lu: %d\n", | 462 | pr_warn("Could not insert probe at %s+%lu: %d\n", |
| 463 | trace_kprobe_symbol(tk), trace_kprobe_offset(tk), ret); | 463 | trace_kprobe_symbol(tk), trace_kprobe_offset(tk), ret); |
| 464 | if (ret == -ENOENT && trace_kprobe_is_on_module(tk)) { | 464 | if (ret == -ENOENT && trace_kprobe_is_on_module(tk)) { |
| 465 | pr_warning("This probe might be able to register after" | 465 | pr_warn("This probe might be able to register after target module is loaded. Continue.\n"); |
| 466 | "target module is loaded. Continue.\n"); | ||
| 467 | ret = 0; | 466 | ret = 0; |
| 468 | } else if (ret == -EILSEQ) { | 467 | } else if (ret == -EILSEQ) { |
| 469 | pr_warning("Probing address(0x%p) is not an " | 468 | pr_warn("Probing address(0x%p) is not an instruction boundary.\n", |
| 470 | "instruction boundary.\n", | 469 | tk->rp.kp.addr); |
| 471 | tk->rp.kp.addr); | ||
| 472 | ret = -EINVAL; | 470 | ret = -EINVAL; |
| 473 | } | 471 | } |
| 474 | } | 472 | } |
| @@ -529,7 +527,7 @@ static int register_trace_kprobe(struct trace_kprobe *tk) | |||
| 529 | /* Register new event */ | 527 | /* Register new event */ |
| 530 | ret = register_kprobe_event(tk); | 528 | ret = register_kprobe_event(tk); |
| 531 | if (ret) { | 529 | if (ret) { |
| 532 | pr_warning("Failed to register probe event(%d)\n", ret); | 530 | pr_warn("Failed to register probe event(%d)\n", ret); |
| 533 | goto end; | 531 | goto end; |
| 534 | } | 532 | } |
| 535 | 533 | ||
| @@ -564,10 +562,9 @@ static int trace_kprobe_module_callback(struct notifier_block *nb, | |||
| 564 | __unregister_trace_kprobe(tk); | 562 | __unregister_trace_kprobe(tk); |
| 565 | ret = __register_trace_kprobe(tk); | 563 | ret = __register_trace_kprobe(tk); |
| 566 | if (ret) | 564 | if (ret) |
| 567 | pr_warning("Failed to re-register probe %s on" | 565 | pr_warn("Failed to re-register probe %s on %s: %d\n", |
| 568 | "%s: %d\n", | 566 | trace_event_name(&tk->tp.call), |
| 569 | trace_event_name(&tk->tp.call), | 567 | mod->name, ret); |
| 570 | mod->name, ret); | ||
| 571 | } | 568 | } |
| 572 | } | 569 | } |
| 573 | mutex_unlock(&probe_lock); | 570 | mutex_unlock(&probe_lock); |
| @@ -1336,16 +1333,14 @@ static __init int init_kprobe_trace(void) | |||
| 1336 | 1333 | ||
| 1337 | /* Event list interface */ | 1334 | /* Event list interface */ |
| 1338 | if (!entry) | 1335 | if (!entry) |
| 1339 | pr_warning("Could not create tracefs " | 1336 | pr_warn("Could not create tracefs 'kprobe_events' entry\n"); |
| 1340 | "'kprobe_events' entry\n"); | ||
| 1341 | 1337 | ||
| 1342 | /* Profile interface */ | 1338 | /* Profile interface */ |
| 1343 | entry = tracefs_create_file("kprobe_profile", 0444, d_tracer, | 1339 | entry = tracefs_create_file("kprobe_profile", 0444, d_tracer, |
| 1344 | NULL, &kprobe_profile_ops); | 1340 | NULL, &kprobe_profile_ops); |
| 1345 | 1341 | ||
| 1346 | if (!entry) | 1342 | if (!entry) |
| 1347 | pr_warning("Could not create tracefs " | 1343 | pr_warn("Could not create tracefs 'kprobe_profile' entry\n"); |
| 1348 | "'kprobe_profile' entry\n"); | ||
| 1349 | return 0; | 1344 | return 0; |
| 1350 | } | 1345 | } |
| 1351 | fs_initcall(init_kprobe_trace); | 1346 | fs_initcall(init_kprobe_trace); |
