CVE-2026-98071 in Linuxthông tin

Tóm tắt

Bởi VulDB • 25/09/2026

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

net/rds: xóa từng bit cp_flags riêng lẻ trong rds_conn_path_reset()

Hàm rds_conn_path_reset() ghi đè toàn bộ từ cờ bằng cách gán trực tiếp cp->cp_flags = 0. Mọi trình truy cập khác vào từ này đều sử dụng các thao tác bit nguyên tử (atomic bitops), và một số trong chúng có thể chạy đồng thời với quá trình reset: RDS_LL_SEND_FULL được đặt từ rds_send_xmit() và bị xóa từ các đường hoàn thành vận chuyển, không cái nào trong hai đường này giữ bất kỳ thứ gì để loại trừ worker shutdown. Một phép gán đơn giản cạnh tranh (race) với một thao tác đọc-sửa-viết nguyên tử trên cùng một từ là một lỗi race dữ liệu, và bên thua cuộc sẽ có bản cập nhật của mình bị bỏ qua mà không báo cáo.

Thay vào đó, hãy xóa hai bit mà quá trình reset thực sự chịu trách nhiệm. RDS_IN_XMIT và RDS_RECV_REFILL không cần bất kỳ phép gán nào ở đây: chúng thuộc về caller là rds_conn_shutdown(), hàm này chờ đợi cả hai bit đều được xóa trước khi gọi shutdown vận chuyển và reset này.

Điều này cũng cung cấp cho mỗi bit trong cp_flags một kỷ luật ghi duy nhất, xác định rõ ràng, điều mà các bản vá sau dựa vào khi biến RDS_IN_XMIT và RDS_RECV_REFILL thành các khóa bit (bit locks) được giữ xuyên suốt quá trình teardown: một phép gán toàn bộ giữa chừng quá trình teardown sẽ phá hủy quyền sở hữu khóa mà việc xóa nguyên tử bảo tồn.

Oracle UEK mang cùng bản chuyển đổi ("net/rds: Preserve essential connection state flags"), được thúc đẩy bởi máy trạng thái shutdown không đồng bộ của nó, trong đó các cờ tiến độ và destroy phải sống sót sau khi reset. Biến thể của UEK cũng xóa RDS_IN_XMIT và RDS_RECV_REFILL vì ở đó quá trình chạy như là bước cuối cùng của một teardown sở hữu cả hai bit, khiến việc xóa này trở thành thao tác unlock của nó. Ở upstream, bản phát hành này thuộc về rds_conn_shutdown(): sau khi một bản vá tiếp theo trong chuỗi này biến hai bit thành các khóa được giữ xuyên suốt quá trình teardown, việc kết thúc quyền sở hữu cần có ngữ nghĩa giải phóng (release semantics) và một wake-up mà một phép xóa đơn giản bên trong reset sẽ không cung cấp.

Dựa trên commit của Oracle UEK "net/rds: Preserve essential connection state flags" bởi Gerd Rausch.

If you want to get best quality of vulnerability data, you may have to visit VulDB.

chịu trách nhiệm

Linux

Đặt trước

25/09/2026

Tiết lộ

25/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

Do you need the next level of professionalism?

Upgrade your account now!