在尝试将 SukiSU Ultra 集成到 5.9 版本以下的内核时,遇到了构建失败的问题。具体来说,在文件 pkg_observer.c 中,需要使用 handle_inode_event 函数,但是 5.9 版本以下的内核中不存在这个函数。这导致了构建过程中出现错误,并阻止了内核的构建成功。以下是详细的错误日志和相关信息。

错误日志

../drivers/kernelsu/pkg_observer.c:41:3: error: field designator 'handle_inode_event' does not refer to any field in type 'const struct fsnotify_ops'; did you mean 'handle_event'?
.handle_inode_event = ksu_handle_inode_event,
^~~~~~~~~~~~~~~~~~
handle_event
../include/linux/fsnotify_backend.h:106:8: note: 'handle_event' declared here
int (*handle_event)(struct fsnotify_group *group,
^
../drivers/kernelsu/pkg_observer.c:41:24: error: incompatible function pointer types initializing 'int (*)(struct fsnotify_group *, struct inode *, u32, const void *, int, const unsigned char *, u32, struct fsnotify_iter_info *)' (aka 'int (*)(struct fsnotify_group *, struct inode *, unsigned int, const void *, int, const unsigned char *, unsigned int, struct fsnotify_iter_info *)') with an expression of type 'int (struct fsnotify_mark *, u32, struct inode *, struct inode *, const struct qstr *, u32)' (aka 'int (struct fsnotify_mark *, unsigned int, struct inode *, struct inode *, const struct qstr *, unsigned int)') [-Werror,-Wincompatible-function-pointer-types]
.handle_inode_event = ksu_handle_inode_event,
^~~~~~~~~~~~~~~~~~~~~~
2 errors generated.
make[3]: *** [../scripts/Makefile.build:338: drivers/kernelsu/pkg_observer.o] Error 1
make[2]: *** [../scripts/Makefile.build:642: drivers/kernelsu] Error 2
make[1]: *** [/home/runner/work/kernel_xiaomi_sm8250_mod/kernel_xiaomi_sm8250_mod/Makefile:1212: drivers] Error 2
make[1]: *** Waiting for unfinished jobs....

设备信息

  • 设备:Redmi K30 Pro
  • 操作系统版本:16
  • KernelSU 版本:最新
  • 内核版本:4.19.325

复现步骤

  1. 将 SukiSU Ultra 集成到 5.9 版本以下的内核
  2. 构建内核
  3. 构建失败,并看到错误信息

预期行为
内核构建成功。

附加信息
无。

这个问题可能是由于内核版本过低,不支持 handle_inode_event 函数导致的。建议升级内核版本或寻找其他解决方案。