В ядре Linux устранена следующая уязвимость:
СМИ: атомисп: gc2235: исправление UAF и утечки памяти
gc2235_probe() неправильно обрабатывает пути ошибок. Если media_entity_pads_init() завершается неудачно, вызывается gc2235_remove(), который
срывает сабдев и освобождает разработчика, но потом все равно проваливается
атомисп_регистер_i2c_module(). Это приводит к использованию после бесплатного использования.
В случае сбоя атомисп_регистер_i2c_module() медиа-объект и элемент управления
обработчик остается инициализированным, а информация о dev теряется.
gc2235_remove() безоговорочно вызывает media_entity_cleanup() и
v4l2_ctrl_handler_free(), но они не инициализируются каждый раз.
путь ошибки в gc2235_probe(). Замените вызовы gc2235_remove() в путях ошибок проверки на явные
развернуть метки, которые освобождают только ресурсы, инициализированные в каждой точке
сбоя в порядке, обратном инициализации.
Показать оригинальное описание (EN)
In the Linux kernel, the following vulnerability has been resolved: media: atomisp: gc2235: fix UAF and memory leak gc2235_probe() handles its error paths incorrectly. If media_entity_pads_init() fails, gc2235_remove() is called, which tears down the subdev and frees dev, but then still falls through to atomisp_register_i2c_module(). This results in use-after-free. If atomisp_register_i2c_module() fails, the media entity and control handler are left initialized and dev is leaked. gc2235_remove() unconditionally calls media_entity_cleanup() and v4l2_ctrl_handler_free(), but these are not initialized at every error path in gc2235_probe(). Replace gc2235_remove() calls in the probe error paths with explicit unwind labels that free only the resources initialized at each point of failure, in reverse order of initialization.