Skip to content
OpenAdvisories
Medium · 5.5 CVE-2025-21951 EUVD-2025-9370GHSA-pf4f-8wpm-5vh2

bus: mhi: host: pci_generic: Use pci_try_reset_function() to avoid deadlock

Published Apr 1, 2025 · Updated May 11, 2026 · Assigned by Linux

Vendor: Linux Product: Linux Package: kernel Package: linux Package: linux Package: linux-allwinner-5.19 Package: linux-aws Package: linux-aws-5.0 Package: linux-aws-5.11 Package: linux-aws-5.13 Package: linux-aws-5.15 Package: linux-aws-5.19 Package: linux-aws-5.3 Package: linux-aws-5.8 Package: linux-aws-6.2 Package: linux-aws-6.5 Package: linux-aws-6.8 Package: linux-aws-fips Package: linux-azure Package: linux-azure-5.11 Package: linux-azure-5.13 Package: linux-azure-5.15 Package: linux-azure-5.19 Package: linux-azure-5.3 Package: linux-azure-5.8 Package: linux-azure-6.11 Package: linux-azure-6.2 Package: linux-azure-6.5 Package: linux-azure-6.8 Package: linux-azure-edge Package: linux-azure-fde Package: linux-azure-fde-5.19 Package: linux-azure-fde-6.2 Package: linux-azure-fips Package: linux-azure-nvidia Package: linux-bluefield Package: linux-fips Package: linux-gcp Package: linux-gcp-5.11 Package: linux-gcp-5.13 Package: linux-gcp-5.15 Package: linux-gcp-5.19 Package: linux-gcp-5.3 Package: linux-gcp-5.8 Package: linux-gcp-6.11 Package: linux-gcp-6.2 Package: linux-gcp-6.5 Package: linux-gcp-6.8 Package: linux-gcp-fips Package: linux-gke Package: linux-gke-4.15 Package: linux-gke-5.15 Package: linux-gke-5.4 Package: linux-gkeop Package: linux-gkeop-5.15 Package: linux-gkeop-5.4 Package: linux-hwe Package: linux-hwe-5.11 Package: linux-hwe-5.13 Package: linux-hwe-5.15 Package: linux-hwe-5.19 Package: linux-hwe-5.8 Package: linux-hwe-6.11 Package: linux-hwe-6.2 Package: linux-hwe-6.5 Package: linux-hwe-6.8 Package: linux-hwe-edge Package: linux-ibm Package: linux-ibm-5.15 Package: linux-ibm-6.8 Package: linux-intel Package: linux-intel-5.13 Package: linux-intel-iot-realtime Package: linux-intel-iotg Package: linux-intel-iotg-5.15 Package: linux-kvm Package: linux-lowlatency Package: linux-lowlatency-hwe-5.15 Package: linux-lowlatency-hwe-5.19 Package: linux-lowlatency-hwe-6.11 Package: linux-lowlatency-hwe-6.2 Package: linux-lowlatency-hwe-6.5 Package: linux-lowlatency-hwe-6.8 Package: linux-nvidia Package: linux-nvidia-6.11 Package: linux-nvidia-6.2 Package: linux-nvidia-6.5 Package: linux-nvidia-6.8 Package: linux-nvidia-lowlatency Package: linux-nvidia-tegra Package: linux-nvidia-tegra-5.15 Package: linux-nvidia-tegra-igx Package: linux-oem Package: linux-oem-5.10 Package: linux-oem-5.13 Package: linux-oem-5.14 Package: linux-oem-5.17 Package: linux-oem-5.6 Package: linux-oem-6.0 Package: linux-oem-6.1 Package: linux-oem-6.11 Package: linux-oem-6.5 Package: linux-oem-6.8 Package: linux-oracle Package: linux-oracle-5.0 Package: linux-oracle-5.11 Package: linux-oracle-5.13 Package: linux-oracle-5.15 Package: linux-oracle-5.3 Package: linux-oracle-5.8 Package: linux-oracle-6.5 Package: linux-oracle-6.8 Package: linux-raspi Package: linux-raspi-realtime Package: linux-raspi2 Package: linux-realtime Package: linux-realtime-6.8 Package: linux-riscv Package: linux-riscv-5.11 Package: linux-riscv-5.15 Package: linux-riscv-5.19 Package: linux-riscv-5.8 Package: linux-riscv-6.5 Package: linux-riscv-6.8 Package: linux-starfive-5.19 Package: linux-starfive-6.2 Package: linux-starfive-6.5 Package: linux-vmware Package: linux-xilinx Package: linux-xilinx-zynqmp Platform: Linux Ecosystem: Azure Linux Ecosystem: Debian Ecosystem: Ubuntu

