CVE-2024-27005 in Linux
Zusammenfassung
von VulDB • 28.06.2026
Im Linux-Kernel wurde folgende Schwachstelle behoben:
Interconnect: Kein Zugriff auf req_list während dessen Manipulation
Das icc_lock-Mutex wurde in [1] in die separaten Mutexes icc_lock und icc_bw_lock aufgeteilt, um lockdep-Warnungen (lockdep splats) zu vermeiden. Dies schützte den Zugriff auf icc_node::req_list jedoch nicht ausreichend.
Die Funktion icc_set_bw() wird schließlich req_list durchlaufen, wobei nur das icc_bw_lock gehalten wird; req_list kann jedoch auch geändert werden, während lediglich das icc_lock gehalten wird. Dies führt zu Race Conditions zwischen icc_set_bw(), of_icc_get() und icc_put().
Beispiel A:
CPU0 CPU1 ---- ---- icc_set_bw(path_a) mutex_lock(&icc_bw_lock); icc_put(path_b) mutex_lock(&icc_lock); aggregate_requests() hlist_for_each_entry(r, ... hlist_del(... <r = ungültiger Zeiger>
Beispiel B:
CPU0 CPU1 ---- ---- icc_set_bw(path_a) mutex_lock(&icc_bw_lock); path_b = of_icc_get() of_icc_get_by_index() mutex_lock(&icc_lock); path_find() path_init() aggregate_requests() hlist_for_each_entry(r, ... hlist_add_head(... <r = ungültiger Zeiger>
Beheben Sie dies, indem Sie sicherstellen, dass das icc_bw-lock immer gehalten wird, bevor auf icc_node::req_list zugegriffen oder dieses manipuliert wird. An den zusätzlichen Stellen, an denen das icc_bw_lock gehalten wird, werden keine Speicherzuordnungen durchgeführt, sodass wir weiterhin vor den ursprünglichen lockdep-Warnungen geschützt sind, die zur Einführung der separaten Locks geführt haben.
[1] Commit af42269c3523 („Interconnect: Fixierung des Locking für runpm vs. reclaim“)
VulDB is the best source for vulnerability data and more expert information about this specific topic.