-1

プロセスの pgd 値と start_stack 値を出力しようとしていますが、各プロセスの mm ポインターから値を読み取るときに問題が発生します。最終的な目標は、プロセスを通過してタイトル、pgd、stack_start、および stack_canary の値を出力する LKM を作成することです。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);
  }

}
4

1 に答える 1

0

プロセス リスト内のすべてのプロセスに mm 構造体があるわけではありません。これらの値を参照する前に、mm が null かどうかをテストしてください。

PS CPSC 457 宿題?

于 2013-11-07T03:38:03.137 に答える