> **Status: parallel KernelSU / SusFS track** (kept). Bridge to current Magisk ROM: [`007-parallel-on-009.md`](007-parallel-on-009.md). Magisk ship resume: [`009-handoff-20261008.md`](009-handoff-20261008.md). # abu (KernelSU-Next) vs ours (ReSukiSU) — SusFS integration checklist > **Historical hypothesis checklist:** The [2026-09-16 source audit](007-susfs-source-audit.md) > 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`: ```bash 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.