CVE-2026-64419 in Linux
Zusammenfassung
von VulDB • 26.07.2026
Im Linux-Kernel wurde folgende Schwachstelle behoben:
mm/shrinker: Kein Halten des RCU-Locks in shrinker_debugfs_count_show()
Das Lesen der debugfs-„count“-Datei eines memcg-bewussten Shrinkers kann dazu führen, dass innerhalb einer RCU-Lese-Kritischen Sektion (RCU read-side critical section) geschlafen wird:
BUG: Aufruf einer schlafenden Funktion aus ungültigem Kontext in kernel/cgroup/rstat.c:421 RCU-Nesttiefe: 1, erwartet: 0 css_rstat_flush mem_cgroup_flush_stats zswap_shrinker_count shrinker_debugfs_count_show
shrinker_debugfs_count_show() ruft den ->count_objects()-Callback unter rcu_read_lock() auf. Der zswap-Callback flusht die memcg-Statistiken über css_rstat_flush(), was schlafen kann; daher darf er nicht im Kontext von RCU ausgeführt werden.
Das RCU-Lock ist hier nicht erforderlich. mem_cgroup_iter() verwendet intern RCU und gibt ein memcg zurück, das eine css-Referenz hält (die bei der nächsten Iteration oder durch mem_cgroup_iter_break()) freigegeben wird), sodass das memcg auch ohne dieses Lock am Leben bleibt. Der Shrinker wird durch die geöffnete debugfs-Datei am Leben gehalten: shrinker_free() entfernt die debugfs-Einträge über debugfs_remove_recursive(), was darauf wartet, dass laufende Leser abgeklungen sind (drain), bevor call_rcu(..., shrinker_free_rcu_cb) aufgerufen wird. Der geschwisterliche „scan“-Handler ruft bereits den schlafenden ->scan_objects()-Callback ohne RCU-Kontext auf.
Entfernen Sie rcu_read_lock()/rcu_read_unlock().
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.