gpt4 book ai didi

linux - 在 Linux 上从内核直接访问用户内存

转载 作者:IT王子 更新时间:2023-10-29 00:41:33 28 4
gpt4 key购买 nike

我有一个用户模式进程和内核模块。现在我想从内核读取用户模式进程的某些区域,但有一个问题:没有用户模式内存的复制和 VA 的简单访问。所以我们拥有:目标进程的 task_struct、其他相关结构(如 mm_struct、vma_struct)和虚拟地址,如 0x0070abcd,我想读取或以某种方式映射到我的内核模块。

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

最佳答案

问题是“查看”用户空间需要锁定大量内容。因此,最好做一份简短的副本,而不是将所有内容锁定任意时间。您的用户空间进程可能未映射到当前 CPU。事实上,它可能会完全换出到磁盘,在另一个 CPU 上运行,在它自己的内核调用过程中等等。

Linux Kernel: copy_from_user - struct with pointers

关于linux - 在 Linux 上从内核直接访问用户内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14319576/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com