В ядре Linux устранена следующая уязвимость: btrfs: исправление порядка памяти между обычными и упорядоченными рабочими функциями. Не гаран…
В ядре Linux устранена следующая уязвимость: btrfs: исправление порядка памяти между обычными и упорядоченными рабочими функциями. Не гарантируется, что упорядоченные рабочие функции будут обрабатываться тем же потоком, который выполнял обычные рабочие функции. Единственный способ синхронизации выполнения между обычными/упорядоченными функциями — через WORK_DONE_BIT, к сожалению, используемые битовые операции не гарантируют никакого порядка вообще. Это проявлялось как кажущиеся необъяснимыми сбои на ARM64, где async_chunk::inode рассматривается как не-null в async_cow_submit, что приводит к вызову submit_compressed_extents и сбою, поскольку async_chunk::inode внезапно стал NULL. Трассировка вызовов была похожа на: pc : submit_compressed_extents+0x38/0x3d0 lr : async_cow_submit+0x50/0xd0 sp : ffff800015d4bc20 <Регистры опущены для краткости> Call trace: submit_compressed_extents+0x38/0x3d0 async_cow_submit+0x50/0xd0 run_ordered_work+0xc8/0x280 btrfs_work_helper+0x98/0x250 process_one_work+0x1f0/0x4ac worker_thread+0x188/0x504 kthread+0x110/0x114 ret_from_fork+0x10/0x18 Исправьте это, добавив соответствующие вызовы барьера, которые гарантируют, что все обращения, предшествующие установке WORK_DONE_BIT, строго упорядочены до установки флага. В то же время добавьте барьер чтения после чтения WORK_DONE_BIT в run_ordered_work, который гарантирует, что все последующие загрузки будут строго упорядочены после чтения бита. Это, в свою очередь, гарантирует, что все обращения до WORK_DONE_BIT будут строго упорядочены перед любым обращением, которое может произойти в ordered_func.
Продукт использует общий ресурс в конкурентном режиме, но не обеспечивает корректную синхронизацию доступа к нему.
https://cwe.mitre.org/data/definitions/821.html →Открыть в коллекции CWE →| Продукт | Вендор | Статус |
|---|---|---|
| linux | Отслеживается | |
| linux | Отслеживается | |
| linux | Отслеживается | |
| linux | Отслеживается | |
| linux | Отслеживается | |
| linux | Отслеживается | |
| linux | Отслеживается | |
| linux | Отслеживается | |
| linux | Отслеживается | |
| linux | Отслеживается | |
| linux | Отслеживается | |
| linux | Отслеживается | |
| linux | Отслеживается | |
| linux | Отслеживается | |
| linux | Отслеживается | |
| linux | Отслеживается | |
| linux-5.10 | Отслеживается | |
| linux-5.10 | Отслеживается | |
| linux-5.10 | Отслеживается | |
| linux-allwinner-5.19 | Отслеживается |