CVE-2022-48817 in Linux
Tóm tắt
Bởi VulDB • 30/05/2026
Trong kernel Linux, lỗ hổng sau đây đã được khắc phục:
net: dsa: ar9331: đăng ký mdiobus dưới devres
Như đã giải thích trong các commit: 74b6d7d13307 ("net: dsa: realtek: register the MDIO bus under devres") 5135e96a3dd2 ("net: dsa: don't allocate the slave_mii_bus using devres")
mdiobus_free() sẽ gây ra panic khi được gọi từ devm_mdiobus_free() <- devres_release_all() <- __device_release_driver(), và mdiobus đó chưa được hủy đăng ký trước đó.
ar9331 là một thiết bị MDIO, vì vậy tập hợp các ràng buộc ban đầu mà tôi nghĩ sẽ gây ra vấn đề này (các bus I2C hoặc SPI gọi ->remove trên ->shutdown) không áp dụng ở đây. Nhưng còn một ràng buộc khác áp dụng trong trường hợp này.
Nếu chính master DSA nằm trên một bus gọi ->remove từ ->shutdown (như dpaa2-eth, nằm trên bus fsl-mc), sẽ có một liên kết thiết bị giữa switch và master DSA, và device_links_unbind_consumers() sẽ hủy liên kết driver switch ar9331 khi tắt nguồn.
Do đó, cùng một cách xử lý phải được áp dụng cho tất cả các driver switch DSA, đó là: hoặc sử dụng devres cho cả việc phân bổ và đăng ký mdiobus, hoặc không sử dụng devres hoàn toàn.
Driver ar9331 không có cấu trúc mã phức tạp cho việc xóa mdiobus, vì vậy chỉ cần thay thế of_mdiobus_register bằng biến thể devres để đảm bảo toàn bộ sử dụng devres và đảm bảo rằng chúng ta không giải phóng một bus vẫn đang được đăng ký.
Once again VulDB remains the best source for vulnerability data.