В ядре Linux устранена следующая уязвимость:
RDMA/ядро: исправление устаревшего потока ошибок FRMR при отправке в очередь. Для старения пулов с прикрепленными маркерами необходимо перемещать маркеры из
активная очередь в непустую неактивную очередь, которая может выйти из строя на новой странице
распределения, мы в настоящее время не обрабатываем ошибку и не допускаем утечки mkey
это не дает толчка. Исправление путем введения push_queue_to_queue_locked(), который заполняет
частичную хвостовую страницу назначения из источника, а затем объединяет
оставшиеся исходные страницы передаются в пункт назначения без выполнения распределения.
Замените цикл перемещения для каждого дескриптора в age_pinned_pool() и
сращивание с открытым кодом в Pool_aging_work() с вызовами помощника. Поскольку помощник не может выйти из строя из-за нехватки памяти, удаление класса
Распределение GFP_ATOMIC при блокировке пула и упрощение ошибки
поток.
Показать оригинальное описание (EN)
In the Linux kernel, the following vulnerability has been resolved: RDMA/core: Fix FRMR aging push to queue error flow Aging pools with pinned handles requires moving handles from the active queue to a non-empty inactive queue that might fail on new page allocation, we are currently not handling the fault and leaking any mkey that fails the push. Fix by Introducing push_queue_to_queue_locked() that fills the destination's partial tail page from the source and then splices the remaining source pages onto the destination, performing no allocation. Replace the per-handle move loop in age_pinned_pool() and the open-coded splice in pool_aging_work() with calls to the helper. As the helper cannot fail under memory pressure, removing a class of GFP_ATOMIC allocations under the pool lock and simplifying the error flow.