backslashxx 5f871cd713 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

Signed-off-by: backslashxx <118538522+backslashxx@users.noreply.github.com>
2025-05-18 03:23:12 +06:00
2024-12-25 04:45:46 +06:00
2025-05-07 02:32:31 +06:00
2024-03-08 10:31:41 +08:00
2024-02-29 20:35:03 +08:00
2022-12-09 22:03:55 +08:00
2023-10-09 22:53:21 +08:00

English | 简体中文 | 繁體中文 | Türkçe | Português (Brasil) | 한국어 | Français | Bahasa Indonesia | Русский | ภาษาไทย | Tiếng Việt | Italiano | Polski | Български | 日本語

KernelSU Next

logo

A kernel-based root solution for Android devices.

Latest Release Nightly Release License: GPL v2 GitHub License

Features

  1. Kernel-based su and root access management.
  2. Module system based on dynamic mount system Magic Mount / OverlayFS.
  3. App Profile: Lock up the root power in a cage.

Compatibility state

KernelSU Next officially supports most Android kernels starting from 4.4 up to 6.6.

  • GKI 2.0 (5.10+) kernels can run pre-built images and LKM/KMI.
  • GKI 1.0 (4.19 - 5.4) kernels need to rebuilt with KernelSU driver.
  • EOL (<4.14) kernels also need to be rebuilt with KernelSU driver (3.18+ is experimental and may need some function backports).

Currently, only the arm64-v8a architecture is supported.

Usage

Security

For information on reporting security vulnerabilities in KernelSU, see SECURITY.md.

License

Donations

  • 0x12b5224b7aca0121c2f003240a901e1d064371c1 [ USDT BEP20 ]

  • TYUVMWGTcnR5svnDoX85DWHyqUAeyQcdjh [ USDT TRC20 ]

  • 0x12b5224b7aca0121c2f003240a901e1d064371c1 [ USDT ERC20 ]

  • 0x12b5224b7aca0121c2f003240a901e1d064371c1 [ ETH ERC20 ]

  • Ld238uYBuRQdZB5YwdbkuU6ektBAAUByoL [ LTC ]

  • 19QgifcjMjSr1wB2DJcea5cxitvWVcXMT6 [ BTC ]

Credits

Description
An advanced Kernel based root solution for Android
Readme GPL-3.0 22 MiB
v1.0.8 Latest
2025-06-16 00:00:17 +00:00
Languages
Kotlin 44%
Rust 29.4%
C 16.5%
Java 4.4%
Shell 2.9%
Other 2.7%