В ядре Linux устранена следующая уязвимость:
btrfs: бесплатные страницы при ошибке в btrfs_uring_read_extent()
В этой функции объект «страницы» никогда не освобождается в надежде, что он
подхватывается функцией btrfs_uring_read_finished() всякий раз, когда она выполняется в
будущее. Но это всего лишь счастливый путь. По пути предыдущий
распределение могло пойти не так, или мы могли бы не получить -EIOCBQUEUED от
btrfs_encoded_read_regular_fill_pages().
Во всех этих случаях мы обращаемся к раздел очистки, который освобождает всю память, выделенную этой функцией, без предполагая любое отложенное выполнение, и это также должно произойти для распределение «страниц».
Показать оригинальное описание (EN)
In the Linux kernel, the following vulnerability has been resolved: btrfs: free pages on error in btrfs_uring_read_extent() In this function the 'pages' object is never freed in the hopes that it is picked up by btrfs_uring_read_finished() whenever that executes in the future. But that's just the happy path. Along the way previous allocations might have gone wrong, or we might not get -EIOCBQUEUED from btrfs_encoded_read_regular_fill_pages(). In all these cases, we go to a cleanup section that frees all memory allocated by this function without assuming any deferred execution, and this also needs to happen for the 'pages' allocation.