内存管理 – 内核模块在从一个进程调用时,从另一个进程写入页面

内存管理 – 内核模块在从一个进程调用时,从另一个进程写入页面,第1张

概述我正在编写一个内核模块,由进程p1调用以覆盖属于目标进程p2的数据页. 首先,在内核模块内部并且在响应p1发出的proc文件系统的写事件时.我使用目标进程的进程id(p2)来搜索后者的任务结构(p2_task). 要搜索我使用get_user_pages()的特定页面,显然要调用它(p2_task-> mm).然后我在前一个函数返回的页面上调用了kmap().一旦我得到指针,我就使用典型的存储器函 我正在编写一个内核模块,由进程p1调用以覆盖属于目标进程p2的数据页.

首先,在内核模块内部并且在响应p1发出的proc文件系统的写事件时.我使用目标进程的进程ID(p2)来搜索后者的任务结构(p2_task).

要搜索我使用get_user_pages()的特定页面,显然要调用它(p2_task-> mm).然后我在前一个函数返回的页面上调用了kmap().一旦我得到指针,我就使用典型的存储器函数(memset())来写入该存储器.最后叫做kunmap().

但是,一旦进程再次开始运行,我就可以看到我所做的对目标进程p2没有影响.

我不确定我做错了什么.有人可以帮忙吗?

我怀疑在回应来自p2的请求时,某种程度上你无法写入内存属于进程p2.从这里开始,我们处于不同的背景下.

这是真的,如果不是我能检查的其他内容.如果是问题,反正我可以解决这个问题吗?

解决方法 也许你想写的页面是只读的?
在英特尔架构上,您可以设置写保护,请参阅 http://badishi.com/kernel-writing-to-read-only-memory/ 总结

以上是内存溢出为你收集整理的内存管理 – 内核模块在从一个进程调用时,从另一个进程写入页面全部内容,希望文章能够帮你解决内存管理 – 内核模块在从一个进程调用时,从另一个进程写入页面所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/1047682.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-25
下一篇 2022-05-25

发表评论

登录后才能评论

评论列表(0条)

保存