Linux 7.2.2 — экстренное исправление устраняет kernel panic при обработке GSO-фрагментов

28 августа 2026 года на kernel.org опубликован Linux 7.2.2 — второй стабильный апдейт ветки 7.2, вышедший всего через сутки после 7.2.1. Релиз содержит одно целевое исправление сетевого стека: оно устраняет сценарий, при котором специально сформированные IP-фрагменты с GSO-метаданными могли привести к kernel panic; тот же патч одновременно перенесён в Linux 7.1 и поддерживаемые LTS-ветки.

Linux 7.2.2 — экстренное исправление устраняет kernel panic
Linux 7.2.2 — экстренное исправление устраняет kernel panic

Linux 7.2.2 опубликован 28 августа

Официальный kernel.org 28 августа обновил stable-ветку Linux до версии 7.2.2. Там же опубликованы исходный архив, патч, инкрементальное обновление, PGP-подпись и changelog релиза.

Коммит выпуска подписан Грегом Кроа-Хартманом 28 августа в 08:25 по центральноевропейскому времени. Предыдущий Linux 7.2.1 появился только 27 августа, поэтому новый релиз представляет собой внеочередное точечное исправление, а не очередной крупный пакет накопленных изменений.

Changelog Linux 7.2.2 фактически содержит единственный технический патч помимо изменения номера версии.

Ошибка находилась в сборке IP-фрагментов

Исправление относится к подсистеме inet и обработке фрагментированных IPv4 и IPv6-пакетов.

Проблема возникала в ситуации, когда источник — например, tun/tap или AF_PACKET с PACKET_VNET_HDR — передавал IP-фрагмент, снабжённый GSO-метаданными через virtio_net_hdr. После повторной сборки пакета ядро сохраняло признаки GSO у результирующего skb.

Это состояние некорректно: обычный IP-фрагмент не должен сохранять GSO-информацию после прохождения очереди дефрагментации.

При последующей программной сегментации такой skb мог попасть в skb_segment(), где структура frag_list не соответствовала ожидаемому формату. В результате срабатывал один из внутренних BUG_ON().

Ошибка могла привести к kernel panic

В changelog приведён воспроизводимый сценарий, заканчивающийся сообщением:

kernel BUG at net/core/skbuff.c

После этого ядро фиксировало Oops: invalid opcode, а поскольку выполнение происходило при отключённых bottom halves, результатом становился полноценный:

Kernel panic - not syncing: Fatal exception in interrupt

Разработчики указывают, что для воспроизведения на тестовой системе было достаточно двух записей в TAP-интерфейс от непривилегированного пользователя внутри собственного user namespace.

Отдельно отмечается возможность достижения той же ошибки через сетевой namespace с CAP_NET_RAW, если дефрагментация выполняется до GSO.

Потенциально затронуты и виртуальные машины, если VMM передаёт virtio_net_hdr гостевой системы в TAP-интерфейс хоста.

Исправление удаляет GSO-метаданные ещё до сборки пакета

Разработчики изменили inet_frag_queue_insert() — общий путь, используемый при сборке фрагментов IPv4, IPv6, nf_conntrack_reasm и 6LoWPAN.

Теперь при помещении каждого IP-фрагмента в очередь ядро сбрасывает его GSO-состояние. Это гарантирует, что после дефрагментации ни головной skb, ни элементы frag_list не будут ошибочно обозначены как GSO-пакеты.

Состояние CHECKSUM_PARTIAL при этом может сохраняться: changelog уточняет, что существующие механизмы ядра уже корректно обрабатывают его через skb_checksum_help().

Исправление проверили на IPv4 и IPv6

Патч тестировался на x86_64 поверх актуального дерева net.git.

Без исправления разработчики смогли воспроизвести падение в четырёх вариантах: исходном TAP-сценарии, двух различных конфигурациях IPv4 frag_list и варианте с IPv6 fragment header.

После применения патча все четыре дейтаграммы были обработаны без kernel panic и диагностических сообщений.

Это важное уточнение: официальные данные подтверждают устранение конкретного воспроизводимого сбоя, но не дают оснований трактовать Linux 7.2.2 как общий сетевой или security-релиз с большим набором исправлений.

Патч одновременно перенесён в Linux 7.1 и LTS

Исправление выпущено не только для Linux 7.2.

28 августа kernel.org одновременно опубликовал:

ВеткаНовая версия
stable7.2.2
stable7.1.12
longterm6.18.48
longterm6.12.107
longterm6.6.155
longterm6.1.186
longterm5.15.219
longterm5.10.268

Все эти версии датированы 28 августа 2026 года.

Changelog Linux 7.1.12 показывает тот же патч inet: frags: strip GSO state from fragments before reassembly, что и Linux 7.2.2. Аналогичное исправление присутствует, например, в Linux 6.18.48 и 6.12.107.

Таким образом, речь идёт о синхронном исправлении одной проблемы во всех основных поддерживаемых ветках, а не о восьми независимых наборах изменений.

Резюме

Пользователям Linux 7.2.1 имеет смысл перейти на 7.2.2 при первой возможности, особенно если система использует tun/tap, network namespaces, контейнерную инфраструктуру, виртуализацию или сетевые сценарии с virtio_net_hdr.

Для LTS-систем переход на ветку 7.2 не требуется. Достаточно установить свежий maintenance-релиз своей линии — например, 6.18.48, 6.12.107 или 6.6.155.

Linux 7.2.2 является небольшим по объёму, но технически значимым обновлением: весь релиз посвящён устранению одного воспроизводимого сценария падения ядра в сетевом стеке.

При использовании материалов сайта необходимо указывать ссылку на TGLand.ru. Если вы копируете фрагменты текста в интернете, прямая гиперссылка, доступная для индексации поисковыми системами, должна быть размещена в начале материала.

Вам также может понравиться