mrpre 发表于 2016-11-29 11:02

回复 15# mordorwww

哥们你找到在哪里更新进程页目录了吗,我也有这个疑问。
我一个进程在系统调用中调用了vmalloc, vmalloc只更新了init_mm的页目录、页表;并没有更新进程的页目录和页表。

    g_v_pk = 1;
    ptr = vmalloc(PAGE_SIZE);
    if(ptr)
    {
      *((u32*)ptr) = 1;
      vfree(ptr);
    }
    g_v_pk = 0;


我在 do_page_fault 时加入
    if(g_v_pk)
    {
      printk("do_page_fault address:%lx\n",address);
    }


神奇的是,我在给ptr赋值时,没有产生缺页中断。

mrpre 发表于 2016-11-29 11:16

回复 21# mrpre

更奇怪的是,执行了*((u32*)ptr) = 1;

之后,进程对应的页目录还是空。。。我cpu是mips,难道检测到地址是vmalloc的地址,就直接查询了init_mm页表?
页: 1 2 [3]
查看完整版本: 开始研究4.4.30内核了