免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 5747 | 回复: 11
打印 上一主题 下一主题

ARM架构Linux Kernel oops问题请教 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-01-20 10:31 |只看该作者 |倒序浏览
大家好

最近遇到kernel oops 的问题,发现linux kernel的代码段被改写了。想把linux kernel 代码段设置为readonly的,不知道ARM CPU支不支持?

root@Firebox:/etc/runlevel/2# cat /proc/cpuinfo
Processor       : XScale-IXP43x Family rev 1 (v5b)
BogoMIPS        : 665.19
Features        : swp half thumb fastmult edsp

论坛徽章:
5
摩羯座
日期:2014-07-22 09:03:552015元宵节徽章
日期:2015-03-06 15:50:392015亚冠之大阪钢巴
日期:2015-06-12 16:01:352015年中国系统架构师大会
日期:2015-06-29 16:11:2815-16赛季CBA联赛之四川
日期:2018-12-17 14:10:21
2 [报告]
发表于 2010-01-20 11:43 |只看该作者
最好看一下为什么被改写才是王道
遇问题就要解决问题绕过问题永远不会进步
我们合作的公司的人一遇到我们给提得问题时就让我们绕过问题的时候,我就想辞职,太操蛋了

论坛徽章:
0
3 [报告]
发表于 2010-01-20 15:50 |只看该作者
不懂就不要乱说,设置为readonly的目的就是为了找出谁改写的内存。

论坛徽章:
0
4 [报告]
发表于 2010-01-20 15:57 |只看该作者

回复 #3 python56387 的帖子

直接从Oops看是哪段代码出的问题。

论坛徽章:
0
5 [报告]
发表于 2010-01-20 16:13 |只看该作者
oops 只有被改写后的内容了,而且是在linux初始化很早的时候改写的。
我想了一下,只有修改内核代码段属性为readonly才能够抓出来是谁改写的内存。

但不知道怎么修改ARM mmu的配置来实现这个功能。

<4>[<c007ea20>] (sys_read+0x0/0x80) from [<c0020be0>] (ret_fast_syscall+0x0/0x2c)
<4> r6 = 00000001  r5 = 00000000  r4 = BEFFFD48
<4>Code: ffffffe1 ffffffe3 fffffbff ffffffff (fffff001)

论坛徽章:
0
6 [报告]
发表于 2010-01-20 16:48 |只看该作者
就是没有EIP喽?

论坛徽章:
5
摩羯座
日期:2014-07-22 09:03:552015元宵节徽章
日期:2015-03-06 15:50:392015亚冠之大阪钢巴
日期:2015-06-12 16:01:352015年中国系统架构师大会
日期:2015-06-29 16:11:2815-16赛季CBA联赛之四川
日期:2018-12-17 14:10:21
7 [报告]
发表于 2010-01-20 17:55 |只看该作者
原帖由 python56387 于 2010-1-20 16:13 发表
oops 只有被改写后的内容了,而且是在linux初始化很早的时候改写的。
我想了一下,只有修改内核代码段属性为readonly才能够抓出来是谁改写的内存。

但不知道怎么修改ARM mmu的配置来实现这个功能。

[] ( ...

内核代码段被改,你觉得可能性有多少?
我确实不懂你在说什么,谢谢
你写的程序和能改kernel的代码,不多吧?
一个一个去不就知道了?
我不知道怎么改内核代码段的属性为readonly,但是我知道,你想做的就是找到问题

论坛徽章:
0
8 [报告]
发表于 2010-01-21 11:55 |只看该作者
既然提示是sys_read造成的~
呢么可以看看是哪个程序中的哪个read操作造成的~
把不必要的程序全部删掉,做最小系统,然后进行排查~
对于用户层来说~ 内核段的内存是不可访问的~ 连read的方法都没有~ 除非做映射~
如果真的吧内核段的内存设置为readonly了 连内核都改不了自己...... 呢内核肯定就死了~

评分

参与人数 1可用积分 +30 收起 理由
T-Bagwell + 30 我很赞同

查看全部评分

论坛徽章:
0
9 [报告]
发表于 2010-01-21 17:42 |只看该作者
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~~:wink:

论坛徽章:
5
摩羯座
日期:2014-07-22 09:03:552015元宵节徽章
日期:2015-03-06 15:50:392015亚冠之大阪钢巴
日期:2015-06-12 16:01:352015年中国系统架构师大会
日期:2015-06-29 16:11:2815-16赛季CBA联赛之四川
日期:2018-12-17 14:10:21
10 [报告]
发表于 2010-01-22 11:47 |只看该作者
Linux和Vxworks应该差不多,我没接触过,不过同事们都这么说
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP