NONE

CVE-2026-23041

Обновлено 4 февраля 2026

В ядре Linux устранена следующая уязвимость: bnxt_en: исправлен сбой нулевого указателя в bnxt_ptp_enable во время устранения ошибок. Когда bnxt_init_one() завершается сбоем во время инициализации (например, bnxt_init_int_mode возвращает -ENODEV), путь к ошибке вызывает bnxt_free_hwrm_resources(), который уничтожает пул DMA и устанавливает bp->hwrm_dma_pool в NULL. Впоследствии вызывается bnxt_ptp_clear(), который вызывает ptp_clock_unregister(). С момента фиксации a60fc3294a37 ("ptp: переработать ptp_clock_unregister() на отключить события"), ptp_clock_unregister() теперь вызывает ptp_disable_all_events(), который, в свою очередь, вызывает функцию .enable() драйвера. обратный вызов (bnxt_ptp_enable()) для отключения событий PTP перед завершением отмена регистрации. bnxt_ptp_enable() пытается отправить команды HWRM через bnxt_ptp_cfg_pin() и bnxt_ptp_cfg_event(), оба из которых вызывают hwrm_req_init(). Это функция пытается выделить память из bp->hwrm_dma_pool, вызывая NULL разыменование указателя: bnxt_en 0000:01:00.0 (безымянное сетевое_устройство) (неинициализировано): bnxt_init_int_mode ошибка: ffffffed KASAN: null-ptr-deref в диапазоне [0x0000000000000028-0x000000000000002f] Отслеживание вызова: __hwrm_req_init (drivers/net/ethernet/broadcom/bnxt/bnxt_hwrm.c:72) bnxt_ptp_enable (drivers/net/ethernet/broadcom/bnxt/bnxt_ptp.c:323 driver/net/ethernet/broadcom/bnxt/bnxt_ptp.c:517) ptp_disable_all_events (drivers/ptp/ptp_chardev.c:66) ptp_clock_unregister (drivers/ptp/ptp_clock.c:518) bnxt_ptp_clear (drivers/net/ethernet/broadcom/bnxt/bnxt_ptp.c:1134) bnxt_init_one (drivers/net/ethernet/broadcom/bnxt/bnxt.c:16889) Строки против фиксации f8f9c1f4d0c7 («Linux 6.19-rc3») Исправьте это, очистив и отменив регистрацию ptp (bnxt_ptp_clear()) перед высвобождение ресурсов HWRM.

Показать оригинальное описание (английский)

In the Linux kernel, the following vulnerability has been resolved: bnxt_en: Fix NULL pointer crash in bnxt_ptp_enable during error cleanup When bnxt_init_one() fails during initialization (e.g., bnxt_init_int_mode returns -ENODEV), the error path calls bnxt_free_hwrm_resources() which destroys the DMA pool and sets bp->hwrm_dma_pool to NULL. Subsequently, bnxt_ptp_clear() is called, which invokes ptp_clock_unregister(). Since commit a60fc3294a37 ("ptp: rework ptp_clock_unregister() to disable events"), ptp_clock_unregister() now calls ptp_disable_all_events(), which in turn invokes the driver's .enable() callback (bnxt_ptp_enable()) to disable PTP events before completing the unregistration. bnxt_ptp_enable() attempts to send HWRM commands via bnxt_ptp_cfg_pin() and bnxt_ptp_cfg_event(), both of which call hwrm_req_init(). This function tries to allocate from bp->hwrm_dma_pool, causing a NULL pointer dereference: bnxt_en 0000:01:00.0 (unnamed net_device) (uninitialized): bnxt_init_int_mode err: ffffffed KASAN: null-ptr-deref in range [0x0000000000000028-0x000000000000002f] Call Trace: __hwrm_req_init (drivers/net/ethernet/broadcom/bnxt/bnxt_hwrm.c:72) bnxt_ptp_enable (drivers/net/ethernet/broadcom/bnxt/bnxt_ptp.c:323 drivers/net/ethernet/broadcom/bnxt/bnxt_ptp.c:517) ptp_disable_all_events (drivers/ptp/ptp_chardev.c:66) ptp_clock_unregister (drivers/ptp/ptp_clock.c:518) bnxt_ptp_clear (drivers/net/ethernet/broadcom/bnxt/bnxt_ptp.c:1134) bnxt_init_one (drivers/net/ethernet/broadcom/bnxt/bnxt.c:16889) Lines are against commit f8f9c1f4d0c7 ("Linux 6.19-rc3") Fix this by clearing and unregistering ptp (bnxt_ptp_clear()) before freeing HWRM resources.