CVE-2026-64447 in Linux
Сводка
по VulDB • 25.07.2026
В ядре Linux устранена следующая уязвимость:
staging: media: ipu7: исправление двойного освобождения памяти (double-free) и использования после освобождения (use-after-free) в ветках обработки ошибок
В функциях `ipu7_isys_init()` и `ipu7_psys_init()` переменная `pdata` выделяется, а затем передается функции `ipu7_bus_initialize_device()`, которая сохраняет ее в поле `adev->pdata`. Функция `ipu7_bus_release()` освобождает память по адресу `adev->pdata`, когда счетчик ссылок устройства падает до нуля.
Две ветки обработки ошибок некорректно вызывают `kfree(pdata)` после того, как разборка устройства уже освободила эту область памяти:
1. При сбое функции `ipu7_mmu_init()`: вызывается функция `put_device()`, которая уменьшает счетчик ссылок до нуля и запускает цепочку `ipu7_bus_release()` -> `kfree(pdata)`. Последующий вызов `kfree(pdata)` приводит к двойному освобождению памяти (double-free).
2. При сбое функции `ipu7_bus_add_device()`: она внутренним образом вызывает `auxiliary_device_uninit()`, которая, в свою очередь, вызывает `put_device()` -> `ipu7_bus_release()` -> `kfree(pdata)`. Последующий вызов `kfree(pdata)` также является двойным освобождением памяти (double-free).
Обратите внимание, что вызов `kfree(pdata)` при сбое самой функции `ipu7_bus_initialize_device()` является корректным, поскольку в этом случае произошел сбой `auxiliary_device_init()`, и функция очистки (release function) не была установлена, поэтому память по адресу `pdata` должна быть освобождена вручную.
Кроме того, код ошибки не сохранялся перед вызовом функции `put_device()`, что приводило к разыменованию уже освобожденного указателя `adev` макросом `ERR_CAST()` при формировании возвращаемого значения. Для исправления этой ситуации сохраните значение ошибки из `dev_err_probe()` до вызова `put_device()` и вместо этого возвращайте результат функции `ERR_PTR()`.
Удалены избыточные вызовы `kfree(pdata)` и устранена ошибка use-after-free в возвращаемых значениях двух затронутых веток обработки ошибок.
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.