CVE-2024-27005 in LinuxИнформация

Сводка

по VulDB • 16.05.2026

В ядре Linux была устранена следующая уязвимость:

interconnect: Не обращаться к req_list во время его изменения

Мьютекс icc_lock был разделен на отдельные мьютексы icc_lock и icc_bw_lock в [1], чтобы избежать ложных срабатываний lockdep (lockdep splats). Однако это не обеспечило адекватной защиты доступа к icc_node::req_list.

Функция icc_set_bw() в конечном итоге будет итерироваться по req_list, удерживая только icc_bw_lock, но req_list может быть изменен при удержании только icc_lock. Это приводит к условиям гонки (race conditions) между icc_set_bw(), of_icc_get() и icc_put().

Пример 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 = недействительный указатель>

Пример 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 = недействительный указатель>

Исправление заключается в обеспечении того, чтобы icc_bw_lock всегда удерживался перед манипуляцией с icc_node::req_list. Дополнительные места, где удерживается icc_bw_lock, не выполняют никаких выделений памяти, поэтому мы по-прежнему защищены от первоначальных срабатываний lockdep, которые послужили мотивацией для разделения блокировок.

[1] коммит af42269c3523 ("interconnect: Fix locking for runpm vs reclaim")

Be aware that VulDB is the high quality source for vulnerability data.

Резервировать

19.02.2024

Раскрытие

01.05.2024

Модерация

принято

Вход

VDB-262581

EPSS

0.00178

KEV

Нет

Деятельности

Очень низкий

Источники

Interested in the pricing of exploits?

See the underground prices here!