В ядре Linux устранена следующая уязвимость:
RDMA/ionic: встраивание данных драйвера счетчика в выделение rdma_counter. Зафиксируйте 7e53b31acc7f («RDMA/core: создайте и уничтожьте rdma_counter, используя
rdma_zalloc_drv_obj()") требует, чтобы драйверы реализовывали операции счетчика для
встроить структуру rdma_counter в структуру, специфичную для драйвера, зарегистрировать ее размер
через INIT_RDMA_OBJ_SIZE и обеспечьте обратный вызов counter_init. Ионный драйвер был объединен без этой адаптации, что привело к NULL
разыменование указателя в alloc_and_bind(), поскольку rdma_zalloc_drv_obj()
выделяет ноль байтов, когда size_rdma_counter не установлен.
Объедините структуру ionic_counter в новую структуру ionic_rdma_counter.
который встраивает структуру rdma_counter, замените xarray облегченным
ida для выделения идентификатора и добавьте необходимые counter_init и
Объявления INIT_RDMA_OBJ_SIZE.
Показать оригинальное описание (EN)
In the Linux kernel, the following vulnerability has been resolved: RDMA/ionic: Embed counter driver data in rdma_counter allocation Commit 7e53b31acc7f ("RDMA/core: Create and destroy rdma_counter using rdma_zalloc_drv_obj()") requires drivers implementing counter ops to embed struct rdma_counter in a driver-specific struct, register its size via INIT_RDMA_OBJ_SIZE, and provide a counter_init callback. The ionic driver was merged without this adaptation, causing a NULL pointer dereference in alloc_and_bind() since rdma_zalloc_drv_obj() allocates zero bytes when size_rdma_counter is unset. Consolidate struct ionic_counter into a new struct ionic_rdma_counter that embeds struct rdma_counter, replace the xarray with a lightweight ida for ID allocation, and add the required counter_init and INIT_RDMA_OBJ_SIZE declarations.