Files
AXP-Resurection/docs/007-abu-vs-ours-susfs.md
sunfish-adminandCursor 2d145c2878 009: Polish bacon fixes, OTA host scripts, and migration docs.
Restore disable_configstore, EuiccDisabler and thermal CDEV guards, branding
and rebuild/sync helpers; document device roles, laptop migration, and Gitea.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-10-16 21:06:45 +02:00

4.7 KiB

Status: parallel KernelSU / SusFS track (kept). Bridge to current Magisk ROM: 007-parallel-on-009.md. Magisk ship resume: 009-handoff-20261008.md.

abu (KernelSU-Next) vs ours (ReSukiSU) — SusFS integration checklist

Historical hypothesis checklist: The 2026-09-16 source audit supersedes causal claims here. ReSukiSU intentionally supports SUSFS as an alternative inline hook provider; forcing MANUAL+SUSFS is a local porting choice, not an established universal fix. Check module ABI and command wire formats as well as Kconfig. The reference checkout is not proven identical to the owner's working Abu L22 binary.

Oracle: /srv/rom/references/abu-msm-4.14-ksu (drivers/kernelsu → KernelSU-Next/kernel). Ours: ReSukiSU under msm-4.14/drivers/kernelsu + LOS 23.2 A16. Do not copy abu ROM/boot; copy model only. Forks differ (Next ≠ ReSukiSU).

Architectural model (abu — correct)

Topic abu KernelSU-Next ReSukiSU upstream (broken for us) Ours after patches
SusFS Addon bool under menu "KernelSU - SUSFS", depends on KSU Was a choice entry XOR with MANUAL/TRACEPOINT Kconfig: SusFS outside choice (abu-like)
Hooks KSU_KPROBES_HOOK default y; or manual (disable kprobes) choice MANUAL / TRACEPOINT / (was SUSFS) MANUAL_HOOK + AUTO_* for 4.14
susfs_init() #ifdef CONFIG_KSU_SUSFS always in ksu.c, independent of hook method Often behind #elif CONFIG_KSU_SUSFS only Fixed init.c: MANUAL branch also calls susfs_init()
Hook enable keys N/A (different code) #elif SUSFS before #elif MANUAL → no ksu_init_rc_hook when both Fixed ksud_integration.c: SusFS-only branch if !MANUAL_HOOK

Failures we already hit (XOR leftovers)

  1. Defconfig SusFS on → choice flipped → no MANUAL_HOOK → vibrator hang / broken hooks (T004038Z).
  2. MANUAL+SusFS without AUTO_* → early logo reboot (T091211Z).
  3. AUTO_* + SusFS → link error ksu_init_rc_hook (SUSFS #elif won).
  4. Even after link fix: without susfs_init() in MANUAL path, SusFS would be dead code.

Remaining #elif CONFIG_KSU_SUSFS in our tree (review)

File Pattern Risk when MANUAL+SUSFS Action
runtime/ksud_integration.c SusFS iff !MANUAL OK done
core/init.c MANUAL then ifdef SUSFS init; elif SUSFS legacy OK done
feature/sucompat.h #elif SUSFS before else MANUAL macros Uses SusFS TIF/helpers — intended for addon leave; verify LAB
supercall/dispatch.c:527 mark get: SUSFS then else SusFS path when addon — OK leave
supercall/dispatch.c:902 MANUAL before SUSFS for hook_type string Reports "Manual" when both — OK leave
feature/sucompat.c SUSFS || MANUAL OK compose leave

Rule: any #elif CONFIG_KSU_SUSFS that defines symbols or inits needed by MANUAL/AUTO must become either && !MANUAL or #ifdef SUSFS nested inside MANUAL (abu: always #ifdef SUSFS).

Feature flag delta (Kconfig)

abu Next has extras we lack (Next-specific / different SusFS port):

  • KSU_SUSFS_HAS_MAGIC_MOUNT
  • KSU_SUSFS_AUTO_ADD_SUS_* / TRY_UMOUNT*
  • KSU_SUSFS_SUS_SU (needs KPROBES)

Our ReSukiSU SusFS set: PATH/MOUNT/KSTAT/LOG/HIDE_SYMBOLS/SPOOF_CMDLINE/OPEN_REDIRECT/SUS_MAP (+ SPOOF_UNAME optional). Bring-up: keep SPOOF_UNAME off (already commented in defconfig); consider SPOOF_CMDLINE off until boot stable.

abu sunfish_defconfig in this reference has 0 CONFIG_KSU* lines — enablement is elsewhere / not this file; do not treat that defconfig as SusFS pin list.

Hook stack (do not mix blindly)

abu ours
Primary KPROBES (CONFIG_KSU_KPROBES_HOOK) MANUAL + AUTO_SETUID/INITRC/INPUT
Non-GKI docs kernelsu.org manual integrate resukisu.org manual integrate

Porting abu kprobe assumptions into ReSukiSU MANUAL builds = future footgun.

Pre-build gate (mandatory)

Before each SusFS bootimage:

CFG=out/target/product/sunfish/obj/KERNEL_OBJ/.config
grep -E "CONFIG_KSU_MANUAL_HOOK=y|CONFIG_KSU_MANUAL_HOOK_AUTO_.*=y|CONFIG_KSU_SUSFS=y" "$CFG"
# must have MANUAL=y, all three AUTO=y, SUSFS=y
# must NOT have "# CONFIG_KSU_MANUAL_HOOK is not set"
nm …/ksud_integration.o | grep ksu_init_rc_hook   # after CC

After Image: extract-ikconfig and confirm same.

Flash discipline

Flash SusFS to one slot only; keep penúltimo on the other; --set-active; both-slot rollback after failure.