linux 错误:修改发布:未定义内核5.10.113的“vfs_fstatat”

jtoj6r0c  于 2022-12-03  发布在  Linux
关注(0)|答案(1)|浏览(685)

我已经开发了一个内核模块,已经建立在内核版本4.9和5.4,和工程文件。但当我试图建立内核版本5.10.113,我得到了以下错误:

ERROR: modpost: "vfs_fstatat" [/home/jarvisbao/***/build/kernel/shman/shman.ko] undefined!

我在函数中使用了vfs_stat函数,如下所示:

int file_stat(char *path, struct kstat *st){
    mm_segment_t oldfs;
    int ret=0;
#if LINUX_VERSION_CODE < KERNEL_VERSION(5,0,0)
    oldfs = get_fs();
    set_fs( get_ds() );
#elif LINUX_VERSION_CODE < KERNEL_VERSION(5,10,0)
    oldfs = get_fs();
    set_fs( KERNEL_DS );
#else
    oldfs = force_uaccess_begin();
#endif
    ret = vfs_stat(path, st);
#if LINUX_VERSION_CODE < KERNEL_VERSION(5,10,0)
    set_fs(oldfs);
#else
    force_uaccess_end(oldfs);
#endif
    return ret;
}

内核版本5.10和5.4之间调用vfs_stat好像有些不同,但我不知道。

bmp9r5qi

bmp9r5qi1#

vfs_fstatat的实现包含在fs/stat. c中。要成功编译,应在实现后添加EXPORT_SYMBOL(vfs_fstatat)。

相关问题