Commit Graph

36 Commits

Author SHA1 Message Date
ShirkNeko
e5f58caf11 kernel & KernelSU: Refactor show enabled_features
- This simplies the logic in ksu_susfs tool, and it should be more convenient for some ksu manager variants that integrate susfs since they can just pass the char buffer and its size to get the result now, which means they no longer need to update the bit value each time a new susfs features deprecated or added.

Co-authored-by: simonpunk <simonpunk2016@gmail.com>
2025-07-03 17:58:38 +08:00
ShirkNeko
f008459be1 kernel & KernelSU: Added switch for enabling/disabling umount for zygote...
kernel & KernelSU: Added switch for enabling/disabling umount for zygote spawned isolated service process

- Some modules that overlay sysyem files like framework or other overlay apk may crash when all iso services are umounted by susfs, so a switch is made here for users to switch on/off this funtion at anytime when they need it or want to test it
- By default it is disabled in kernel, run "ksu_susfs umount_for_zygote_iso_service <0|1>" to switch on/off the function in userspace
- Also user can create new file to "/data/adb/susfs_umount_for_zygote_iso_service" to enable it in kernel on each boot
- Alternatively, disable this function and use other modules to handle the umount for iso services until a better solution is found

Co-authored-by: simonpunk <simonpunk2016@gmail.com>
2025-06-30 16:29:45 +08:00
rsuntk
bb02b12a69 kernel: phase out devpts_hook
* Since it's interceptable from LSM Hook,
then we just need to remove ksu_handle_devpts and
make a decoy for it.

