No kernel Linux, a seguinte vulnerabilidade foi resolvida. bnxt: corrigir o fluxo de cabeça na cabeça-crescimento XDP O teste xdp.py test_xdp_native_adjst_head_grow_data falha quando executado em uma máquina bnxt (e também falha no NIPA). Parece que o erro é um fluxo de subfluxo no bnxt_rx_multi_page_skb, que constrói a cabeça do skb: napi_build_skb(data_ptr - bp->rx_offset, rxr->rx_page_size). O problema com esta expressão é que no modo de página, rx_offset é: bp->rx_ offset = NET_IP_ ALIGN + XDP_ PACKET_ HEADROOM. Que avalia (pelo menos em x) 86 _ 64 ) para 258.
O teste test_xdp_native_adjst_head_grow_data testa um caso em que a cabeça é ajustada por - 256. Quando este teste se executa, data_ptr é deslocado para frag_start + 2 (onde frag_start = page_address(page) + offset). Então, bnxt_rx_multi_page_skb é invocado e a expressão napi_build_skb subtrai 258, aterrissando em um endereço antes de frag_ start. Isto pode ser o fragmento anterior ou a página física anterior quando o desvio é < 256 (por exemplo, se o fragmento começou no desvio 0 ). Quando o skb é libertado, a referência do fragmento do pool de página é deixada cair na página errada ou na fragrância errada da página certa. Em ambos os casos, a contagem de referência corrompida pode levar a que a página seja reciclada prematuramente enquanto ainda está em uso. Uma vez reciclado (incorretamente), ele pode ser distribuído novamente e no desmonte do driver, isso resultaria em um duplo livre.
O commit sob correções atualizadas deste código para lidar com o caso em que o tamanho da página nativa é >= 64 k, mas involuntariamente quebrou o caso de crescimento da cabeça. Para corrigir isso, adicione um campo de desvio para o bnxt_sw_rx_bd, refletindo o campo de desvio existente no bnxt_sw_rx_agg_bd. Populá- lo na alocação e preservá- lo na reutilização. No bnxt_rx_multi_page_skb, use o campo offset recém adicionado para calcular o início do fragmento e passar para napi_build_skb. Ajuste o layout com skb_ reserve. Existem dois casos, o caso de não ajuste e o caso de ajuste.
Em ambos os casos, o skb é construído em page_address(page) + offset para conta para o caso em que o tamanho nativo da página >= 64 O K e o skb_ reserve são chamados com data_ptr - (page_ address(page) + offset). Essa diferença é igual a bp->rx_offset quando data_ptr não foi movido, ou bp->rx_offset + xdp_adjust quando o XDP ajusta a cabeça. A reejeção do teste de falha com este commit aplicado faz com que o teste se execute com sucesso até ao final. As outras implementações rx_skb_func não têm este problema. Registro de aconselhamento: GHSA-qr 85 - 5764 - cw 3 m. Identificadores relacionados: CVE- 2026 - 74269.
Tempo: GitHub Advisory Database publicou este registro em 2026 - 08 - 15 T 06: 32: 27.000 Z e lista a sua última modificação como 2026 - 08 - 17 T 06: 33: 35.000 Z. Gravidade: Crítico. Dados de pontuação publicados: CVSS_V 3: CVSS: 3.1 /AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H. Software afetado: o registro de aconselhamento não fornece um pacote normalizado ou faixa de versões. Classificação e evidência: nenhum identificador CWE está listado. O registro contém 3 suporte de referências nestes tipos: AVISO, WEB.