Commit Graph

191 Commits

Author SHA1 Message Date
sidex15
ba71b410db kernel: kpm: add compatibility for kernel 4.14 and lower (#76)
`thread_pid` is not defined in kernel 4.14 and lower, leading to compilation issue.
To fix this, use `pids[PIDTYPE_PID].pid` for kernel versions 4.14 and lower.
Else use `thread_pid` for kernel versions 4.19 and higher.

Reference: 107717913b/tracee/tracee.bpf.c (L354)
2025-05-15 23:05:03 +08:00
ShirkNeko
049865daea Remove duplicate get_cred_rcu backport 2025-05-15 21:26:12 +08:00
backslashxx
e3b6f4d35d kernel: sucompat: sucompat toggle support for non-kp (tiann#2506)
kernel/selinux: fix pointer mismatch with 32-bit ksud on 64-bit kernels
Since KernelSU Manager can now be built for 32-bit, theres this problematic
setup where userspace is 32-bit (armeabi-v7a) and kernel is 64bit (aarch64).

On 64-bit kernels with CONFIG_COMPAT=y, 32-bit userspace passes 32-bit pointers.
These values are interpreted as 64-bit pointers without proper casting and that
results in invalid or near-null memory access.

This patch adds proper compat-mode handling with the ff changes:
- introduce a dedicated struct (`sepol_compat_data`) using u32 fields
- use `compat_ptr()` to safely convert 32-bit user pointers to kernel pointers
- adding a runtime `ksu_is_compat` flag to dynamically select between struct layouts

This prevents a near-null pointer dereference when handling SELinux
policy updates from 32-bit ksud in a 64-bit kernel.

Truth table:

kernel 32 + ksud 32, struct is u32, no compat_ptr
kernel 64 + ksud 32, struct is u32, yes compat_ptr
kernel 64 + ksud 64, struct is u64, no compat_ptr

Preprocessor check

64BIT=y COMPAT=y: define both structs, select dynamically
64BIT=y COMPAT=n: struct u64
64BIT=n: struct u32

kernel/throne_tracker: we just uninstalled the manager, stop looking for it
When the manager UID disappears from packages.list, we correctly
invalidate it — good. But, in the very next breath, we start scanning
/data/app hoping to find it again?

This event is just unnecessary I/O, exactly when we should be doing less.
Apparently this causes hangups and stuckups which is REALLY noticeable
on Ultra-Legacy devices.

Skip the scan — we’ll catch the reinstall next time packages.list updates.

This is done like how vfs_read_hook, input_hook and execve_hook is disabled.
While this is not exactly the same thing, this CAN achieve the same results.
The complete disabling of all KernelSU hooks.

While this is likely unneeded, It keeps feature parity to non-kprobe builds.

adapted from upstream:
	kernel: Allow to re-enable sucompat - 4593ae81c7

Rejected: https://github.com/tiann/KernelSU/pull/2506

Signed-off-by: backslashxx <118538522+backslashxx@users.noreply.github.com>
2025-05-15 20:23:18 +08:00
ShirkNeko
682fdf0afe Prioritize sukisu recognition.
Simplified manual hooks
2025-05-10 14:38:45 +08:00
ShirkNeko
d77ee31bce Add support for KERNEL_VERSION_4_10 in super_access.c and move variable declarations in for loops outside the loop to improve code readability 2025-04-25 19:12:53 +08:00
ShirkNeko
41b8f854a4 Add KSU_CMDLINE configuration to enable the KernelSU command line option and implement the corresponding status read function
Co-authored-by: rsuntk <rsuntk@yukiprjkt.my.id>
Co-authored-by: ShirkNeko <109797057+ShirkNeko@users.noreply.github.com>
Signed-off-by: ShirkNeko <109797057+ShirkNeko@users.noreply.github.com>
2025-04-24 15:03:09 +08:00
ShirkNeko
069a671bf1 Remove unnecessary conditional compilation code to simplify the definition of kprobe structures 2025-04-23 17:26:00 +08:00
ShirkNeko
13c5aae85e Move variable declarations in the for loop outside the loop in sucompat.c 2025-04-23 17:16:10 +08:00
ShirkNeko
d9063377af Rearrange KSU related conditional compilation support in core_hook.c to improve code readability 2025-04-23 15:35:19 +08:00
ShirkNeko
527d362b85 Add support for Kprobe, extend su_kps array to 6 elements to accommodate more hook functions 2025-04-23 15:08:05 +08:00
ShirkNeko
dfaada7134 Patch update SuSFS version to 1.5.6 2025-04-22 16:20:41 +08:00
ShirkNeko
2c65af9e80 Add a dependency for KPM in Kconfig to ensure that KPM functionality can only be activated when KSU is enabled 2025-04-21 10:42:52 +08:00
ShirkNeko
f0a14e54e6 在core_hook.c中添加对KPM的条件编译支持 2025-04-21 10:31:50 +08:00
ShirkNeko
970e7651a5 Refactoring Kconfig and Makefile to optimize KernelSU configuration logic and simplify kernel type determination 2025-04-19 16:02:18 +08:00
ShirkNeko
1a563bb3e1 Update Makefile to add support for kernel version 6 and optimize KERNEL_TYPE judgment logic. 2025-04-19 14:44:49 +08:00
ShirkNeko
bd56bcf538 Refactoring Kconfig to optimize KernelSU-related configuration and simplify conditional dependency logic 2025-04-19 14:02:12 +08:00
ShirkNeko
6c2e67cd50 更新Makefile,添加内核类型判断逻辑并输出相关信息 2025-04-17 20:07:02 +08:00
ShirkNeko
be8d6ca052 重构Makefile中的KPROBES钩子逻辑,简化条件编译信息输出 2025-04-17 19:53:21 +08:00
ShirkNeko
b72ab79e06 简化Makefile中的内核版本判断逻辑,移除冗余的条件编译代码 2025-04-17 19:52:50 +08:00
ShirkNeko
28f006ed39 Refactor Kconfig and Makefile, update KPROBES related configurations, simplify conditional compilation logic 2025-04-17 19:46:14 +08:00
ShirkNeko
140ebd196f Add support for kernel version 6.12, update conditional compilation definitions in super_access.c 2025-04-15 16:13:16 +08:00
ShirkNeko
8ada7757ea Update Makefile 2025-04-15 15:14:20 +08:00
liankong
b7b739824e 添加super_access对task_struct的支持 2025-04-13 14:23:53 +08:00
ShirkNeko
e2f89709d1 Remove macro definitions in super_access.c for kernel version 4.14 to simplify structural definitions 2025-04-12 19:31:39 +08:00
ShirkNeko
546929da55 Remove conditional compilation for kernel version 4.14 in super_access.c to simplify kprobe structure definition 2025-04-12 19:30:55 +08:00
ShirkNeko
97aaea7d86 Remove macro definitions for kernel versions 5.0 and 5.10 in super_access.c, and adjust conditional compilation to support kernel versions 4.14 and 5.15. 2025-04-12 19:07:33 +08:00
ShirkNeko
2cbe1b9e9a Update kernel version macro definitions to add support for kernel version 5.0 and adjust conditional compilation for newer versions 2025-04-12 19:02:52 +08:00
ShirkNeko
51a0357f0f 在 super_access.c 中添加对内核版本 6.6 和 5.15 的宏定义,并调整条件编译以适应新的内核版本 2025-04-12 16:23:27 +08:00
ShirkNeko
44d85cfdd7 在 super_access.c 中添加对内核版本 4.14 的宏定义,并根据内核版本条件编译相关成员 2025-04-12 16:16:06 +08:00
ShirkNeko
662d5494b2 更新内核版本宏定义为 6.1,并相应调整条件编译的成员定义 2025-04-12 16:12:28 +08:00
ShirkNeko
10e05689e5 在 super_access.c 中添加对 linux/version.h 的引用,并根据内核版本条件定义相关成员 2025-04-12 16:09:48 +08:00
ShirkNeko
fd0066cdf6 更改 sukisu_is_current_uid_manager 函数以使用 ksu_is_manager 代替 is_manager 2025-04-12 15:28:38 +08:00
ShirkNeko
84b215f989 移除 super_access.c 中不必要的 break_handler 成员定义 2025-04-12 15:20:44 +08:00
ShirkNeko
4e950183e3 移除 super_access.c 中不必要的 linux/nsproxy.h 头文件引用 2025-04-12 15:19:29 +08:00
ShirkNeko
95d3eac98e 在 super_access.c 中添加对 fs/mount.h 的引用 2025-04-12 15:15:56 +08:00
ShirkNeko
61eb7203c4 在 super_access.c 中添加对 linux/nsproxy.h 的引用 2025-04-12 15:02:44 +08:00
ShirkNeko
a96367a177 Remove unnecessary header file fs/mount.h and use linux/mount.h instead. 2025-04-12 14:53:00 +08:00
ShirkNeko
80a9ec1498 更新 Makefile,将 super_access.c 更改为 super_access.o 2025-04-12 14:43:55 +08:00
liankong
b002bcd38a Add super_access.c and super_access.h files to define the functions related to dynamically accessing structures. 2025-04-12 13:57:59 +08:00
ShirkNeko
04f2b53754 Add the definition of the get_cred_rcu function to the Makefile to support SukiSU compatibility 2025-04-11 23:40:30 +08:00
ShirkNeko
3923007430 Add the KSU_COMPAT_GET_CRED_RCU flag to the Makefile to support the compatibility feature 2025-04-11 20:51:24 +08:00
ShirkNeko
d240c1035f Fix spelling error in SELinux driver check to ensure current_sid function is recognized correctly 2025-04-11 20:46:52 +08:00
ShirkNeko
6060fdd4ab Remove the KSU_COMPAT_GET_CRED_RCU flag from the Makefile and add a compile check for the path_umount function to ensure that the necessary validation is done before compilation. 2025-04-11 20:44:45 +08:00
ShirkNeko
e54785c069 Update Makefile to support SukiSU, add get_cred_rcu, can_umount, and path_umount functions, and change information to reflect the new name. 2025-04-11 20:39:43 +08:00
ShirkNeko
6cf8f77b61 Add an uninstall attempt for the “/data/adb/kpm” path in the kernel mount logic to enhance the integrity of path management 2025-04-11 20:22:48 +08:00
ShirkNeko
bae61b03c5 Add dynamic structure metadata support to enhance readability and maintainability of kernel modules 2025-04-11 17:33:47 +08:00
ShirkNeko
ef4c1f50ab Update the log message prefixes in the Makefile to uniformly format the output 2025-04-11 04:07:29 +08:00
ShirkNeko
ad051ce22b Remove definition checks for atomic functions in the kernel Makefile to simplify path unloading logic 2025-04-11 04:04:55 +08:00
ShirkNeko
aee56e803d Add the definitions of the get_cred_rcu, can_umount, and path_umount functions to the Makefile to enhance the readability and maintainability of the path unloading logic 2025-04-11 03:59:31 +08:00
ShirkNeko
3c0944530d Add error checking to the kernel Makefile to ensure that the atomic_inc_not_zero or atomic_long_inc_not_zero functions are found in kernel/cred.c 2025-04-11 03:57:23 +08:00