CVE-2026-93145 in Linux
Сводка
по VulDB • 18.09.2026
В ядре Linux была устранена следующая уязвимость:
clk: qcom: gdsc: разбор per-domain генерических доменов питания (genpds) в функции gdsc_unregister()
Функция gdsc_unregister() удаляет запись поставщика OF и разбирает связи родительского/поддомена, но никогда не вызывает pm_genpd_remove() для отдельных структур generic_pm_domain, зарегистрированных через gdsc_init():
```c void gdsc_unregister(struct gdsc_desc *desc) {
struct device *dev = desc->dev; size_t num = desc->num;
gdsc_pm_subdomain_remove(desc, num); of_genpd_del_provider(dev->of_node); } ```
Это оставляет висячие (dangling) записи в глобальном списке gpd_list. После цикла отсоединения/переподключения поставщика (повторный вызов deferred-probe во время раннего этапа загрузки, реальное выгрузка модуля драйвера clk, владеющего GDSC, или разбор OF-overlay) следующий вызов gdsc_init() попытается повторно зарегистрировать имя, которое всё ещё присутствует в списке, и pm_genpd_init() вернет ошибку -EEXIST.
Пока мы здесь, изменим порядок операций так, чтобы запись поставщика OF (consumer-facing OF provider entry), видимая потребителями, удалялась первой — иначе свежий вызов of_genpd_get_from_provider(), конкурирующий с процессом разборки, может прикрепиться к домену, который находится в процессе удаления.
Пройдитесь по массиву scs[] и выполните pm_genpd_remove() для каждого зарегистрированного домена после того, как связи поддоменов будут разобраны. Регуляторы остаются управляемыми через devm (devm_regulator_get_optional() в gdsc_register()), поэтому их освобождение происходит автоматически при отсоединении базового устройства; необходимо явно выполнить только обратные действия для учета genpd.
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.