1818 * <[email protected] > and Prasanna S Panchamukhi 1919 * <[email protected] > added function-return probes. 2020 */
21+
22+ #define pr_fmt (fmt ) "kprobes: " fmt
23+
2124#include <linux/kprobes.h>
2225#include <linux/hash.h>
2326#include <linux/init.h>
@@ -892,7 +895,7 @@ static void optimize_all_kprobes(void)
892895 optimize_kprobe (p );
893896 }
894897 cpus_read_unlock ();
895- printk ( KERN_INFO "Kprobes globally optimized\n" );
898+ pr_info ( "kprobe jump-optimization is enabled. All kprobes are optimized if possible. \n" );
896899out :
897900 mutex_unlock (& kprobe_mutex );
898901}
@@ -925,7 +928,7 @@ static void unoptimize_all_kprobes(void)
925928
926929 /* Wait for unoptimizing completion */
927930 wait_for_kprobe_optimizer ();
928- printk ( KERN_INFO "Kprobes globally unoptimized \n" );
931+ pr_info ( "kprobe jump-optimization is disabled. All kprobes are based on software breakpoint. \n" );
929932}
930933
931934static DEFINE_MUTEX (kprobe_sysctl_mutex );
@@ -1003,7 +1006,7 @@ static int reuse_unused_kprobe(struct kprobe *ap)
10031006 * unregistered.
10041007 * Thus there should be no chance to reuse unused kprobe.
10051008 */
1006- printk ( KERN_ERR "Error: There should be no unused kprobe here.\n" );
1009+ WARN_ON_ONCE ( 1 );
10071010 return - EINVAL ;
10081011}
10091012
@@ -1040,18 +1043,13 @@ static int __arm_kprobe_ftrace(struct kprobe *p, struct ftrace_ops *ops,
10401043 int ret = 0 ;
10411044
10421045 ret = ftrace_set_filter_ip (ops , (unsigned long )p -> addr , 0 , 0 );
1043- if (ret ) {
1044- pr_debug ("Failed to arm kprobe-ftrace at %pS (%d)\n" ,
1045- p -> addr , ret );
1046+ if (WARN_ONCE (ret < 0 , "Failed to arm kprobe-ftrace at %pS (error %d)\n" , p -> addr , ret ))
10461047 return ret ;
1047- }
10481048
10491049 if (* cnt == 0 ) {
10501050 ret = register_ftrace_function (ops );
1051- if (ret ) {
1052- pr_debug ("Failed to init kprobe-ftrace (%d)\n" , ret );
1051+ if (WARN (ret < 0 , "Failed to register kprobe-ftrace (error %d)\n" , ret ))
10531052 goto err_ftrace ;
1054- }
10551053 }
10561054
10571055 (* cnt )++ ;
@@ -1083,14 +1081,14 @@ static int __disarm_kprobe_ftrace(struct kprobe *p, struct ftrace_ops *ops,
10831081
10841082 if (* cnt == 1 ) {
10851083 ret = unregister_ftrace_function (ops );
1086- if (WARN (ret < 0 , "Failed to unregister kprobe-ftrace (%d)\n" , ret ))
1084+ if (WARN (ret < 0 , "Failed to unregister kprobe-ftrace (error %d)\n" , ret ))
10871085 return ret ;
10881086 }
10891087
10901088 (* cnt )-- ;
10911089
10921090 ret = ftrace_set_filter_ip (ops , (unsigned long )p -> addr , 1 , 0 );
1093- WARN_ONCE (ret < 0 , "Failed to disarm kprobe-ftrace at %pS (%d)\n" ,
1091+ WARN_ONCE (ret < 0 , "Failed to disarm kprobe-ftrace at %pS (error %d)\n" ,
10941092 p -> addr , ret );
10951093 return ret ;
10961094}
@@ -1880,7 +1878,7 @@ unsigned long __kretprobe_trampoline_handler(struct pt_regs *regs,
18801878
18811879 node = node -> next ;
18821880 }
1883- pr_err ("Oops! Kretprobe fails to find correct return address .\n" );
1881+ pr_err ("kretprobe: Return address not found, not execute handler. Maybe there is a bug in the kernel .\n" );
18841882 BUG_ON (1 );
18851883
18861884found :
@@ -2209,8 +2207,7 @@ EXPORT_SYMBOL_GPL(enable_kprobe);
22092207/* Caller must NOT call this in usual path. This is only for critical case */
22102208void dump_kprobe (struct kprobe * kp )
22112209{
2212- pr_err ("Dumping kprobe:\n" );
2213- pr_err ("Name: %s\nOffset: %x\nAddress: %pS\n" ,
2210+ pr_err ("Dump kprobe:\n.symbol_name = %s, .offset = %x, .addr = %pS\n" ,
22142211 kp -> symbol_name , kp -> offset , kp -> addr );
22152212}
22162213NOKPROBE_SYMBOL (dump_kprobe );
@@ -2473,8 +2470,7 @@ static int __init init_kprobes(void)
24732470 err = populate_kprobe_blacklist (__start_kprobe_blacklist ,
24742471 __stop_kprobe_blacklist );
24752472 if (err ) {
2476- pr_err ("kprobes: failed to populate blacklist: %d\n" , err );
2477- pr_err ("Please take care of using kprobes.\n" );
2473+ pr_err ("Failed to populate blacklist (error %d), kprobes not restricted, be careful using them!\n" , err );
24782474 }
24792475
24802476 if (kretprobe_blacklist_size ) {
@@ -2483,7 +2479,7 @@ static int __init init_kprobes(void)
24832479 kretprobe_blacklist [i ].addr =
24842480 kprobe_lookup_name (kretprobe_blacklist [i ].name , 0 );
24852481 if (!kretprobe_blacklist [i ].addr )
2486- printk ( "kretprobe: lookup failed: %s \n" ,
2482+ pr_err ( "Failed to lookup symbol '%s' for kretprobe blacklist. Maybe the target function is removed or renamed. \n" ,
24872483 kretprobe_blacklist [i ].name );
24882484 }
24892485 }
@@ -2687,7 +2683,7 @@ static int arm_all_kprobes(void)
26872683 }
26882684
26892685 if (errors )
2690- pr_warn ("Kprobes globally enabled, but failed to arm %d out of %d probes\n" ,
2686+ pr_warn ("Kprobes globally enabled, but failed to enable %d out of %d probes. Please check which kprobes are kept disabled via debugfs. \n" ,
26912687 errors , total );
26922688 else
26932689 pr_info ("Kprobes globally enabled\n" );
@@ -2730,7 +2726,7 @@ static int disarm_all_kprobes(void)
27302726 }
27312727
27322728 if (errors )
2733- pr_warn ("Kprobes globally disabled, but failed to disarm %d out of %d probes\n" ,
2729+ pr_warn ("Kprobes globally disabled, but failed to disable %d out of %d probes. Please check which kprobes are kept enabled via debugfs. \n" ,
27342730 errors , total );
27352731 else
27362732 pr_info ("Kprobes globally disabled\n" );
0 commit comments