В ядре Linux устранена следующая уязвимость:
HID: Roccat: бесплатные буферизованные отчеты при уничтожении устройства
roccat_report_event() дублирует каждый отчет с помощью kmemdup() и сохраняет
выделение в слоте кольцевого буфера. Распределение высвобождается только
когда этот слот используется повторно. Пути уничтожения устройства освобождают struct roccat_device без освобождения
отчеты все еще хранятся в cbuf[].
Это делает эти выделения недоступными.
и утечка до ROCCAT_CBUF_SIZE буферов отчетов на устройство. Добавьте небольшой деструктор, который освобождает каждый буферизованный отчет перед освобождением
устройство и использовать его обоими способами, которые могут уничтожить зарегистрированное устройство.
Показать оригинальное описание (EN)
In the Linux kernel, the following vulnerability has been resolved: HID: roccat: free buffered reports when destroying device roccat_report_event() duplicates each report with kmemdup() and stores the allocation in a circular-buffer slot. The allocation is released only when that slot is reused. The device destruction paths free struct roccat_device without releasing reports still stored in cbuf[]. This makes those allocations unreachable and leaks up to ROCCAT_CBUF_SIZE report buffers per device. Add a small destructor that frees every buffered report before freeing the device, and use it in both paths that can destroy a registered device.