微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在内核模块中找到给定袜子的 task_struct?

如何解决如何在内核模块中找到给定袜子的 task_struct?

有没有人知道我如何(有效地)为内核模块(即创建给定网络层套接字的进程)中的给定 struct sock 获取 struct task_struct ?

如果我遗漏了明显的内容,我深表歉意,这可能是因为我对内核开发还很陌生。但我一直试图找到那个链接好几天了。我最大的希望是使用 sk->sk_socket->file->f_owner.pid。然后我可以使用 f_getown() 来获取 pid 并从那里获取。 但不知何故,这个想法没有奏效,至少对于 AF_INET 类型的套接字。从 __sock_socket() 中的内核代码调用函数来看,似乎 f_owner 成员从未指向 current。

所以我认为 file->f_owner 可能不应该再使用了,但我没有找到任何此类信息。实际上,在我的搜索过程中,我发现 sock_ioctl() 正在使用 f_setown() 和 f_getown()。所以 file->f_owner 似乎并没有过时。这就引出了我的第二个问题:如果 file->f_owner 没有过时,为什么不在套接字创建期间设置它?

从那时起,我就一直陷入死胡同。任何正确方向的提示将不胜感激。 - 非常感谢。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。