В ядре Linux устранена следующая уязвимость: ext4: не ставьте EXT4_GET_BLOCKS_CONVERT при разделении перед отправкой ввод/о При выделении б…
В ядре Linux устранена следующая уязвимость: ext4: не ставьте EXT4_GET_BLOCKS_CONVERT при разделении перед отправкой ввод/о При выделении блоков во время внутри EOF DIO и записи с dioread_nolock включен, EXT4_GET_BLOCKS_PRE_IO был настроен на разделение Существующие большие неписаные масштабы. Тем не менее, EXT4_GET_BLOCKS_CONVERT был установить при вызове ext4_split_convert_extents(), что потенциально может приводит к несметным проблемам с данными. Потолкните, у нас есть неписаная протяженности, и тогда DIO пишет вторую половину. [UUUUUUUUUUUUUUUUUUUU] в пределах диска U: неписаные размеры [UUUUUUUUUUUUUUUUUUUUUUUUUUUUU] статусное дерево |<- ->| ---> dio написать этот диапазон Во-первых, ext4_iomap_alloc() вызов ext4_map_blocks() с EXT4_GET_BLOCKS_PRE_IO, EXT4_GET_BLOCKS_UNWRIT_EXT и EXT4_GET_BLOCKS_CREATE флаги набор. ext4_map_blocks() найти эту степень и вызов ext4_split_convert_extents() с EXT4_GET_BLOCKS_CONVERT и Над флагами установлены. Затем ext4_split_convert_extents() звонит ext4_split_extent() с EXT4_EXT_MAY_ZOREOUT, EXT4_EXT_MARK_UNWRIT2 и EXT4_EXT_DATA_VALID2 флаги установлены, и он призывает ext4_split_extent_at() разделить вторую половину с EXT4_EXT_DATA_DATA_VALID2, EXT4_EXT_MARK_UNWRIT1, EXT4_EXT_MAY_ZEREOUT и EXT4_EXT_MARK_UNWRIT2 флаги установлены. Однако ext4_split_extent_at() не удалось вставить степень, так как временный недостаток -ENOSPC. Он обнуляется первая половина, но преобразовать всю протяженность на диске в написанную с тех пор набор флага EXT4_EXT_DATA_VALID2, но оставил вторую половину как неписаный в пределах статуса дерева. [0000000000SSSSSS] данные S: несвежие данные, 0: нот. [WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW] протяженность диска W: письменная протяженность [WWWWWWWWWWUUUUUUU] статусное дерево Наконец, если DIO не удалось записать данные на диск, несвыданные данные в Вторая половина будет разоблачена, как только кэшированная протяженность входа исчезнет. Исправьте эту проблему, не проходя EXT4_GET_BLOCKS_CONVERT при расщеплении неписаные размеры перед отправкой ввода/о, и сделать ext4_split_convert_convert_extents() для обобщения всего диапазона площадок до нуля для этого случая, а также отметить степень в статусе Дерево для последовательности.
| Продукт | Вендор | Статус |
|---|---|---|
| linux | Отслеживается | |
| linux | Отслеживается | |
| linux_kernel | * | Отслеживается |
| kernel-doc-6.12 | Отслеживается | |
| kernel-doc-6.12 | Отслеживается | |
| kernel-doc-6.12 | Отслеживается | |
| kernel-doc-6.18 | Отслеживается | |
| kernel-doc-6.18 | Отслеживается | |
| kernel-doc-std | Отслеживается | |
| kernel-doc-std | Отслеживается | |
| kernel-doc-un | Отслеживается | |
| kernel-headers-6.12 | Отслеживается | |
| kernel-headers-6.12 | Отслеживается | |
| kernel-headers-6.12 | Отслеживается | |
| kernel-headers-6.18 | Отслеживается | |
| kernel-headers-6.18 | Отслеживается | |
| kernel-headers-modules-6.12 | Отслеживается | |
| kernel-headers-modules-6.12 | Отслеживается | |
| kernel-headers-modules-6.12 | Отслеживается | |
| kernel-headers-modules-6.18 | Отслеживается |