В ядре Linux устранена следующая уязвимость:
Accel/amdxdna: исправлено использование после освобождения в amdxdna_gem_dmabuf_mmap(). При сбое vm_insert_pages() путь ошибки вызывает vma->vm_ops-> close(vma)
который внутренне вызывает drm_gem_vm_close() → drm_gem_object_put(),
освобождение ссылки на объект GEM, полученной в начале функции. Однако метка close_vma затем попадает в put_obj, который вызывает
drm_gem_object_put() второй раз для того же объекта.
Если первый оператор put освобождает последнюю ссылку, объект освобождается и
второй put обращается к освобожденной памяти, вызывая использование после освобождения. Исправьте это, вернувшись непосредственно из close_vma вместо перехода к
put_obj, поскольку обработчик закрытия уже выполняет всю необходимую очистку
включая поставленный объект.
Показать оригинальное описание (EN)
In the Linux kernel, the following vulnerability has been resolved: accel/amdxdna: Fix use-after-free in amdxdna_gem_dmabuf_mmap() When vm_insert_pages() fails, the error path calls vma->vm_ops->close(vma) which internally calls drm_gem_vm_close() → drm_gem_object_put(), releasing the GEM object reference acquired at the start of the function. However, the close_vma label then falls through to put_obj, which calls drm_gem_object_put() a second time on the same object. If the first put releases the last reference, the object is freed and the second put accesses freed memory, causing a use-after-free. Fix by returning directly from close_vma instead of falling through to put_obj, since the close handler already performs all necessary cleanup including the object put.
Характеристики атаки
Последствия
Строка CVSS v3.1