1
- /* Upstream: https://github.com/torvalds/linux/blob/v4.16/samples/kprobes/kprobe_example.c */
2
-
3
1
/*
4
2
* NOTE: This example is works on x86 and powerpc.
5
3
* Here's a sample kernel module showing the use of kprobes to dump a
@@ -29,28 +27,24 @@ static struct kprobe kp = {
29
27
static int handler_pre (struct kprobe * p , struct pt_regs * regs )
30
28
{
31
29
#ifdef CONFIG_X86
32
- pr_info ("<%s> pre_handler: p->addr = 0x%p , ip = %lx, flags = 0x%lx\n" ,
30
+ pr_info ("<%s> pre_handler: p->addr = 0x%px , ip = %lx, flags = 0x%lx\n" ,
33
31
p -> symbol_name , p -> addr , regs -> ip , regs -> flags );
34
32
#endif
35
33
#ifdef CONFIG_PPC
36
- pr_info ("<%s> pre_handler: p->addr = 0x%p , nip = 0x%lx, msr = 0x%lx\n" ,
34
+ pr_info ("<%s> pre_handler: p->addr = 0x%px , nip = 0x%lx, msr = 0x%lx\n" ,
37
35
p -> symbol_name , p -> addr , regs -> nip , regs -> msr );
38
36
#endif
39
37
#ifdef CONFIG_MIPS
40
- pr_info ("<%s> pre_handler: p->addr = 0x%p , epc = 0x%lx, status = 0x%lx\n" ,
38
+ pr_info ("<%s> pre_handler: p->addr = 0x%px , epc = 0x%lx, status = 0x%lx\n" ,
41
39
p -> symbol_name , p -> addr , regs -> cp0_epc , regs -> cp0_status );
42
40
#endif
43
- #ifdef CONFIG_TILEGX
44
- pr_info ("<%s> pre_handler: p->addr = 0x%p, pc = 0x%lx, ex1 = 0x%lx\n" ,
45
- p -> symbol_name , p -> addr , regs -> pc , regs -> ex1 );
46
- #endif
47
41
#ifdef CONFIG_ARM64
48
- pr_info ("<%s> pre_handler: p->addr = 0x%p , pc = 0x%lx,"
42
+ pr_info ("<%s> pre_handler: p->addr = 0x%px , pc = 0x%lx,"
49
43
" pstate = 0x%lx\n" ,
50
44
p -> symbol_name , p -> addr , (long )regs -> pc , (long )regs -> pstate );
51
45
#endif
52
46
#ifdef CONFIG_S390
53
- pr_info ("<%s> pre_handler: p->addr, 0x%p , ip = 0x%lx, flags = 0x%lx\n" ,
47
+ pr_info ("<%s> pre_handler: p->addr, 0x%px , ip = 0x%lx, flags = 0x%lx\n" ,
54
48
p -> symbol_name , p -> addr , regs -> psw .addr , regs -> flags );
55
49
#endif
56
50
@@ -63,27 +57,23 @@ static void handler_post(struct kprobe *p, struct pt_regs *regs,
63
57
unsigned long flags )
64
58
{
65
59
#ifdef CONFIG_X86
66
- pr_info ("<%s> post_handler: p->addr = 0x%p , flags = 0x%lx\n" ,
60
+ pr_info ("<%s> post_handler: p->addr = 0x%px , flags = 0x%lx\n" ,
67
61
p -> symbol_name , p -> addr , regs -> flags );
68
62
#endif
69
63
#ifdef CONFIG_PPC
70
- pr_info ("<%s> post_handler: p->addr = 0x%p , msr = 0x%lx\n" ,
64
+ pr_info ("<%s> post_handler: p->addr = 0x%px , msr = 0x%lx\n" ,
71
65
p -> symbol_name , p -> addr , regs -> msr );
72
66
#endif
73
67
#ifdef CONFIG_MIPS
74
- pr_info ("<%s> post_handler: p->addr = 0x%p , status = 0x%lx\n" ,
68
+ pr_info ("<%s> post_handler: p->addr = 0x%px , status = 0x%lx\n" ,
75
69
p -> symbol_name , p -> addr , regs -> cp0_status );
76
70
#endif
77
- #ifdef CONFIG_TILEGX
78
- pr_info ("<%s> post_handler: p->addr = 0x%p, ex1 = 0x%lx\n" ,
79
- p -> symbol_name , p -> addr , regs -> ex1 );
80
- #endif
81
71
#ifdef CONFIG_ARM64
82
- pr_info ("<%s> post_handler: p->addr = 0x%p , pstate = 0x%lx\n" ,
72
+ pr_info ("<%s> post_handler: p->addr = 0x%px , pstate = 0x%lx\n" ,
83
73
p -> symbol_name , p -> addr , (long )regs -> pstate );
84
74
#endif
85
75
#ifdef CONFIG_S390
86
- pr_info ("<%s> pre_handler: p->addr, 0x%p , flags = 0x%lx\n" ,
76
+ pr_info ("<%s> pre_handler: p->addr, 0x%px , flags = 0x%lx\n" ,
87
77
p -> symbol_name , p -> addr , regs -> flags );
88
78
#endif
89
79
}
@@ -95,7 +85,7 @@ static void handler_post(struct kprobe *p, struct pt_regs *regs,
95
85
*/
96
86
static int handler_fault (struct kprobe * p , struct pt_regs * regs , int trapnr )
97
87
{
98
- pr_info ("fault_handler: p->addr = 0x%p , trap #%dn" , p -> addr , trapnr );
88
+ pr_info ("fault_handler: p->addr = 0x%px , trap #%dn" , p -> addr , trapnr );
99
89
/* Return 0 because we don't handle the fault. */
100
90
return 0 ;
101
91
}
@@ -112,14 +102,14 @@ static int __init kprobe_init(void)
112
102
pr_err ("register_kprobe failed, returned %d\n" , ret );
113
103
return ret ;
114
104
}
115
- pr_info ("Planted kprobe at %p \n" , kp .addr );
105
+ pr_info ("Planted kprobe at %px \n" , kp .addr );
116
106
return 0 ;
117
107
}
118
108
119
109
static void __exit kprobe_exit (void )
120
110
{
121
111
unregister_kprobe (& kp );
122
- pr_info ("kprobe at %p unregistered\n" , kp .addr );
112
+ pr_info ("kprobe at %px unregistered\n" , kp .addr );
123
113
}
124
114
125
115
module_init (kprobe_init )
0 commit comments