Ad

CVE-2026-72094

NONE EPSS 0.20%
Обновлено 17 августа 2026
Linux
Параметр Значение
Поставщик Linux
Публичный эксплойт Нет

В ядре Linux устранена следующая уязвимость: dma-buf: dma-fence: исправлено потенциальное разыменование нулевого указателя. Коммит, упомянутый в теге исправлений ниже, представил механизм благодаря чему производители ограждений могут полностью отделиться от потребителей ограждений. Этот желательно механизм основан на сигнальном бите барьера, поскольку «точка развязки».

Сложное взаимодействие между RCU и атомарными инструкциями пытается чтобы гарантировать, что потребители ограждений по-прежнему могут взаимодействовать с производителями ограждений через dma_fence_ops (указатели обратного вызова на производителя). Это желаемое поведение: для проверки развязки сигнальный бит сначала проверяется. Если сигнал еще не подан, RCU гарантирует, что операторы указатель еще не может быть NULL.

Таким образом, dma_fence_signal_timestamp_locked() сначала устанавливает сигнальный бит, а затем устанавливает указатель ops в NULL. Читатели сначала загружают ops указатель, а затем с помощью сигнального бита проверьте, может ли указатель иметь легальный доступ. Эти операции установки и загрузки могут происходить не по порядку в слабоупорядоченных средах. платформы.

Эту проблему можно решить очень элегантно, используя команду ops. сам указатель в качестве точки синхронизации. Указатель имеет значение NULL, или не может стать NULL во время использования благодаря RCU. Замените проверку сигнальных битов в dma_fence_timeline_name() и dma_fence_driver_name().

Показать оригинальное описание (EN)

In the Linux kernel, the following vulnerability has been resolved: dma-buf: dma-fence: Fix potential NULL pointer dereference The commit mentioned in the fixes tag below introduced a mechanism through which fence producers can fully decouple from fence consumers. This, desirable, mechanism is based on the fence's signaled-bit as the "decoupling point". A sophisticated interaction between RCU and atomic instructions attempts to ensure that fence consumers can still interact with fence producers through the dma_fence_ops (callback pointers into the producer). This is the desired behavior: to check for decoupling, the signaled-bit is first checked. If it's not yet signaled, RCU ensures that the ops pointer cannot yet be NULL. Hereby, dma_fence_signal_timestamp_locked() first sets the signaled-bit, and then sets the ops pointer to NULL. Readers first load the ops pointer, and then check through the signaled-bit whether the pointer can legally be accessed. These set and load operations could occur out of order on weakly ordered platforms. This problem can be solved very elegantly by using the ops pointer itself as the synchronization point. The pointer is either NULL, or cannot become NULL while it is being used thanks to RCU. Replace the signaled-bit check in dma_fence_timeline_name() and dma_fence_driver_name().