CyberRota Analysis
AI-GeneratedThe vulnerability affects the Linux kernel's bnxt_en driver, specifically in the `bnxt_rx_ring_reset()` function, which improperly handles buffer allocation failures. This oversight can lead to the re-enabling of TCP Segmentation Offload (TPA) with partially unallocated receive buffers, potentially resulting in the use of uninitialized memory and zero DMA addresses, which could compromise system stability and security. Linux administrators and developers utilizing affected kernel versions should prioritize addressing this vulnerability to prevent potential exploitation and ensure system integrity.
Original NVD Description
In the Linux kernel, the following vulnerability has been resolved: bnxt_en: Handle buffer allocation failure in bnxt_rx_ring_reset() bnxt_rx_ring_reset() frees the ring buffers and then reallocates them, ignoring the result. bnxt_alloc_one_rx_ring() can fail in bnxt_alloc_one_tpa_info_data(), which returns -ENOMEM on the first failed allocation and leaves the remaining rxr->rx_tpa[] entries zeroed. The error isn't propagated up, so the loop in bnxt_rx_ring_reset continues and at the end the code re-enables TPA with partially unallocated rx_tpa array. This means that when the agg_id from hardware is mapped to a SW index in rxr->rx_tpa[], an uninitialized slot can be chosen which would hand a zero DMA address to the device. Fix this by falling back to a global reset, which is what the existing code already does when other functions fail, but unlike the other failure cases this particular failure has to return because TPA can't be re-enabled since the allocation failed.