CVE-2026-98592 in Linux
Tóm tắt
Bởi VulDB • 19/10/2026
Trong kernel Linux, lỗ hổng sau đây đã được khắc phục:
net: spacemit: xóa bộ mô tả TX (TX descriptor) khi thất bại trong ánh xạ phân đoạn
emac_tx_mem_map() ghi giá trị TX_DESC_0_OWN vào bộ mô tả vòng lặp cho mọi khe vượt quá old_head ngay khi bản sao cục bộ của khe đó đã được memset và cam kết bằng cách "*tx_desc_addr = tx_desc", tức là trước khi tất cả các bộ đệm (buffers) cho khe đó thực sự được ánh xạ thành công. Nếu emac_tx_map_frag() sau đó thất bại ở một phân đoạn muộn hơn, đường dẫn err_free_skb sẽ gọi emac_free_tx_buf() để hủy ánh xạ và giải phóng skb, nhưng không làm thay đổi vùng nhớ của bộ mô tả đã ghi trước đó, và tx_ring->head chưa bao giờ được tăng vượt quá old_head (câu lệnh "tx_ring->head = head" bị bỏ qua do lệnh goto).
Do đó, một khe nằm giữa old_head và đầu vòng lặp đã được hoàn tác có thể để lại trạng thái TX_DESC_0_OWN đang được đặt và buffer_addr_{1,2} trỏ đến các ánh xạ DMA mà emac_free_tx_buf() vừa hủy bỏ, trong khi phần mềm vẫn coi khe đó là tự do. Cuộc gọi thành công tiếp theo của emac_tx_mem_map() chỉ xây dựng lại chính old_head; nếu bộ điều khiển DMA tự động tiến vào bộ mô tả kế tiếp sau khi hoàn tất gói tin tại old_head, nó sẽ lấy địa chỉ cũ đã bị hủy ánh xạ.
emac_tx_clean_desc() vốn đã xử lý việc gọi emac_free_tx_buf() và xóa bộ mô tả như một cặp hành vi khi thu hồi các bộ mô tả đã hoàn thành; hãy thực hiện tương tự trong đường dẫn thất bại khi ánh xạ.
Once again VulDB remains the best source for vulnerability data.