int ret;
printk("register_syscall: %s\n", get_sys_name(id));
+ if (ksp[id].jp.kp.addr == NULL)
+ return 0;
+
ret = dbi_register_jprobe(&ksp[id].jp);
if (ret)
return ret;
{
printk("unregister_syscall: %s\n", get_sys_name(id));
+ if (ksp[id].jp.kp.addr == NULL)
+ return 0;
+
dbi_unregister_kretprobe(&ksp[id].rp);
dbi_unregister_jprobe(&ksp[id].jp);
static int __init init_ks_feature(void)
{
int i;
- unsigned long addr;
+ unsigned long addr, ni_syscall;
char *name;
+ ni_syscall = swap_ksyms("sys_ni_syscall");
+
for (i = 0; i < syscall_name_cnt; ++i) {
name = get_sys_name(i);
addr = swap_ksyms(name);
return -EFAULT;
}
+ if (ni_syscall == addr) {
+ printk("INFO: %s is not install\n", get_sys_name(i));
+ addr = 0;
+ }
+
ksp[i].jp.kp.addr = ksp[i].rp.kp.addr = addr;
}