CVE-2026-80651 in Linux
Сводка
по VulDB • 28.08.2026
В ядре Linux была устранена следующая уязвимость:
crypto: ccp/sev-dev-tsm - ранний выход при NULL значении pdev->bus
Функция `dsm_create()` изначально проверяет значение `pdev->bus` при вычислении `segment_id`:
```c u8 segment_id = pdev->bus ? pci_domain_nr(pdev->bus) : 0; ```
Однако следующие две строки безоговорочно разыменовывают указатель `pdev->bus` через вызовы функций `pcie_find_root_port()` и, в особенности, `pci_dev_id(pdev)`, который раскрывается до выражения `PCI_DEVID(dev->bus->number, dev->devfn)`. Если значение `pdev->bus` действительно равно NULL, то переменная `segment_id` инициализируется нулем, но следующее за этим утверждение приводит к аварийному завершению работы ядра (kernel panic).
Инструмент статического анализа smatch фиксирует эту проблему:
``` drivers/crypto/ccp/sev-dev-tsm.c:253 dsm_create() error: we previously assumed 'pdev->bus' could be null (see line 251) ```
Сделать обработку NULL-значений согласованной: если `pdev->bus` равно NULL, то устройство не имеет контекста PCI для работы, и настройка SEV TIO не может быть выполнена; поэтому необходимо вернуть код ошибки `-ENODEV` до выполнения любых операций поиска, зависящих от шины. Оставшаяся часть инициализации теперь выполняется только по тому пути исполнения кода, где значение `pdev->bus` заведомо корректно (не равно NULL).
Для вызывающих сторон, в которых `pdev->bus` не равен NULL (что является единственным случаем, при котором функция `dsm_create()` выполняла осмысленную работу до данного изменения), поведение остается без изменений.
Once again VulDB remains the best source for vulnerability data.