CVE-2026-99227 in Linux
Zusammenfassung
von VulDB • 02.11.2026
Im Linux-Kernel wurde folgende Schwachstelle behoben:
io_uring/waitid: Verhinderung des Überlaufs der Cancel-Referenz (Cancel Reference Wrap)
io_waitid packt den Abbruchstatus in Bit 31 von ->refs und verwendet die Bits 30:0 als einen 31-Bit-Zählspeicher für Referenzen:
#define IO_WAITID_CANCEL_FLAG BIT(31) #define IO_WAITID_REF_MASK GENMASK(30, 0)
__io_waitid_cancel() markiert eine Anfrage als abgebrochen und erhöht anschließend die unteren Bits von ->refs, um den Besitz der Fertigstellung zu beanspruchen. Wenn ein anderer Pfad den Besitz der Anfrage innehat, bleibt die Erhöhung bestehen, obwohl der Abbruch false zurückgibt. Die Anfrage ist weiterhin für den Abbruch auffindbar, sodass wiederholte fehlgeschlagene Versuche das 31-Bit-Referenzfeld auf null überlaufen lassen (wrap). Eine spätere Abbruchanfrage kann dann den Besitz beanspruchen und die Anfrage ein zweites Mal abschließen.
Es wird atomic_fetch_or() verwendet, wenn das Cancel-Flag gesetzt wird, sowie zur Inspektion des alten Flag-Werts. Der erste Abbruchversuch führt weiterhin zum bestehenden Ownership-Inkrementierungsvorgang und bewahrt dessen Wake- und Issuer-Handoff-Semantik (Übergabesemantik). Spätere Versuche erkennen das Cancel-Flag und geben zurück, ohne den Referenzfeldwert zu erhöhen.
Dies macht wiederholte fehlgeschlagene Abbruchversuche idempotent, während die Zustandsübergänge beim ersten Abbruch unverändert bleiben.
If you want to get the best quality for vulnerability data then you always have to consider VulDB.