从Linux上的内核直接访问用户内存

从Linux上的内核直接访问用户内存,第1张

概述我有一个用户模式进程和内核模块.现在我想从内核读取usermode进程的某些区域,但有一个问题:没有复制用户模式内存和VA的简单访问. 所以我们拥有:目标进程的task_struct,其他相关结构(如mm_struct,vma_struct)和虚拟地址,如0x0070abcd,我想要读取或者更确切地映射到我的内核模块. 我可以使用get_user_pages获取所需内存区域的页面列表,但下一步是什 我有一个用户模式进程和内核模块.现在我想从内核读取usermode进程的某些区域,但有一个问题:没有复制用户模式内存和VA的简单访问.
所以我们拥有:目标进程的task_struct,其他相关结构(如mm_struct,vma_struct)和虚拟地址,如0x0070abcd,我想要读取或者更确切地映射到我的内核模块.

我可以使用get_user_pages获取所需内存区域的页面列表,但下一步是什么?我应该以某种方式将页面映射到内核中,然后尝试将它们作为连续内存区域读取,还是有更好的解决方案?

解决方法 问题是“寻找”用户空间需要锁定大量的东西.所以你做一个简短的副本比把所有东西锁定任意时间更好.您的用户空间进程可能未被VM映射到当前cpu.实际上,它可能完全被换成磁盘,在另一个cpu上运行,在它自己的内核调用中等.

Linux Kernel: copy_from_user – struct with pointers

总结

以上是内存溢出为你收集整理的从Linux上的内核直接访问用户内存全部内容,希望文章能够帮你解决从Linux上的内核直接访问用户内存所遇到的程序开发问题。

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

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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存