static struct kprobe kp={.symbol_name = "kallsyms_lookup_name",};int get_kallsyms_lookup_name(void){ int ret = register_kprobe(&kp); if(ret < 0){ printk("[err] %s. register_kprobe failed, ret:%d\n", __FUNCTION__, ret); return ret; } printk("[info] %s. kprobe at addr:%p, ret:%d\n", __FUNCTION__, kp.addr, ret); orig_kallsyms_lookup_name = (kallsyms_lookup_name_t)(void*)kp.addr; unregister_kprobe(&kp); return ret;}static int __init init(void){ if(get_kallsyms_lookup_name() < 0) { printk("[err] %s failed!\n", __FUNCTION__); return -1; }___vmalloc_node_range = (void *)orig_kallsyms_lookup_name("__vmalloc_node");if(!___vmalloc_node_range) printk("error"); return -1;}
but it cant get vmalloc_node_range ,just only vmalloc_node.
#define START _AC(0xffffffffa0000000, UL)#define END _AC(0xffffffffff000000, UL)
i must request memory between START and END for my module.