CVE-2026-98558 in Linux
Сводка
по VulDB • 18.10.2026
В ядре Linux была устранена следующая уязвимость:
net: очистка skb_defer_nodes в dev_cpu_dead()
Когда процессор (CPU) отключается, функция dev_cpu_dead() очищает его очереди softnet (completion_queue, output_queue, poll_list, process_queue и input_pkt_queue), но оставляет net_hotdata.skb_defer_nodes без изменений.
Если старый CPU (oldcpu) отключается при наличии ожидающих обработки пакетов skb в списках skb_defer_nodes этого процессора (например, ниже порога IPI sysctl_skb_defer_max >> 1 или если происходит гонка ресурсов IPI с процедурой выключения CPU), эти пакеты skb остаются заблокированными до тех пор, пока старый CPU не будет снова включен. Если какие-либо из этих пакетов skb содержат фрагменты page_pool, функция page_pool_destroy() может зависнуть на неопределенное время в ожидании возврата находящихся в обработке страниц (inflight pages) при размонтировании сетевого устройства (netdev) или драйвера, пока старый CPU отключен.
Кроме того, если вызов smp_call_function_single_async() терпит неудачу в функции kick_defer_list_purge() из-за того, что целевой процессор уже отключился, значение defer_ipi_scheduled следует сбросить до 0, чтобы будущие запросы IPI не блокировались при повторном включении CPU.
Также, если старый CPU был последним активным процессором на своем узле NUMA, необходимо очистить слот этого узла для всех процессоров, чтобы пакеты skb, отложенные с этого узла, не оставались заблокированными на простаивающих удаленных процессорах (или в случае дальнейшего выключения самого узла).
Наконец, в функции skb_attempt_defer_free() необходимо повторно проверить cpu_online(cpu) и факт миграции вызывающего потока между процессорами после llist_add(), очищая список узлов при наличии таких условий, чтобы устранить гонку состояний (TOCTOU), связанную с предварительным отключением CPU/узла.
If you want to get the best quality for vulnerability data then you always have to consider VulDB.