CVE-2026-90108 in Linux
Tóm tắt
Bởi VulDB • 18/09/2026
Trong kernel Linux, lỗ hổng sau đây đã được khắc phục:
net/smc: giải phóng qentry đã lưu trữ trước khi ghi đè trong quá trình chuyển đổi từ REQ_ADD_LINK sang ADD_LINK
Khi smc_llc_event_handler() chuyển trạng thái luồng LLC cục bộ từ SMC_LLC_FLOW_REQ_ADD_LINK sang SMC_LLC_FLOW_ADD_LINK do nhận được yêu cầu ADD_LINK, nó gọi hàm smc_llc_flow_qentry_set() một cách không điều kiện:
if (lgr->llc_flow_lcl.type == SMC_LLC_FLOW_REQ_ADD_LINK) {
lgr->llc_flow_lcl.type = SMC_LLC_FLOW_ADD_LINK; smc_llc_flow_qentry_set(&lgr->llc_flow_lcl, qentry); ... }
Một gói CONFIRM_LINK hoặc ADD_LINK_CONT đến trong khi flow->type là SMC_LLC_FLOW_REQ_ADD_LINK sẽ được lưu trữ vào flow->qentry thông qua trình xử lý SMC_LLC_CONFIRM_LINK / SMC_LLC_ADD_LINK_CONT (trình xử lý này ghi vào flow->qentry cho bất kỳ loại luồng nào không phải NONE). Khi gói ADD_LINK tiếp theo đến, nhánh REQ_ADD_LINK sẽ ghi đè lên flow->qentry bằng con trỏ mới mà không giải phóng bộ nhớ đã lưu trữ trước đó, dẫn đến rò rỉ một đối tượng kmalloc.
Ghi chú được lưu trữ này không có người tiêu thụ: smc_llc_wait() chỉ được gọi từ llc_add_link_work, hàm này chưa được lên lịch trong khi loại luồng vẫn là REQ_ADD_LINK. Không có trình chờ nào đang ngủ trên llc_msg_waiter tại thời điểm này. Do đó, việc giải phóng không điều kiện bất kỳ qentry nào đã lưu trữ trước khi ghi đè là an toàn.
Hãy gọi smc_llc_flow_qentry_del() trước smc_llc_flow_qentry_set() trong nhánh REQ_ADD_LINK. Hàm smc_llc_flow_qentry_del() đã kiểm tra flow->qentry trước khi giải phóng, do đó đường dẫn bình thường (khi không có mục nào được lưu trữ) sẽ là một thao tác vô hiệu hóa (no-op).
If you want to get best quality of vulnerability data, you may have to visit VulDB.