1
#include <linux/module.h>
2
#include <linux/init.h>
3
#include <linux/kprobes.h>
4
#include <linux/kallsyms.h>
7
struct jprobe_mapping_elem {
13
void jp_ecryptfs_kill_block_super(struct super_block *sb)
15
printk(KERN_INFO "sb = [0x%p]\n", sb);
19
struct jprobe_mapping_elem jprobe_mapping[] = {
20
{NULL, "ecryptfs_kill_block_super", jp_ecryptfs_kill_block_super},
23
static int __init test_jprobe_init(void)
27
for (i = 0; i < ARRAY_SIZE(jprobe_mapping); i++) {
28
jprobe_mapping[i].jp = kmalloc(sizeof(struct jprobe),
30
jprobe_mapping[i].jp->entry = jprobe_mapping[i].fp;
31
jprobe_mapping[i].jp->kp.addr = (kprobe_opcode_t *)
32
kallsyms_lookup_name(jprobe_mapping[i].symbol);
33
if (jprobe_mapping[i].jp->kp.addr == NULL) {
34
printk(KERN_NOTICE "Unable to find symbol [%s]\n",
35
jprobe_mapping[i].symbol);
38
register_jprobe(jprobe_mapping[i].jp);
43
static void __exit test_jprobe_exit(void)
47
for (i = 0; i < ARRAY_SIZE(jprobe_mapping); i++) {
48
unregister_jprobe(jprobe_mapping[i].jp);
49
kfree(jprobe_mapping[i].jp);
53
module_init(test_jprobe_init);
54
module_exit(test_jprobe_exit);
55
MODULE_LICENSE("GPL");