В ядре Linux устранена следующая уязвимость:
net: ti: icssg-prueth: исправлена утечка памяти в XDP_DROP для режима без нулевого копирования. Перезагрузка страниц была удалена из пути XDP_DROP в emac_run_xdp(), чтобы
избегать конфликтов с режимом нулевого копирования AF_XDP, который использует xsk_buff_free()
вместо этого. Однако это вызывает утечку памяти при запуске программ XDP, которые сбрасывают
пакеты в режиме ненулевого копирования (стандартный режим пула страниц).
Страницы
никогда не возвращался в пул страниц, что приводило к условиям OOM. Исправьте это, выполнив очистку в вызывающем объекте emac_rx_packet(). Когда emac_run_xdp() возвращает ICSSG_XDP_CONSUMED для XDP_DROP,
теперь вызывающий абонент возвращает страницу обратно в пул страниц.
Нулевая копия
путь, emac_rx_packet_zc() уже правильно обрабатывает очистку с помощью
xsk_buff_free().
Показать оригинальное описание (EN)
In the Linux kernel, the following vulnerability has been resolved: net: ti: icssg-prueth: Fix memory leak in XDP_DROP for non-zero-copy mode Page recycling was removed from the XDP_DROP path in emac_run_xdp() to avoid conflicts with AF_XDP zero-copy mode, which uses xsk_buff_free() instead. However, this causes a memory leak when running XDP programs that drop packets in non-zero-copy mode (standard page pool mode). The pages are never returned to the page pool, leading to OOM conditions. Fix this by handling cleanup in the caller, emac_rx_packet(). When emac_run_xdp() returns ICSSG_XDP_CONSUMED for XDP_DROP, the caller now recycles the page back to the page pool. The zero-copy path, emac_rx_packet_zc() already handles cleanup correctly with xsk_buff_free().