我正在尝试打印进程 pgd 和 start_stack 值,但是当我从每个进程的 mm 指针读取值时出现问题。最终目标是创建一个 LKM,它将通过这些过程并打印标题、pgd、stack_start 和 stack_canary 值。我感觉我需要锁定某些东西才能查看 mm 数据,但我找不到我需要做的事情。任何朝着正确方向的帮助都会非常有帮助。以下代码读取进程信息:
void read_proc(){
struct task_struct *p;
struct mm_struct *mm;
int len = 0;
for_each_process(p) {
task_lock(p);
mm = p->mm;
down_write(&mm->mmap_sem);
printk(KERN_INFO "Proc Q4: Name: %s Stack Canary: 0x%X Start Stack: 0x%X PGD:
0x%X\n",p->comm,p->stack_canary, mm->start_stack), mm->pgd->pgd);
up_write(&mm->mmap_sem);
task_unlock(p);
}
}