CVE-2024-58093 (GCVE-0-2024-58093)
Vulnerability from cvelistv5
Published
2025-04-16 14:11
Modified
2025-05-26 05:16
Severity ?
Summary
In the Linux kernel, the following vulnerability has been resolved: PCI/ASPM: Fix link state exit during switch upstream function removal Before 456d8aa37d0f ("PCI/ASPM: Disable ASPM on MFD function removal to avoid use-after-free"), we would free the ASPM link only after the last function on the bus pertaining to the given link was removed. That was too late. If function 0 is removed before sibling function, link->downstream would point to free'd memory after. After above change, we freed the ASPM parent link state upon any function removal on the bus pertaining to a given link. That is too early. If the link is to a PCIe switch with MFD on the upstream port, then removing functions other than 0 first would free a link which still remains parent_link to the remaining downstream ports. The resulting GPFs are especially frequent during hot-unplug, because pciehp removes devices on the link bus in reverse order. On that switch, function 0 is the virtual P2P bridge to the internal bus. Free exactly when function 0 is removed -- before the parent link is obsolete, but after all subordinate links are gone. [kwilczynski: commit log]
Impacted products
Vendor Product Version
Linux Linux Version: 456d8aa37d0f56fc9e985e812496e861dcd6f2f2
Version: 666e7f9d60cee23077ea3e6331f6f8a19f7ea03f
Version: 7badf4d6f49a358a01ab072bbff88d3ee886c33b
Version: 9856c0de49052174ab474113f4ba40c02aaee086
Version: 7aecdd47910c51707696e8b0e045b9f88bd4230f
Version: d51d2eeae4ce54d542909c4d9d07bf371a78592c
Version: 4203722d51afe3d239e03f15cc73efdf023a7103
Create a notification for this product.
Show details on NVD website