Description

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

bus: mhi: host: pci_generic: Use pci_try_reset_function() to avoid deadlock

There are multiple places from where the recovery work gets scheduled
asynchronously. Also, there are multiple places where the caller waits
synchronously for the recovery to be completed. One such place is during
the PM shutdown() callback.

If the device is not alive during recovery_work, it will try to reset the
device using pci_reset_function(). This function internally will take the
device_lock() first before resetting the device. By this time, if the lock
has already been acquired, then recovery_work will get stalled while
waiting for the lock. And if the lock was already acquired by the caller
which waits for the recovery_work to be completed, it will lead to
deadlock.

This is what happened on the X1E80100 CRD device when the device died
before shutdown() callback. Driver core calls the driver's shutdown()
callback while holding the device_lock() leading to deadlock.

And this deadlock scenario can occur on other paths as well, like during
the PM suspend() callback, where the driver core would hold the
device_lock() before calling driver's suspend() callback. And if the
recovery_work was already started, it could lead to deadlock. This is also
observed on the X1E80100 CRD.

So to fix both issues, use pci_try_reset_function() in recovery_work. This
function first checks for the availability of the device_lock() before
trying to reset the device. If the lock is available, it will acquire it
and reset the device. Otherwise, it will return -EAGAIN. If that happens,
recovery_work will fail with the error message "Recovery failed" as not
much could be done.

Affected products

VendorProductAffectedFixed
Linux Linux 5.12 5.15.179

Fixed in Linux distributions

Distributions backport fixes, so the version that fixes this vulnerability differs per release — upgrade to at least the version shown. From the distributions' security trackers and advisories.

