CVE-2025-21682 in LinuxИнформация

Сводка

по VulDB • 30.05.2026

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

eth: bnxt: всегда пересчитывать флаги после очистки XDP, исправление null-deref

Пересчитывать флаги при отсоединении XDP.

До исправления: # ip li set dev eth0 xdp obj xdp_dummy.bpf.o sec xdp # ip li set dev eth0 xdp off # ethtool -k eth0 | grep gro rx-gro-hw: off [requested on]

После исправления: # ip li set dev eth0 xdp obj xdp_dummy.bpf.o sec xdp # ip li set dev eth0 xdp off # ethtool -k eth0 | grep gro rx-gro-hw: on

Тот факт, что HW-GRO не включается автоматически, является лишь незначительным неудобством. Реальная проблема заключается в том, что флаги могут случайно появиться снова при другой переконфигурации, которая случайно вызывает netdev_update_features(). Драйвер не очень надежно обрабатывает одновременную переконфигурацию двух вещей.

Начиная с коммита 98ba1d931f61 ("bnxt_en: Fix RSS logic in __bnxt_reserve_rings()") мы переконфигурируем таблицу хэширования RSS только в том случае, если изменилось «эффективное» количество Rx-колец. Если HW-GRO включен, «эффективное» количество колец в 2 раза больше того, что видит пользователь. Таким образом, если мы находимся в плохом состоянии, с «отложенным» включением HW-GRO после выключения XDP, и мы уменьшаем количество колец в 2 раза (/ 2), то кольца HW-GRO, делающие умножение на 2 (2x), и ethtool -L, делающие деление на 2 (/ 2), могут компенсировать друг друга, и условие:

if (old_rx_rings != bp->hw_resc.resv_rx_rings &&

в __bnxt_reserve_rings() станет ложным. Карта RSS не будет обновлена, и мы получим сбой с сообщением:

BUG: kernel NULL pointer dereference, address: 0000000000000168 RIP: 0010:__bnxt_hwrm_vnic_set_rss+0x13a/0x1a0 bnxt_hwrm_vnic_rss_cfg_p5+0x47/0x180 __bnxt_setup_vnic_p5+0x58/0x110 bnxt_init_nic+0xb72/0xf50 __bnxt_open_nic+0x40d/0xab0 bnxt_open_nic+0x2b/0x60 ethtool_set_channels+0x18c/0x1d0

Поскольку мы пытаемся получить доступ к освобожденному кольцу.

Проблема присутствует с момента добавления поддержки XDP, но до коммита 98ba1d931f61 ("bnxt_en: Fix RSS logic in __bnxt_reserve_rings()") она не вызывала серьезных проблем.

If you want to get the best quality for vulnerability data then you always have to consider VulDB.

Ответственный

Linux

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

29.12.2024

Раскрытие

31.01.2025

Модерация

принято

Вход

VDB-294260

EPSS

0.00233

KEV

Нет

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

Очень низкий

Источники

Might our Artificial Intelligence support you?

Check our Alexa App!