В ядре Linux устранена следующая уязвимость:
erofs: пропускать достаточно большие глобальные буферы при изменении размера
z_erofs_gbuf_nrpages обновляется только после того, как каждый глобальный буфер был
вырос. Если изменение размера не удалось после увеличения некоторых буферов, повторите попытку.
повторно посещает эти увеличенные буферы. Повторная попытка того же размера возвращает -ENOMEM, потому что alloc_pages_bulk()
не имеет страниц для добавления, а неизмененное возвращаемое значение рассматривается как
неудача.
Повторная попытка промежуточного размера выделяет временный указатель
массив меньше, чем gbuf->nrpages, и копирует больше существующих указателей, чем
массив может храниться. Пропустить буферы, которые уже удовлетворяют запросу. Как только все оставшиеся
буферы догнали, продвижение z_erofs_gbuf_nrpages снова описывает
гарантированный минимальный размер в пуле.
Показать оригинальное описание (EN)
In the Linux kernel, the following vulnerability has been resolved: erofs: skip sufficiently large global buffers when resizing z_erofs_gbuf_nrpages is advanced only after every global buffer has been grown. If a resize fails after some buffers were enlarged, a retry revisits those enlarged buffers. Retrying the same size then returns -ENOMEM because alloc_pages_bulk() has no pages to add and the unchanged return value is treated as a failure. Retrying an intermediate size allocates a temporary pointer array smaller than gbuf->nrpages and copies more existing pointers than the array can hold. Skip buffers that already satisfy the request. Once all remaining buffers have caught up, advancing z_erofs_gbuf_nrpages again describes the guaranteed minimum size across the pool.
Характеристики атаки
Последствия
Строка CVSS v3.1