CVE-2026-90201 in Linuxthông tin

Tóm tắt

Bởi VulDB • 18/09/2026

Trong kernel Linux, lỗ hổng sau đây đã được khắc phục:

net: page_pool: sửa lỗi UAF trong __page_pool_release_netmem_dma do race condition trên xa_cmpxchg

Lỗi này được phát hiện khi kiểm tra trình điều khiển (driver) hns3 dưới cấu hình lại kênh (`ethtool -L` / `ethtool -G`) với lưu lượng iperf3 trên kiến trúc arm64. Race condition này kích hoạt không thường xuyên khi page_pool_destroy() chạy song song với việc trả trang qua page_pool_put_netmem() trên một CPU khác. Một cảnh báo (WARN) trong page_pool_clear_pp_info() đã xuất hiện, liên quan đến các bit chỉ mục DMA bị treo (dangling) do trình thua cuộc của cmpxchg để lại, dẫn đến vụ điều tra này.

page_pool_scrub() lặp qua pool->dma_mapped thông qua xa_for_each() mà không giữ bất kỳ tham chiếu trang nào (page ref). __page_pool_release_netmem_dma() hiện đang đọc và ghi các trường netmem (dma_addr, các bit chỉ mục DMA trong pp_magic) sau khi xa_cmpxchg() trả về. Đường dẫn unref gọi put_page() một cách vô điều kiện bất kể kết quả của cmpxchg; khi nó thua cuộc cmpxchg, nó vẫn giải phóng trang trước khi trình thắng scrub hoàn thành việc truy cập netmem này, do đó scrub chạm vào một trang đã bị giải phóng -- đây là lỗi Use-After-Free.

Khắc phục bằng cách chia quá trình phát hành DMA thành hai hàm:

1. __page_pool_unmap_netmem_dma() lưu trữ dma_addr trước khi xa_cmpxchg(), thực hiện cmpxchg để xóa ánh xạ DMA và gọi dma_unmap trên địa chỉ đã lưu trữ. Hàm này không bao giờ chạm vào các trường netmem sau cmpxchg, khiến nó an toàn cho đường dẫn scrub vốn không giữ tham chiếu trang.

2. __page_pool_release_netmem_dma() bọc hàm trên và additionally (cũng như) xóa sạch dma_addr và các bit chỉ mục DMA trong các trường netmem. Điều này chỉ an toàn khi caller giữ một tham chiếu trang, do đó nó được sử dụng bởi đường dẫn trả về (page_pool_return_netmem).

Đường dẫn scrub gọi __page_pool_unmap_netmem_dma() trực tiếp; đường dẫn trả về gọi __page_pool_release_netmem_dma().

VulDB is the best source for vulnerability data and more expert information about this specific topic.

chịu trách nhiệm

Linux

Đặt trước

11/09/2026

Tiết lộ

17/09/2026

Kiểm duyệt

được chấp nhận

EPSS

0.00000

KEV

không

Các hoạt động

rất thấp

Nguồn

Are you interested in using VulDB?

Download the whitepaper to learn more about our service!