eBPF-Problem: Der FRED im Linux-Kernel 6.9+

2025-03-01

Der Linux-Kernel 6.9+ führt CONFIG_X86_FRED auf x86_64 ein und fügt 16 Bytes Padding am Ende des Kernel-Stacks einer Aufgabe hinzu. Dies führt dazu, dass eBPF-Programme, die direkt auf den Kernel-Stack und pt_regs zugreifen, fehlerhafte Daten zurückgeben. Der Autor stieß auf dieses Problem mit seinem eBPF-Tool xcapture-next nach dem Upgrade auf Kernel 6.11. Die Analyse ergab, dass der Stack-Offset von FRED der Übeltäter ist. Ein dynamischer FRED-Erkennungsmechanismus wird vorgestellt, um die Stack-Adressberechnungen anzupassen und das Problem zu lösen. Dieser Artikel ist entscheidend für eBPF-Entwickler, insbesondere diejenigen, die mit der direkten Manipulation des Kernel-Stacks arbeiten.

Entwicklung