Я пытаюсь подключить некоторые функции ядра, такие как kmem_cache_alloc в Arm64 linux5.7 (эта версия имеет CONFIG_DYNAMIC_FTRACE_WITH_REGS в Arm64). Но я всегда вхожу в бесконечный цикл при вызове функции.
Поэтому я упрощаю код и пишу демо-версию для перехвата _do_fork ниже, на x86-64 код в порядке, и та часть, которая должен прекратить цикл, работает нормально. Небольшая деталь: ftrace_set_filter_ip не работает в Arm64, но ftrace_set_filter работает хорошо.
Я пытаюсь подключить некоторые функции ядра, такие как kmem_cache_alloc в Arm64 linux5.7 (эта версия имеет CONFIG_DYNAMIC_FTRACE_WITH_REGS в Arm64). Но я всегда вхожу в бесконечный цикл при вызове функции. Поэтому я упрощаю код и пишу демо-версию для перехвата _do_fork ниже, на x86-64 код в порядке, и та часть, которая должен прекратить цикл, работает нормально. Небольшая деталь: ftrace_set_filter_ip не работает в Arm64, но ftrace_set_filter работает хорошо. [code]asmlinkage long (*original_do_fork)(unsigned long clone_flags,...);
asmlinkage long hooked_do_fork(unsigned long clone_flags, unsigned long stack_start, unsigned long stack_size, int __user *parent_tidptr, int __user *child_tidptr, unsigned long tls) { printk("hooked_do_fork called!\n"); return original_do_fork(clone_flags, stack_start, stack_size, parent_tidptr, child_tidptr, tls); }