В ядре Linux устранена следующая уязвимость:
net: mana: инициализировать идентификатор очереди gdma как INVALID_QUEUE_ID
mana_gd_create_mana_wq_cq() оставляет очередь->id как 0 (из kzalloc_obj())
до тех пор, пока mana_create_wq_obj() не назначит идентификатор, возвращаемый прошивкой. Если создание
до этого происходит сбой, очистка вызывает mana_gd_destroy_cq() с идентификатором 0, NULLing
gc->cq_table[0] и молча ломаем тот реальный CQ, который владеет этим слотом. Инициализируйте очередь->id в INVALID_QUEUE_ID сразу после выделения, сопоставления
mana_gd_create_eq().
Затем существующий (id >= max_num_cqs) охранник
чисто закорачивает.
Показать оригинальное описание (EN)
In the Linux kernel, the following vulnerability has been resolved: net: mana: initialize gdma queue id to INVALID_QUEUE_ID mana_gd_create_mana_wq_cq() leaves queue->id as 0 (from kzalloc_obj()) until mana_create_wq_obj() assigns the firmware-returned id. If creation fails before that, cleanup calls mana_gd_destroy_cq() with id 0, NULLing gc->cq_table[0] and silently breaking whichever real CQ owns that slot. Initialize queue->id to INVALID_QUEUE_ID right after allocation, matching mana_gd_create_eq(). The existing (id >= max_num_cqs) guard then short-circuits cleanly.