【发布时间】:2018-01-24 14:51:17
【问题描述】:
我想从 eBPF 程序中的任务结构中检索 sessionid。我的 eBPF 程序中有以下代码:
struct task_struct *task;
u32 sessionid;
task = (struct task_struct *)bpf_get_current_task();
sessionid = task->sessionid;
这会运行,但 sessionid 总是以 -1 结束。我在this 中读到答案,我可以使用task_session 来检索它,但我收到有关无效内存访问的错误。我相信我需要使用bpf_probe_read 将task 指向的task_struct 移动到堆栈上,但我无法让它工作。我有什么遗漏吗?
【问题讨论】:
-
如果没有看到您的代码,很难确切地说出为什么会发生这种情况。请注意,eBPF 不能调用任意核函数。
-
是的,我想我本可以更清楚地了解我是如何构建程序/如何注入它的——我设法以不同的方式获得了 sessionid,所以我自己给出了答案。我现在正在尝试这样做:p stackoverflow.com/questions/48447855/…
标签: linux linux-kernel bpf ebpf