ReleasePackageFixed inAdvisory
Debian 14 linux 6.12.19-1 —
Debian 13 linux 6.12.19-1 —
Debian 12 linux 6.1.133-1 DSA-5900-1
Debian 11 linux-6.1 6.1.137-1~deb11u1 DLA-4193-1
ReleasePackageFixed inAdvisory
Ubuntu Nvidia-BlueField 22.04 LTS linux-bluefield 5.15.0-1066.68 —
Ubuntu 24.04 LTS linux 6.8.0-84.84 USN-7764-1
Ubuntu 24.04 LTS linux-aws 6.8.0-1039.41 USN-7764-1
Ubuntu 24.04 LTS linux-azure 6.8.0-1038.44 USN-7802-1
Ubuntu 24.04 LTS linux-azure-6.11 6.11.0-1018.18~24.04.1 USN-7628-1
Ubuntu 24.04 LTS linux-azure-nvidia 6.8.0-1025.27 USN-7809-1
Ubuntu 24.04 LTS linux-gcp 6.8.0-1040.42 USN-7764-1
Ubuntu 24.04 LTS linux-gcp-6.11 6.11.0-1016.16~24.04.1 USN-7605-1
Ubuntu 24.04 LTS linux-gke 6.8.0-1036.40 USN-7764-1
Ubuntu 24.04 LTS linux-gkeop 6.8.0-1023.25 USN-7764-1
Ubuntu 24.04 LTS linux-hwe-6.11 6.11.0-28.28~24.04.1 USN-7605-1
Ubuntu 24.04 LTS linux-ibm 6.8.0-1037.37 USN-7779-1
Ubuntu 24.04 LTS linux-intel +4 No fix yet —
Ubuntu 24.04 LTS linux-lowlatency 6.8.0-84.84.1 USN-7764-1
Ubuntu 24.04 LTS linux-lowlatency-hwe-6.11 6.11.0-1015.16~24.04.2 USN-7605-2
Ubuntu 24.04 LTS linux-nvidia 6.8.0-1039.42 USN-7765-1
Ubuntu 24.04 LTS linux-nvidia-6.11 6.11.0-1012.12 —
Ubuntu 24.04 LTS linux-nvidia-lowlatency 6.8.0-1039.42.1 USN-7765-1
Ubuntu 24.04 LTS linux-nvidia-tegra 6.8.0-1010.10 —
Ubuntu 24.04 LTS linux-oem-6.11 6.11.0-1024.24 USN-7606-1
Ubuntu 24.04 LTS linux-oracle 6.8.0-1037.38 USN-7801-2
Ubuntu 24.04 LTS linux-raspi 6.8.0-1039.43 USN-7790-1
Ubuntu 24.04 LTS linux-xilinx 6.8.0-1018.19 —
Ubuntu 22.04 LTS linux +1 5.15.0-140.150 USN-7510-1
Ubuntu 22.04 LTS linux-aws 5.15.0-1084.91 USN-7510-7
Ubuntu 22.04 LTS linux-aws-6.8 6.8.0-1039.41~22.04.1 USN-7766-1
Ubuntu 22.04 LTS linux-azure 5.15.0-1089.98 USN-7510-3
Ubuntu 22.04 LTS linux-azure-6.8 6.8.0-1036.42~22.04.1 USN-7802-1
Ubuntu 22.04 LTS linux-azure-fde 5.15.0-1089.98.1 —
Ubuntu 22.04 LTS linux-gcp 5.15.0-1083.92 USN-7511-1
Ubuntu 22.04 LTS linux-gcp-6.8 6.8.0-1040.42~22.04.1 USN-7766-1
Ubuntu 22.04 LTS linux-gke +1 5.15.0-1081.87 USN-7511-3, USN-7510-1
Ubuntu 22.04 LTS linux-gkeop 5.15.0-1066.74 USN-7510-1
Ubuntu 22.04 LTS linux-hwe-6.8 6.8.0-85.85~22.04.1 USN-7801-1, USN-7764-2
Ubuntu 22.04 LTS linux-ibm 5.15.0-1076.79 USN-7510-1
Ubuntu 22.04 LTS linux-ibm-6.8 6.8.0-1037.37~22.04.1 USN-7779-1
Ubuntu 22.04 LTS linux-intel-iotg 5.15.0-1079.85 USN-7510-1
Ubuntu 22.04 LTS linux-kvm 5.15.0-1080.85 USN-7510-1
Ubuntu 22.04 LTS linux-lowlatency-hwe-6.8 6.8.0-84.84.1~22.04.1 USN-7764-1
Ubuntu 22.04 LTS linux-nvidia 5.15.0-1078.79 USN-7510-1
Ubuntu 22.04 LTS linux-nvidia-6.8 6.8.0-1039.42~22.04.1 USN-7765-1
Ubuntu 22.04 LTS linux-nvidia-tegra 5.15.0-1037.37 USN-7510-3
Ubuntu 22.04 LTS linux-nvidia-tegra-igx 5.15.0-1026.26 USN-7510-7
Ubuntu 22.04 LTS linux-oracle-6.8 6.8.0-1037.38~22.04.1 USN-7801-3
Ubuntu 22.04 LTS linux-raspi 5.15.0-1078.81 USN-7510-7
Ubuntu 22.04 LTS linux-riscv +32 No fix yet —
Ubuntu 22.04 LTS linux-riscv-6.8 6.8.0-84.84~22.04.1 —
Ubuntu 22.04 LTS linux-xilinx-zynqmp 5.15.0-1050.54 USN-7602-1
Ubuntu 20.04 LTS linux-aws-5.15 5.15.0-1084.91~20.04.1 USN-7510-8
Ubuntu 20.04 LTS linux-azure-5.15 5.15.0-1089.98~20.04.1 USN-7510-3
Ubuntu 20.04 LTS linux-gcp-5.15 5.15.0-1083.92~20.04.1 USN-7512-1
Ubuntu 20.04 LTS linux-gke +28 No fix yet —
Ubuntu 20.04 LTS linux-ibm-5.15 5.15.0-1076.79~20.04.1 USN-7510-1
Ubuntu 20.04 LTS linux-intel-iotg-5.15 5.15.0-1079.85~20.04.1 USN-7510-7
Ubuntu 20.04 LTS linux-lowlatency-hwe-5.15 5.15.0-140.150~20.04.1 USN-7510-1
Ubuntu 20.04 LTS linux-oracle-5.15 5.15.0-1081.87~20.04.1 USN-7510-1
Ubuntu 20.04 LTS linux-riscv-5.15 5.15.0-1079.83~20.04.1 —
Ubuntu 18.04 LTS linux-gcp +14 No fix yet —
Show 7 more (older releases, extended support, other products)
ReleasePackageFixed inAdvisory
Ubuntu 16.04 LTS linux-hwe-edge No fix yet —
Ubuntu Pro Realtime 24.04 LTS linux-raspi-realtime 6.8.0-2030.31 USN-7800-1
Ubuntu Pro Realtime 24.04 LTS linux-realtime 6.8.1-1034.35 USN-7767-1
Ubuntu Pro Realtime 22.04 LTS linux-intel-iot-realtime 5.15.0-1077.79 USN-7510-4
Ubuntu Pro Realtime 22.04 LTS linux-realtime 5.15.0-1084.93 USN-7510-4
Ubuntu Pro Realtime 22.04 LTS linux-realtime-6.8 6.8.1-1034.35~22.04.1 USN-7767-2
Ubuntu Pro FIPS-updates 24.04 LTS linux-aws-fips 6.8.0-1039.41+fips1 —
Ubuntu Pro FIPS-updates 24.04 LTS linux-azure-fips 6.8.0-1040.46+fips1 —
Ubuntu Pro FIPS-updates 24.04 LTS linux-fips 6.8.0-84.84+fips1 —
Ubuntu Pro FIPS-updates 24.04 LTS linux-gcp-fips 6.8.0-1040.42+fips1 —
Ubuntu Pro FIPS-updates 22.04 LTS linux-aws-fips 5.15.0-1084.91+fips1 USN-7510-6
Ubuntu Pro FIPS-updates 22.04 LTS linux-azure-fips 5.15.0-1089.98+fips1 USN-7510-5
Ubuntu Pro FIPS-updates 22.04 LTS linux-fips 5.15.0-140.150+fips1 USN-7510-2
Ubuntu Pro FIPS-updates 22.04 LTS linux-gcp-fips 5.15.0-1083.92+fips1 USN-7511-2
Ubuntu Pro FIPS-preview 22.04 LTS linux-fips +3 No fix yet —
Ubuntu Pro 20.04 LTS linux-hwe-5.15 5.15.0-142.152~20.04.1 USN-7593-1
Ubuntu Pro 20.04 LTS linux-nvidia-tegra-5.15 5.15.0-1039.39~20.04.1 —
ReleasePackageFixed inAdvisory
SLES 15 SP7 kernel-64kb +6 6.4.0-150700.53.3.1 SUSE-SU-2025:01951-1
SLES 15 SP7 kernel-azure +2 6.4.0-150700.20.3.1 SUSE-SU-2025:01967-1
SLES 15 SP7 kernel-default-base 6.4.0-150700.53.3.1.150700.17.2.1 SUSE-SU-2025:01951-1
SLES 15 SP6 kernel-64kb +6 6.4.0-150600.23.50.1 SUSE-SU-2025:01614-1
SLES 15 SP6 kernel-azure +2 6.4.0-150600.8.37.1 SUSE-SU-2025:01707-1
SLES 15 SP6 kernel-coco +3 6.4.0-15061.21.coco15sp6.1 SUSE-SU-2025:01919-1
SLES 15 SP6 kernel-default-base 6.4.0-150600.23.50.1.150600.12.22.1 SUSE-SU-2025:01614-1
Show 5 more (older releases, extended support, other products)
ReleasePackageFixed inAdvisory
SLE Micro 6.1 kernel-default-base 6.4.0-28.1.21.6 SUSE-SU-2025:20270-1
SLE Micro 6.1 kernel-livepatch-MICRO-6-0-RT_Update_7 1-1.3 SUSE-SU-2025:20283-1
SLE Micro 6.1 kernel-livepatch-MICRO-6-0_Update_6 1-3.1 SUSE-SU-2025:20270-1
SLE Micro 6.1 kernel-rt +1 6.4.0-30.1 SUSE-SU-2025:20283-1
SLE Micro 6.1 kernel-source +2 6.4.0-28.1 SUSE-SU-2025:20270-1
SLE Micro 6.0 kernel-default-base 6.4.0-28.1.21.6 SUSE-SU-2025:20192-1
SLE Micro 6.0 kernel-livepatch-MICRO-6-0-RT_Update_7 1-1.3 SUSE-SU-2025:20206-1
SLE Micro 6.0 kernel-livepatch-MICRO-6-0_Update_6 1-3.1 SUSE-SU-2025:20192-1
SLE Micro 6.0 kernel-rt +1 6.4.0-30.1 SUSE-SU-2025:20206-1
SLE Micro 6.0 kernel-source +2 6.4.0-28.1 SUSE-SU-2025:20192-1
SLE Live Patching 15 SP7 kernel-default 6.4.0-150700.53.3.1 SUSE-SU-2025:01951-1
SLE Live Patching 15 SP7 kernel-livepatch-SLE15-SP7_Update_1 1-150700.15.3.1 SUSE-SU-2025:01951-1
SLE Live Patching 15 SP6 kernel-default 6.4.0-150600.23.50.1 SUSE-SU-2025:01614-1
SLE Live Patching 15 SP6 kernel-livepatch-SLE15-SP6-RT_Update_11 1-150600.1.3.2 SUSE-SU-2025:01964-1
SLE Live Patching 15 SP6 kernel-livepatch-SLE15-SP6_Update_11 1-150600.13.3.1 SUSE-SU-2025:01614-1
SUSE Real Time Module 15 SP6 kernel-rt +3 6.4.0-150600.10.39.1 SUSE-SU-2025:01964-1
ReleasePackageFixed inAdvisory
openSUSE Leap 15.6 dtb-aarch64 +10 6.4.0-150600.23.50.1 SUSE-SU-2025:01614-1
openSUSE Leap 15.6 kernel-azure +2 6.4.0-150600.8.37.1 SUSE-SU-2025:01707-1
openSUSE Leap 15.6 kernel-default-base 6.4.0-150600.23.50.1.150600.12.22.1 SUSE-SU-2025:01614-1
openSUSE Leap 15.6 kernel-rt +3 6.4.0-150600.10.39.1 SUSE-SU-2025:01964-1

Azure Linux

ReleasePackageFixed inAdvisory
Azure Linux 3 kernel 6.6.85.1-2 —
Azure Linux 2 (CBL-Mariner) kernel 5.15.180.1-1 —

Oracle Linux

ReleasePackageFixed inAdvisory
Oracle Linux 9 kernel-uek +34 6.12.0-101.33.4.3.el10uek ELSA-2025-20530, ELSA-2025-20480

Advisories 47

References