Signed-off-by: rsuntk <rsuntk@yukiprjkt.my.id>
2025-06-27 12:31:38 +08:00
古塵
d0cb0cf25a kernel: refactor CMD_GET_FULL_VERSION to safely initialize version string (#220)
Use strscpy()/strlcpy() to populate the version buffer in CMD_GET_FULL_VERSION
instead of relying on uninitialized memory. This ensures the returned string
is null-terminated and avoids exposing garbage data to user space.

Signed-off-by: schqiushui <orochi9999@gmail.com>
2025-06-27 00:24:14 +08:00
ShirkNeko
3404a4fea8 KernelSU: Fix sus mounts not umounted for iso service that spawned by zygote directly
Co-authored-by: simonpunk <simonpunk2016@gmail.com>
Signed-off-by: ShirkNeko <109797057+ShirkNeko@users.noreply.github.com>
2025-06-25 12:12:17 +08:00
ShirkNeko
f876a523f6 kernel: Rewrite kernle version code management
Co-authored-by: lamadaemon <i@lama.icu>
Signed-off-by: ShirkNeko <109797057+ShirkNeko@users.noreply.github.com>
2025-06-24 20:07:56 +08:00
ShirkNeko
4a215511aa kernel: refactor SUSFS feature status retrieval for improved readability and maintainability 2025-06-20 04:08:04 +08:00
ShirkNeko
8283b5597d kernel: swap CONFIG_KSU_SUSFS_SUS_SU and CONFIG_KSU_SUSFS_HAS_MAGIC_MOUNT feature flags 2025-06-20 01:32:49 +08:00
rsuntk
103217755b kernel: allow GKI kprobes to use LSM hook for ksu_handle_devpts
* Also minor changes on comments

Signed-off-by: rsuntk <rsuntk@yukiprjkt.my.id>
2025-06-20 00:30:15 +08:00
backslashxx
aa80661186 kernel: intercept devpts via security_inode_permission LSM
* This changes:
  + Avoid conflicts with other devpts hooks.
  + We keep pts_unix98_pre for KPROBES for simplifying things.

Signed-off-by: backslashxx <118538522+backslashxx@users.noreply.github.com>
Signed-off-by: rsuntk <rsuntk@yukiprjkt.my.id>
2025-06-19 18:26:15 +08:00
ShirkNeko
bce28cc3ca kernel: add CMD_GET_SUSFS_FEATURE_STATUS command to get the correct functional state of SUSFS 2025-06-16 20:17:11 +08:00
古塵
20fa0a4a62 kernel: core_hook: Fix and complete try_umount renaming and usage (#165)
Fixed function definition and restored missing ksu_try_umount calls that were unintentionally removed in previous commits. This includes unmounts for:

- /debug_ramdisk
- /sbin
- /system/etc/hosts
- /apex/com.android.art/bin/dex2oat64
- /apex/com.android.art/bin/dex2oat32

Fixes: b443b11df9 ("kernel: Refactoring the mount point unloading logic")
Fixes: da7632470d ("kernel: 使用 try_umount 替换 ksu_try_umount 以统一卸载逻辑")

Signed-off-by: schqiushui <orochi9999@gmail.com>
2025-06-14 02:42:21 +08:00
ShirkNeko
15d1253d64 kernel: 使用 try_umount 替换 ksu_try_umount 以统一卸载逻辑 2025-06-13 19:50:53 +08:00
ShirkNeko
36cca65af3 kernel: Add CMD_HOOK_TYPE handling to core_hook.c to support state lookups for manual hooks
Co-authored-by: ShirkNeko <109797057+ShirkNeko@users.noreply.github.com>
Co-authored-by: rifsxd <rifat.44.azad.rifs@gmail.com>
Signed-off-by: ShirkNeko <109797057+ShirkNeko@users.noreply.github.com>
2025-06-13 15:42:34 +08:00
ShirkNeko
a873411a07 kernel: Bump SuSFS version to v1.5.8 2025-06-13 02:18:29 +08:00
rsuntk
ff328ed65a kernel: mayfix freeze and reboot issue.
* When ksys_umount/sys_umount/path_umount were called,
we shouldn't call path_put again.

References:
https://elixir.bootlin.com/linux/v4.19.325/source/fs/namespace.c#L1671
https://elixir.bootlin.com/linux/v5.15.185/source/fs/namespace.c#L1759

Reported-by: NVG-064 <aryslow92@gmail.com>
Signed-off-by: rsuntk <rsuntk@yukiprjkt.my.id>
2025-06-12 18:24:15 +08:00
rsuntk
f709b0c232 [skip ci] kernel: core_hook: add missing path_put
[  101.572296] CPU: 0 PID: 8674 Comm: main Tainted: G        WC OE     5.15.148-Ghost@NVG-064-gce02b349fb2b #1
[  101.572305] Hardware name: Qualcomm Technologies, Inc. KHAJE IDP nopmi topaz (DT)
[  101.572309] pstate: 20400005 (nzCv daif +PAN -UAO -TCO -DIT -SSBS BTYPE=--)
[  101.572315] pc : mntput_no_expire+0x25c/0x300
[  101.572328] lr : mntput_no_expire+0x134/0x300
[  101.572334] sp : ffffffc01d163c10
[  101.572336] x29: ffffffc01d163c30 x28: ffffffdb2c74bff0 x27: 0000000000000000
[  101.572345] x26: ffffff806cf11200 x25: ffffff806cf11200 x24: ffffffdb2db93000
[  101.572353] x23: ffffff807df66da0 x22: ffffff807df66d80 x21: ffffff807df66d80
[  101.572361] x20: ffffffdb2db89380 x19: ffffff806cf11200 x18: ffffffc013aad068
[  101.572369] x17: 0000000000000001 x16: ffffffa6c928b000 x15: 0000000000000000
[  101.572378] x14: 0000000000000020 x13: ffffffdb2db9f860 x12: 0000000000000020
[  101.572385] x11: ffffffffffffffff x10: 00000000000000ff x9 : 0000000000000008
[  101.572393] x8 : ffffff807df66d80 x7 : 61705f75736b203a x6 : 55536c656e72654b
[  101.572401] x5 : ffffffdb2de14332 x4 : ffffff81f6c435c1 x3 : 0000000000000000
[  101.572409] x2 : 0000000200000000 x1 : 0000000000000000 x0 : 00000000ffffffff
[  101.572418] Call trace:
[  101.572422] mntput_no_expire+0x25c/0x300
[  101.572431] path_put+0x3c/0x58
[  101.572438] ksu_try_umount+0x14c/0x174
[  101.572445] susfs_try_umount_all+0x6c/0x190
[  101.572450] ksu_handle_setuid+0x20c/0x320
[  101.572454] ksu_task_fix_setuid+0x18/0x2c
[  101.572459] __sys_setresuid+0x1e0/0x3dc
[  101.572466] __arm64_sys_setresuid+0x28/0x38
[  101.572472] invoke_syscall+0x64/0x154
[  101.572479] el0_svc_common+0x90/0xf4
[  101.572484] do_el0_svc+0x2c/0x9c
[  101.572489] el0_svc+0x28/0x60
[  101.572496] el0t_64_sync_handler+0xd4/0xf0
[  101.572501] el0t_64_sync+0x1b8/0x1bc
[  101.572508] ---[ end trace b57c69edb246930f ]---
[  101.572626] ------------[ cut here ]------------

Suggested-by: backslashxx <118538522+backslashxx@users.noreply.github.com>
Signed-off-by: rsuntk <rsuntk@yukiprjkt.my.id>
2025-06-12 18:24:05 +08:00
backslashxx
70b4551936 kernel: core_hook: fix missed path_put
make sure to path_put() on all codepaths after kern_path() success

Signed-off-by: backslashxx <118538522+backslashxx@users.noreply.github.com>
Signed-off-by: rsuntk <90097027+rsuntk@users.noreply.github.com>
2025-06-12 18:23:36 +08:00
backslashxx
1726d0da58 kernel: core_hook: refactor escape_to_root
- Remove BUG_ON, bail out when failed
- Add put_cred

Signed-off-by: rsuntk <rissu.ntk@gmail.com>
2025-06-12 18:22:58 +08:00
ShirkNeko
b443b11df9 kernel: Refactoring the mount point unloading logic 2025-06-12 18:17:52 +08:00
rsuntk
9cbfe80640 [skip ci] kernel: minor changes on ksu_sys_umount
* Simplify value for 'ret', adding some comments

Signed-off-by: rsuntk <rsuntk@yukiprjkt.my.id>
2025-06-12 15:24:54 +08:00
ShirkNeko
788e4c2f2f kernel: refactor umount functions for improved logging and clarity
Co-authored-by: rsuntk <rsuntk@yukiprjkt.my.id>
Signed-off-by: ShirkNeko <109797057+ShirkNeko@users.noreply.github.com>
2025-05-27 15:21:42 +08:00
rsuntk
61e3a9bcf2 kernel: fix ksu_sys_umount compatibility
* Some people reports about undefined reference to `sys_umount`
* Since ksys_umount exist on Linux 4.17-rc1, then we gonna use that one.

Rev 2: Use correct int instead of long for ksys_umount

Signed-off-by: rsuntk <90097027+rsuntk@users.noreply.github.com>
2025-05-27 01:13:54 +08:00
rsuntk
1ce706823e kernel: guard nuke_ext4_sysfs
Rather than using depends on / select,
i just prefer this way, although, yes, it is
an ifdef hell.

Signed-off-by: rsuntk <rsuntk@yukiprjkt.my.id>
2025-05-24 15:03:24 +08:00
rsuntk
84a0ab78fb kernel: make path_umount backporting as optional
Since https://github.com/backslashxx/KernelSU/commit/4f8943a, path_umount is no longer needed.

Signed-off-by: rsuntk <rsuntk@yukiprjkt.my.id>
2025-05-24 15:02:40 +08:00
backslashxx
cd32ee21be kernel: core_hook: screw path_umount backport, call sys_umount directly
I am repasting here what I posted on the source code originally:

/*
 * turns out path_umount backport is completely unneeded
 * we copy the trick used on strncpy_from_unsafe_user / strncpy_from_user_nofault
 * https://elixir.bootlin.com/linux/v4.4.302/source/mm/maccess.c#L184
 * basically
 *
 *     mm_segment_t old_fs = get_fs();     // remember original fs segment
 *     set_fs(USER_DS);                    // or KERNEL_DS *
 *     do_whatever_in_userspace();
 *     set_fs(old_fs);                     // restore fs segment
 *
 *  * kernel -> user, KERNEL_DS, user -> kernel, USER_DS
 *
 * so yes, we can try to straight up call a syscall from kernel space
 *
 * NOTE: on newer kernels you can use force_uaccess_begin + force_uaccess_end
 * ref: https://elixir.bootlin.com/linux/v5.10.237/source/mm/maccess.c#L250
 *
 */

path_umount backport now optional — neat trick, werks, what can I say.

Backports? Nah, we’re good.

Signed-off-by: backslashxx <118538522+backslashxx@users.noreply.github.com>
2025-05-24 14:43:07 +08:00
ShirkNeko
bbb072b776 Refactoring KPM support to check KPM status using CMD_ENABLE_KPM 2025-05-24 14:36:41 +08:00
ShirkNeko
95c47b8602 Fixed misspelling of CONFIG_KSU_HOOK_KPROBES to CONFIG_KSU_KPROBES_HOOK in Makefile and related files. 2025-05-17 18:33:29 +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
dfaada7134 Patch update SuSFS version to 1.5.6 2025-04-22 16:20:41 +08:00
ShirkNeko
f0a14e54e6 在core_hook.c中添加对KPM的条件编译支持 2025-04-21 10:31: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
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
6c4b73a38e 更新 KPM 模块,调整函数参数以支持额外的用户结果返回 2025-03-31 20:10:32 +08:00
ShirkNeko
743ddce9f7 添加 KPM 模块支持,包括 KPM 配置选项、核心功能实现及相关头文件 2025-03-30 02:54:23 +08:00
樱檩殇雪
ad064fea9e add susfs-dev branch files 2025-03-17 02:48:59 +08:00