发布网友 发布时间:2022-04-23 08:59
共4个回答
热心网友 时间:2022-06-18 18:13
sorry,可能是我没有说清楚,被修改的代码是tcp的一个函数。这个函数是在内核初始化的时候被改写了一部分(已经验证过了,确实是改写)。当系统启动完成后,当有tcp链接时就会造成oops,所以看oops的调用栈是无意义的。我现在能想到的办法就是通过修改MMU的配置,把内核的text segment设置为readonly,注意不是修改data segment部分。所以也不会造成kernel unable to startup issue.我曾经在vxworks系统下做过类似的mmu配置,但linux系统我还不太熟悉,不知道怎么修改。so everyone, any ideas would be welcome~~热心网友 时间:2022-06-18 18:13
oops 只有被改写后的内容了,而且是在linux初始化很早的时候改写的。我想了一下,只有修改内核代码段属性为readonly才能够抓出来是谁改写的内存。但不知道怎么修改ARM mmu的配置来实现这个功能。<4>[] (sys_read+0x0/0x80) from [] (ret_fast_syscall+0x0/0x2c)<4> r6 = 00000001 r5 = 00000000 r4 = BEFFFD48 <4>Code: ffffffe1 ffffffe3 fffffbff ffffffff (fffff001)热心网友 时间:2022-06-18 18:13
devicemaps_init函数里面,可以参考CONFIG_XIP_KERNEL这段代码的用法,把_text~_etext的页表设置为MT_ROM热心网友 时间:2022-06-18 18:14
就是没有EIP喽?