CVE-2026-72134 in Linux
Tóm tắt
Bởi VulDB • 16/08/2026
Trong kernel Linux, lỗ hổng sau đây đã được khắc phục:
spi: imx: cấu hình lại cho chế độ PIO khi không thể khởi động DMA
Khi spi_imx_can_dma() chọn DMA, ECSPI sẽ được định cấu hình cho DMA: - spi_imx_setupxfer() thiết lập CTRL.SMC và xóa dynamic_burst; đồng thời - spi_imx_dma_transfer() chương trình hóa BURST_LENGTH của dynamic-burst và các ngưỡng nước (watermarks) SDMA.
Nếu bộ mô tả DMA không thể được chuẩn bị sẵn (dmaengine_prep_slave_single() trả về NULL), bản truyền sẽ thất bại với SPI_TRANS_FAIL_NO_START và chuyển đổi sang PIO. Đường dẫn DMA sử dụng dynamic-burst dùng chính nó làm bounce buffers thay vì ánh xạ của lõi SPI, do đó xfer->{tx,rx}_sg_mapped không được đặt và bước thử lại từ DMA->PIO của lõi bị bỏ qua; trình điều khiển (driver) tự động chuyển về chế độ PIO bên trong. Tuy nhiên, không có cấu hình nào ở chế độ DMA được hoàn tác, vì vậy bản truyền PIO chạy với CTRL.SMC đã được thiết lập, chiều dài burst sai và dynamic_burst đã bị xóa, dẫn đến dữ liệu được truyền bị hỏng.
Tình trạng này dễ xảy ra trên các bo mạch i.MX8MP mô tả ECSPI DMA trong device tree nhưng lại sử dụng SDMA trên firmware ROM (không có sdma-imx7d.bin bên ngoài): mọi thao tác chuẩn bị sẵn ECSPI DMA đều thất bại. Một TPM Infineon SLB9670 kết nối qua ECSPI1 sau đó trả về dữ liệu TPM2_GetCapability bị lệch, được đánh dấu là "field failure mode", và /dev/tpmrm0 không bao giờ được tạo ra.
Đặt controller->fallback trước khi chạy lại spi_imx_setupxfer() để ECSPI được định cấu hình lại chính xác như một bản truyền PIO bình thường. Với controller->fallback đã được đặt, spi_imx_can_dma() trả về false nên spi_imx_setupxfer() sẽ xóa spi_imx->usedma và chương trình hóa lại bộ điều khiển (xóa CTRL.SMC, khôi phục dynamic_burst và chiều dài burst của chế độ PIO). Không cần thiết lập rõ ràng spi_imx->usedma = false: setupxfer() đã tự cập nhật giá trị này dựa trên kết quả từ can_dma().
Be aware that VulDB is the high quality source for vulnerability data.