CentOS 7.2上的脏CoW缓解 - 语义错误:同时解析探测点

时间:2016-10-22 14:52:34

标签: linux system-calls centos7 rhel7 dirtyread

我正在努力在我的系统上实现一个临时补丁(非持久性),如此处所述(在等待官方发行版内核时):

https://bugzilla.redhat.com/show_bug.cgi?id=1384344#c13

我已经在写入脚本上测试了一个脏副本,以便在我的系统上测试此错误的解决方案,但请注意我收到了语义错误,并且该错误在我的系统上仍然有效:

SuperUser Shell ~/> # stap -g -p 4 fix.stp 
semantic error: while resolving probe point: identifier 'syscall' at fix.stp:5:7
        source: probe syscall.ptrace {  // includes compat ptrace as well
                      ^

semantic error: no match

Pass 2: analysis failed.  [man error::pass2]
SuperUser Shell ~/>

用颜色(如果那是你的事):

enter image description here

阅读本文:

https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/5/html/SystemTap_Beginners_Guide/errors.html

我看到一个简短的解释:

  

语义错误:探测点不匹配,同时解析探测点foo
  无法解析事件/处理函数foo   总之,出于各种原因。当发生此错误   脚本包含事件kernel.function(" blah"),而blah则没有   存在。在某些情况下,错误也可能意味着脚本包含   无效的内核文件名或源行号。

问题:

  • 这基本上说明syscall内核函数无法识别,对吗?
  • 有没有人在CentOS 7.x上成功实现过这个临时解决方案呢?

感谢您的帮助

PS:对不起,如果这看起来有点像小伙子(我还没有完全理解这个热门修补程序)。

1 个答案:

答案 0 :(得分:3)

是的,我已成功在CentOS 7上实施此临时缓解措施。

如该bugzilla条目中的comments之一所述,您需要为内核安装systemtap和debuginfo以使此缓解工作。

给出的命令是:

yum install systemtap yum-utils
debuginfo-install kernel-$(uname -r)

根据你发布的内容,大概你已经有了systemtap,但是你得到的错误表明你需要debuginfo包。上面的第二个命令应该安装正确的东西;您也可以从http://debuginfo.centos.org/手动获取RPM(这是我最终要做的)

顺便说一句,使用systemtap的这种缓解并不是一个真正的解决方案,它只是使概念证明程序之一失败。值得做,但不能替代真正的补丁内核。

我不明白为什么Red Hat和CentOS尚未推出补丁内核软件包,Ubuntu和其他人几天前就已经有了更新。什么是持有?