CVE-2021-47421

Summary

In the Linux kernel, the following vulnerability has been resolved:

drm/amdgpu: handle the case of pci_channel_io_frozen only in amdgpu_pci_resume

In current code, when a PCI error state pci_channel_io_normal is detectd, it will report PCI_ERS_RESULT_CAN_RECOVER status to PCI driver, and PCI driver will continue the execution of PCI resume callback report_resume by pci_walk_bridge, and the callback will go into amdgpu_pci_resume finally, where write lock is releasd unconditionally without acquiring such lock first. In this case, a deadlock will happen when other threads start to acquire the read lock.

To fix this, add a member in amdgpu_device strucutre to cache pci_channel_state, and only continue the execution in amdgpu_pci_resume when it's pci_channel_io_frozen.

Affected Software

VendorProductVersion RangeStatus
LinuxLinuxc9a6b82f45e261d247b980a7949aaa6a9bfffe01 < 785cc093b6b5a93cc350421a55f3f1eda6585156affected
LinuxLinuxc9a6b82f45e261d247b980a7949aaa6a9bfffe01 < 72e9a1bf9b722628c28092e0c2cd8717edd201dcaffected
LinuxLinuxc9a6b82f45e261d247b980a7949aaa6a9bfffe01 < 248b061689a40f4fed05252ee2c89f87cf26d7d8affected
LinuxLinux5.10affected
LinuxLinux0 < 5.10unaffected
LinuxLinux5.10.241 <= 5.10.*unaffected
LinuxLinux5.14.12 <= 5.14.*unaffected
LinuxLinux5.15 <= *unaffected

Weaknesses

ADP Enrichment

CVE Program Container

Additional References

CISA ADP Vulnrichment

  • SSVC:
  • Exploitation: none
    • Automatable: no
    • Technical Impact: partial

References