In the Linux kernel, the following vulnerability has been resolved:
pds_core: Prevent race issues involving the adminq
There are multiple paths that can result in using the pdsc's adminq.
[1] pdsc_adminq_isr and the resulting work from queue_work(), i.e. pdsc_work_thread()->pdsc_process_adminq()
[2] pdsc_adminq_post()
When the device goes through reset via PCIe reset and/or a fw_down/fw_up cycle due to bad PCIe state or bad device state the adminq is destroyed and recreated.
A NULL pointer dereference can happen if [1] or [2] happens after the adminq is already destroyed.
In order to fix this, add some further state checks and implement reference counting for adminq uses. Reference counting was used because multiple threads can attempt to access the adminq at the same time via [1] or [2]. Additionally, multiple clients (i.e. pds-vfio-pci) can be using [2] at the same time.
The adminq_refcnt is initialized to 1 when the adminq has been allocated and is ready to use. Users/clients of the adminq (i.e. [1] and [2]) will increment the refcnt when they are using the adminq. When the driver goes into a fw_down cycle it will set the PDSC_S_FW_DEAD bit and then wait for the adminq_refcnt to hit 1. Setting the PDSC_S_FW_DEAD before waiting will prevent any further adminq_refcnt increments. Waiting for the adminq_refcnt to hit 1 allows for any current users of the adminq to finish before the driver frees the adminq. Once the adminq_refcnt hits 1 the driver clears the refcnt to signify that the adminq is deleted and cannot be used. On the fw_up cycle the driver will once again initialize the adminq_refcnt to 1 allowing the adminq to be used again.
| Product | Vendor Advisory | Solution File | Added | Published |
|---|---|---|---|---|
| Debian | — | Upgrade linux | Jul 27, 2026 | Jul 27, 2026 |
| Oracle_linux | — | Upgrade kernel-uek | Nov 11, 2024 | Mar 6, 2024 |
| Suse | — | Upgrade kernel-source-vanillaUpgrade kernel-azure-extraUpgrade kernel-64kbUpgrade dtb-exynosUpgrade dtb-amazonUpgrade kernel-rt_debug-livepatch-develUpgrade kernel-rt-optionalUpgrade kernel-rt-livepatch-develUpgrade kernel-debug-livepatch-develUpgrade dlm-kmp-64kbUpgrade kernel-syms-azureUpgrade dtb-marvellUpgrade dtb-caviumUpgrade cluster-md-kmp-64kbUpgrade dtb-appleUpgrade kernel-source-azureUpgrade kernel-rt-extraUpgrade kernel-azure-vdsoUpgrade gfs2-kmp-defaultUpgrade kernel-syms-rtUpgrade dtb-amdUpgrade kernel-kvmsmall-vdsoUpgrade kernel-debug-vdsoUpgrade dtb-sprdUpgrade ocfs2-kmp-64kbUpgrade kernel-source-rtUpgrade kernel-docs-htmlUpgrade dtb-lgUpgrade kernel-rt_debug-vdsoUpgrade kernel-sourceUpgrade kernel-azure-optionalUpgrade dtb-freescaleUpgrade dtb-broadcomUpgrade kernel-azureUpgrade kernel-azure-develUpgrade kernel-azure-livepatch-develUpgrade ocfs2-kmp-defaultUpgrade reiserfs-kmp-rtUpgrade reiserfs-kmp-64kbUpgrade kernel-rt_debug-develUpgrade kernel-obs-buildUpgrade kernel-kvmsmall-livepatch-develUpgrade gfs2-kmp-azureUpgrade kernel-rt_debugUpgrade kernel-rt-vdsoUpgrade kernel-default-develUpgrade kselftests-kmp-64kbUpgrade kernel-64kb-extraUpgrade dtb-socionextUpgrade dlm-kmp-rtUpgrade kernel-rtUpgrade dtb-alteraUpgrade kselftests-kmp-azureUpgrade kernel-default-livepatchUpgrade kernel-default-baseUpgrade kernel-default-extraUpgrade dtb-qcomUpgrade kernel-defaultUpgrade kselftests-kmp-rtUpgrade cluster-md-kmp-azureUpgrade dtb-renesasUpgrade dtb-mediatekUpgrade gfs2-kmp-rtUpgrade kernel-64kb-livepatch-develUpgrade dtb-nvidiaUpgrade kernel-symsUpgrade kernel-kvmsmallUpgrade ocfs2-kmp-azureUpgrade kernel-debugUpgrade kernel-debug-develUpgrade kernel-64kb-optionalUpgrade dtb-allwinnerUpgrade kernel-develUpgrade reiserfs-kmp-defaultUpgrade cluster-md-kmp-rtUpgrade dtb-hisiliconUpgrade dtb-rockchipUpgrade dtb-amlogicUpgrade dtb-xilinxUpgrade kernel-default-livepatch-develUpgrade kernel-obs-qaUpgrade kernel-docsUpgrade reiserfs-kmp-azureUpgrade ocfs2-kmp-rtUpgrade kernel-zfcpdumpUpgrade cluster-md-kmp-defaultUpgrade dlm-kmp-azureUpgrade kernel-rt-develUpgrade dlm-kmp-defaultUpgrade kernel-64kb-develUpgrade kernel-devel-rtUpgrade kernel-default-base-rebuildUpgrade kernel-macrosUpgrade kernel-kvmsmall-develUpgrade kernel-default-vdsoUpgrade kernel-devel-azureUpgrade gfs2-kmp-64kbUpgrade dtb-armUpgrade dtb-apmUpgrade kernel-default-optionalUpgrade kselftests-kmp-default | Aug 8, 2024 | Mar 6, 2024 |
| Ubuntu | — | Upgrade linux-image-6.5.0-1018-raspiUpgrade linux-image-azure-fdeUpgrade linux-image-azureUpgrade linux-image-generic-lpaeUpgrade linux-image-oem-22.04aUpgrade linux-image-awsUpgrade linux-image-oracleUpgrade linux-image-6.5.0-1024-oracleUpgrade linux-image-6.5.0-1021-awsUpgrade linux-image-raspi-nolpaeUpgrade linux-image-kvmUpgrade linux-image-6.5.0-1024-oemUpgrade linux-image-nvidia-6.5Upgrade linux-image-lowlatency-hwe-22.04Upgrade linux-image-6.5.0-1021-nvidiaUpgrade linux-image-oracle-64kUpgrade linux-image-6.5.0-41-lowlatency-64kUpgrade linux-image-6.5.0-41-lowlatencyUpgrade linux-image-6.5.0-1022-gcpUpgrade linux-image-nvidia-hwe-22.04Upgrade linux-image-generic-64k-hwe-22.04Upgrade linux-image-generic-64kUpgrade linux-image-6.5.0-1017-laptopUpgrade linux-image-generic-hwe-22.04Upgrade linux-image-6.5.0-41-generic-64kUpgrade linux-image-6.5.0-41-genericUpgrade linux-image-oem-22.04bUpgrade linux-image-6.5.0-1022-azure-fdeUpgrade linux-image-lowlatencyUpgrade linux-image-lowlatency-64k-hwe-22.04Upgrade linux-image-genericUpgrade linux-image-6.5.0-1015-starfiveUpgrade linux-image-gcpUpgrade linux-image-oem-22.04cUpgrade linux-image-virtualUpgrade linux-image-6.5.0-1022-azureUpgrade linux-image-laptop-23.10Upgrade linux-image-oem-22.04dUpgrade linux-image-virtual-hwe-22.04Upgrade linux-image-lowlatency-64kUpgrade linux-image-nvidia-64k-6.5Upgrade linux-image-6.5.0-1024-oracle-64kUpgrade linux-image-nvidia-64k-hwe-22.04Upgrade linux-image-raspiUpgrade linux-image-oem-22.04Upgrade linux-image-6.5.0-1021-nvidia-64kUpgrade linux-image-starfive | May 17, 2024 | Mar 6, 2024 |
With curated Threat Intelligence, you can see which vulnerabilities truly put you at risk, prioritize what matters most, and act before attackers do.
Explore Intelligence Hub