В ядре Linux устранена следующая уязвимость:
net: mana: синхронизация RX-фрагментов пула страниц для процессора
MANA выделяет буферы RX из фрагментов пула страниц, когда frag_count равен
больше 1. В этом случае буферы остаются DMA, сопоставленными пулом страниц.
и путь завершения RX не вызывает dma_unmap_single(). В результате
неявная синхронизация процессора, обычно выполняемая dma_unmap_single(), равна
отсутствует до того, как пакетные данные будут переданы в сетевой стек.
Это нарушает прием RX в конфигурациях, требующих явной синхронизации DMA, например пример при загрузке с swiotlb=force. Исправьте это, записав страницу пула страниц и смещение синхронизации DMA, когда RX буфер выделяется и синхронизирует полученный диапазон пакетов для доступа к ЦП. перед передачей буфера RX в стек.
Показать оригинальное описание (EN)
In the Linux kernel, the following vulnerability has been resolved: net: mana: Sync page pool RX frags for CPU MANA allocates RX buffers from page pool fragments when frag_count is greater than 1. In that case the buffers remain DMA mapped by page pool and the RX completion path does not call dma_unmap_single(). As a result, the implicit sync-for-CPU normally performed by dma_unmap_single() is missing before the packet data is passed to the networking stack. This breaks RX on configurations which require explicit DMA syncing, for example when booted with swiotlb=force. Fix this by recording the page pool page and DMA sync offset when the RX buffer is allocated, and syncing the received packet range for CPU access before handing the RX buffer to the stack.
Характеристики атаки
Последствия
Строка CVSS v3.1