{
  "containers": {
    "cna": {
      "affected": [
        {
          "defaultStatus": "unaffected",
          "product": "Linux",
          "programFiles": [
            "drivers/pci/pcie/aspm.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "lessThan": "cbf937dcadfd571a434f8074d057b32cd14fbea5",
              "status": "affected",
              "version": "456d8aa37d0f56fc9e985e812496e861dcd6f2f2",
              "versionType": "git"
            },
            {
              "status": "affected",
              "version": "666e7f9d60cee23077ea3e6331f6f8a19f7ea03f",
              "versionType": "git"
            },
            {
              "status": "affected",
              "version": "7badf4d6f49a358a01ab072bbff88d3ee886c33b",
              "versionType": "git"
            },
            {
              "status": "affected",
              "version": "9856c0de49052174ab474113f4ba40c02aaee086",
              "versionType": "git"
            },
            {
              "status": "affected",
              "version": "7aecdd47910c51707696e8b0e045b9f88bd4230f",
              "versionType": "git"
            },
            {
              "status": "affected",
              "version": "d51d2eeae4ce54d542909c4d9d07bf371a78592c",
              "versionType": "git"
            },
            {
              "status": "affected",
              "version": "4203722d51afe3d239e03f15cc73efdf023a7103",
              "versionType": "git"
            }
          ]
        },
        {
          "defaultStatus": "affected",
          "product": "Linux",
          "programFiles": [
            "drivers/pci/pcie/aspm.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "status": "affected",
              "version": "6.5"
            },
            {
              "lessThan": "6.5",
              "status": "unaffected",
              "version": "0",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "*",
              "status": "unaffected",
              "version": "6.15",
              "versionType": "original_commit_for_fix"
            }
          ]
        }
      ],
      "cpeApplicability": [
        {
          "nodes": [
            {
              "cpeMatch": [
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.15",
                  "versionStartIncluding": "6.5",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionStartIncluding": "5.4.251",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionStartIncluding": "5.10.188",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionStartIncluding": "5.15.121",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionStartIncluding": "6.1.39",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionStartIncluding": "6.3.13",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionStartIncluding": "6.4.4",
                  "vulnerable": true
                }
              ],
              "negate": false,
              "operator": "OR"
            }
          ]
        }
      ],
      "descriptions": [
        {
          "lang": "en",
          "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nPCI/ASPM: Fix link state exit during switch upstream function removal\n\nBefore 456d8aa37d0f (\"PCI/ASPM: Disable ASPM on MFD function removal to\navoid use-after-free\"), we would free the ASPM link only after the last\nfunction on the bus pertaining to the given link was removed.\n\nThat was too late. If function 0 is removed before sibling function,\nlink-\u003edownstream would point to free\u0027d memory after.\n\nAfter above change, we freed the ASPM parent link state upon any function\nremoval on the bus pertaining to a given link.\n\nThat is too early. If the link is to a PCIe switch with MFD on the upstream\nport, then removing functions other than 0 first would free a link which\nstill remains parent_link to the remaining downstream ports.\n\nThe resulting GPFs are especially frequent during hot-unplug, because\npciehp removes devices on the link bus in reverse order.\n\nOn that switch, function 0 is the virtual P2P bridge to the internal bus.\nFree exactly when function 0 is removed -- before the parent link is\nobsolete, but after all subordinate links are gone.\n\n[kwilczynski: commit log]"
        }
      ],
      "providerMetadata": {
        "dateUpdated": "2025-05-26T05:16:33.817Z",
        "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "shortName": "Linux"
      },
      "references": [
        {
          "url": "https://git.kernel.org/stable/c/cbf937dcadfd571a434f8074d057b32cd14fbea5"
        }
      ],
      "title": "PCI/ASPM: Fix link state exit during switch upstream function removal",
      "x_generator": {
        "engine": "bippy-1.2.0"
      }
    }
  },
  "cveMetadata": {
    "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
    "assignerShortName": "Linux",
    "cveId": "CVE-2024-58093",
    "datePublished": "2025-04-16T14:11:42.682Z",
    "dateReserved": "2025-03-06T15:52:09.188Z",
    "dateUpdated": "2025-05-26T05:16:33.817Z",
    "state": "PUBLISHED"
  },
  "dataType": "CVE_RECORD",
  "dataVersion": "5.1",
  "vulnerability-lookup:meta": {
    "nvd": "{\"cve\":{\"id\":\"CVE-2024-58093\",\"sourceIdentifier\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"published\":\"2025-04-16T15:15:53.220\",\"lastModified\":\"2025-04-17T20:22:16.240\",\"vulnStatus\":\"Awaiting Analysis\",\"cveTags\":[],\"descriptions\":[{\"lang\":\"en\",\"value\":\"In the Linux kernel, the following vulnerability has been resolved:\\n\\nPCI/ASPM: Fix link state exit during switch upstream function removal\\n\\nBefore 456d8aa37d0f (\\\"PCI/ASPM: Disable ASPM on MFD function removal to\\navoid use-after-free\\\"), we would free the ASPM link only after the last\\nfunction on the bus pertaining to the given link was removed.\\n\\nThat was too late. If function 0 is removed before sibling function,\\nlink-\u003edownstream would point to free\u0027d memory after.\\n\\nAfter above change, we freed the ASPM parent link state upon any function\\nremoval on the bus pertaining to a given link.\\n\\nThat is too early. If the link is to a PCIe switch with MFD on the upstream\\nport, then removing functions other than 0 first would free a link which\\nstill remains parent_link to the remaining downstream ports.\\n\\nThe resulting GPFs are especially frequent during hot-unplug, because\\npciehp removes devices on the link bus in reverse order.\\n\\nOn that switch, function 0 is the virtual P2P bridge to the internal bus.\\nFree exactly when function 0 is removed -- before the parent link is\\nobsolete, but after all subordinate links are gone.\\n\\n[kwilczynski: commit log]\"},{\"lang\":\"es\",\"value\":\"En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad: PCI/ASPM: Correcci\u00f3n de la salida del estado del enlace durante la eliminaci\u00f3n de la funci\u00f3n ascendente del conmutador. Antes de la versi\u00f3n 456d8aa37d0f (\\\"PCI/ASPM: Deshabilitar ASPM al eliminar la funci\u00f3n MFD para evitar el use-after-free\\\"), liber\u00e1bamos el enlace ASPM solo despu\u00e9s de eliminar la \u00faltima funci\u00f3n del bus correspondiente al enlace en cuesti\u00f3n. Era demasiado tarde. Si la funci\u00f3n 0 se elimina antes que la funci\u00f3n hermana, enlace-\u0026gt;descendente apuntar\u00eda a la memoria liberada despu\u00e9s. Tras el cambio mencionado, liber\u00e1bamos el estado del enlace principal ASPM al eliminar cualquier funci\u00f3n del bus correspondiente a un enlace determinado. Era demasiado pronto. Si el enlace es a un conmutador PCIe con MFD en el puerto ascendente, eliminar primero las funciones distintas de la 0 liberar\u00eda un enlace que a\u00fan permanece como parent_link para los puertos descendentes restantes. Los GPF resultantes son especialmente frecuentes durante la desconexi\u00f3n en caliente, ya que pciehp elimina los dispositivos del bus de enlace en orden inverso. En ese conmutador, la funci\u00f3n 0 es el puente P2P virtual al bus interno. Se libera exactamente cuando se elimina la funci\u00f3n 0: antes de que el enlace principal quede obsoleto, pero despu\u00e9s de que todos los enlaces subordinados desaparezcan. [kwilczynski: registro de confirmaciones]\"}],\"metrics\":{},\"references\":[{\"url\":\"https://git.kernel.org/stable/c/cbf937dcadfd571a434f8074d057b32cd14fbea5\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"}]}}"
  }
}


Log in or create an account to share your comment.




Tags
Taxonomy of the tags.


Loading…

Loading…

Loading…

Sightings

Author Source Type Date

Nomenclature

  • Seen: The vulnerability was mentioned, discussed, or seen somewhere by the user.
  • Confirmed: The vulnerability is confirmed from an analyst perspective.
  • Exploited: This vulnerability was exploited and seen by the user reporting the sighting.
  • Patched: This vulnerability was successfully patched by the user reporting the sighting.
  • Not exploited: This vulnerability was not exploited or seen by the user reporting the sighting.
  • Not confirmed: The user expresses doubt about the veracity of the vulnerability.
  • Not patched: This vulnerability was not successfully patched by the user reporting the sighting.


Loading…

Loading…