You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Linux 5.15内核模块中使用Kprobe拦截_do_filp_open时,struct filename的name与uptr字段差异咨询

Linux 5.15内核模块中使用Kprobe拦截_do_filp_open时,struct filename的name与uptr字段差异咨询

大家好,我正在开发基于Linux 5.15版本的内核模块,想要给_do_filp_open函数做个包装器,用来检查被打开文件的路径。我用Kprobe机制来拦截这个函数的调用,代码如下:

static struct kprobe kp = {
    .symbol_name = "_do_filp_open",
    .pre_handler = sys_open_wrapper,
};

static int init_function(void) {
    int ret;
    printk("%s: initializing\n",MODNAME);
    ret = register_kprobe(&kp);
    // 此处省略后续处理代码
}

目前已经能正常触发包装器的预执行逻辑了。现在我需要获取被打开文件的完整路径,发现_do_filp_open的参数里包含一个struct filename结构,它的定义是这样的:

struct filename {
    const char      *name;  /* pointer to actual string */
    const __user char   *uptr;  // 省略其他字段
};

我想请教下,这个结构里的name和uptr字段到底有什么区别?在我这种Kprobe拦截的场景下,应该优先使用哪个字段来获取文件路径呢?

备注:内容来源于stack exchange,提问作者ma4stro

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.17 10:48:03