CVE-2024-27411 (GCVE-0-2024-27411)
Vulnerability from cvelistv5
Published
2024-05-17 11:50
Modified
2026-08-05 11:29
Summary
In the Linux kernel, the following vulnerability has been resolved: drm/nouveau: keep DMA buffers required for suspend/resume Nouveau deallocates a few buffers post GPU init which are required for GPU suspend/resume to function correctly. This is likely not as big an issue on systems where the NVGPU is the only GPU, but on multi-GPU set ups it leads to a regression where the kernel module errors and results in a system-wide rendering freeze. This commit addresses that regression by moving the two buffers required for suspend and resume to be deallocated at driver unload instead of post init.
Impacted products
Vendor Product Version
Linux Linux Version: 6190d4c08897d748dd25f0b78267a90aa1694e15
Version: 042b5f83841fbf7ce39474412db3b5e4765a7ea7
Create a notification for this product.
Show details on NVD website


{
  "containers": {
    "adp": [
      {
        "providerMetadata": {
          "dateUpdated": "2024-08-02T00:34:52.193Z",
          "orgId": "af854a3a-2127-422b-91ae-364da2661108",
          "shortName": "CVE"
        },
        "references": [
          {
            "tags": [
              "x_transferred"
            ],
            "url": "https://git.kernel.org/stable/c/be00e15b240ed71fc30c0576af7ab670c8271661"
          },
          {
            "tags": [
              "x_transferred"
            ],
            "url": "https://git.kernel.org/stable/c/f6ecfdad359a01c7fd8a3bcfde3ef0acdf107e6e"
          }
        ],
        "title": "CVE Program Container"
      },
      {
        "metrics": [
          {
            "other": {
              "content": {
                "id": "CVE-2024-27411",
                "options": [
                  {
                    "Exploitation": "none"
                  },
                  {
                    "Automatable": "no"
                  },
                  {
                    "Technical Impact": "partial"
                  }
                ],
                "role": "CISA Coordinator",
                "timestamp": "2024-09-10T15:43:09.899488Z",
                "version": "2.0.3"
              },
              "type": "ssvc"
            }
          }
        ],
        "providerMetadata": {
          "dateUpdated": "2024-09-11T17:33:25.106Z",
          "orgId": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
          "shortName": "CISA-ADP"
        },
        "title": "CISA ADP Vulnrichment"
      }
    ],
    "cna": {
      "affected": [
        {
          "defaultStatus": "unaffected",
          "product": "Linux",
          "programFiles": [
            "drivers/gpu/drm/nouveau/nvkm/subdev/gsp/r535.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "lessThan": "be00e15b240ed71fc30c0576af7ab670c8271661",
              "status": "affected",
              "version": "6190d4c08897d748dd25f0b78267a90aa1694e15",
              "versionType": "git"
            },
            {
              "lessThan": "f6ecfdad359a01c7fd8a3bcfde3ef0acdf107e6e",
              "status": "affected",
              "version": "042b5f83841fbf7ce39474412db3b5e4765a7ea7",
              "versionType": "git"
            }
          ]
        },
        {
          "defaultStatus": "unaffected",
          "product": "Linux",
          "programFiles": [
            "drivers/gpu/drm/nouveau/nvkm/subdev/gsp/r535.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "lessThan": "6.7.9",
              "status": "affected",
              "version": "6.7.6",
              "versionType": "semver"
            }
          ]
        }
      ],
      "cpeApplicability": [
        {
          "nodes": [
            {
              "cpeMatch": [
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.7.9",
                  "versionStartIncluding": "6.7.6",
                  "vulnerable": true
                }
              ],
              "negate": false,
              "operator": "OR"
            }
          ]
        }
      ],
      "descriptions": [
        {
          "lang": "en",
          "value": "In the Linux kernel, the following vulnerability has been resolved:\n\ndrm/nouveau: keep DMA buffers required for suspend/resume\n\nNouveau deallocates a few buffers post GPU init which are required for GPU suspend/resume to function correctly.\nThis is likely not as big an issue on systems where the NVGPU is the only GPU, but on multi-GPU set ups it leads to a regression where the kernel module errors and results in a system-wide rendering freeze.\n\nThis commit addresses that regression by moving the two buffers required for suspend and resume to be deallocated at driver unload instead of post init."
        }
      ],
      "metrics": [
        {
          "cvssV3_1": {
            "baseScore": 7.8,
            "baseSeverity": "HIGH",
            "vectorString": "CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H",
            "version": "3.1"
          },
          "scenarios": [
            {
              "lang": "en",
              "value": "AV:L - The vulnerable path is the nouveau GPU suspend/resume handler, reached through local DRM device-node usage and PCI runtime power management; no network or physical access is involved.\nAC:L - The condition is deterministic \u2014 `gsp-\u003ewpr_meta.data` and `gsp-\u003ermargs.data` are unconditionally NULLed at postinit, so the very first suspend after driver load faults with no race and no memory-layout dependency.\nPR:L - An unprivileged local user with access to `/dev/dri/renderD*` (the default for a desktop session) can force a `pm_runtime_get_sync`/`put_autosuspend` cycle by opening and closing the render node, triggering runtime suspend within the 5s autosuspend delay; on hybrid-graphics systems it also fires from mere idling.\nUI:N - Nouveau enables runtime PM by default on Optimus/multi-GPU systems, so autosuspend fires automatically after idle and can be induced by the attacker\u0027s own process \u2014 no victim action such as closing a lid or invoking `systemctl suspend` is needed.\nS:U - The fault and its consequences remain within the kernel\u0027s own security authority; no VM, IOMMU, or sandbox boundary is crossed by the driver\u0027s own security scope.\nC:H - The freed RMARGS/WPR-meta DMA pages remain mapped into GSP-RM\u0027s libos address space and hold the physical address of GSP-RM\u0027s shared message queues, so the GPU continues reading memory the kernel has released and reallocated, exposing arbitrary reclaimed kernel data to the device.\nI:H - Premature `dma_free_coherent()` of buffers whose bus addresses are still programmed into the GPU is a device-side use-after-free; queue physical addresses sprayed into the reclaimed page are consumed by GSP-RM as DMA targets, yielding a write primitive into arbitrary kernel memory.\nA:H - A guaranteed NULL pointer dereference at NULL+0xa8 in `r535_gsp_fini()` oopses inside the PM path with device locks held, producing the reported system-wide rendering freeze and an unrecoverable suspend/resume failure."
            }
          ]
        }
      ],
      "providerMetadata": {
        "dateUpdated": "2026-08-05T11:29:42.130Z",
        "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "shortName": "Linux"
      },
      "references": [
        {
          "url": "https://git.kernel.org/stable/c/be00e15b240ed71fc30c0576af7ab670c8271661"
        },
        {
          "url": "https://git.kernel.org/stable/c/f6ecfdad359a01c7fd8a3bcfde3ef0acdf107e6e"
        }
      ],
      "title": "drm/nouveau: keep DMA buffers required for suspend/resume",
      "x_generator": {
        "engine": "bippy-1.2.0"
      }
    }
  },
  "cveMetadata": {
    "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
    "assignerShortName": "Linux",
    "cveId": "CVE-2024-27411",
    "datePublished": "2024-05-17T11:50:46.770Z",
    "dateReserved": "2024-02-25T13:47:42.682Z",
    "dateUpdated": "2026-08-05T11:29:42.130Z",
    "state": "PUBLISHED"
  },
  "dataType": "CVE_RECORD",
  "dataVersion": "5.2",
  "vulnerability-lookup:meta": {
    "vulnrichment": {
      "containers": "{\"adp\": [{\"title\": \"CVE Program Container\", \"references\": [{\"url\": \"https://git.kernel.org/stable/c/be00e15b240ed71fc30c0576af7ab670c8271661\", \"tags\": [\"x_transferred\"]}, {\"url\": \"https://git.kernel.org/stable/c/f6ecfdad359a01c7fd8a3bcfde3ef0acdf107e6e\", \"tags\": [\"x_transferred\"]}], \"providerMetadata\": {\"orgId\": \"af854a3a-2127-422b-91ae-364da2661108\", \"shortName\": \"CVE\", \"dateUpdated\": \"2024-08-02T00:34:52.193Z\"}}, {\"title\": \"CISA ADP Vulnrichment\", \"metrics\": [{\"other\": {\"type\": \"ssvc\", \"content\": {\"id\": \"CVE-2024-27411\", \"role\": \"CISA Coordinator\", \"options\": [{\"Exploitation\": \"none\"}, {\"Automatable\": \"no\"}, {\"Technical Impact\": \"partial\"}], \"version\": \"2.0.3\", \"timestamp\": \"2024-09-10T15:43:09.899488Z\"}}}], \"providerMetadata\": {\"orgId\": \"134c704f-9b21-4f2e-91b3-4a467353bcc0\", \"shortName\": \"CISA-ADP\", \"dateUpdated\": \"2024-09-11T12:42:16.588Z\"}}], \"cna\": {\"title\": \"drm/nouveau: keep DMA buffers required for suspend/resume\", \"metrics\": [{\"cvssV3_1\": {\"version\": \"3.1\", \"baseScore\": 7.8, \"baseSeverity\": \"HIGH\", \"vectorString\": \"CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H\"}, \"scenarios\": [{\"lang\": \"en\", \"value\": \"AV:L - The vulnerable path is the nouveau GPU suspend/resume handler, reached through local DRM device-node usage and PCI runtime power management; no network or physical access is involved.\\nAC:L - The condition is deterministic \\u2014 `gsp-\u003ewpr_meta.data` and `gsp-\u003ermargs.data` are unconditionally NULLed at postinit, so the very first suspend after driver load faults with no race and no memory-layout dependency.\\nPR:L - An unprivileged local user with access to `/dev/dri/renderD*` (the default for a desktop session) can force a `pm_runtime_get_sync`/`put_autosuspend` cycle by opening and closing the render node, triggering runtime suspend within the 5s autosuspend delay; on hybrid-graphics systems it also fires from mere idling.\\nUI:N - Nouveau enables runtime PM by default on Optimus/multi-GPU systems, so autosuspend fires automatically after idle and can be induced by the attacker\u0027s own process \\u2014 no victim action such as closing a lid or invoking `systemctl suspend` is needed.\\nS:U - The fault and its consequences remain within the kernel\u0027s own security authority; no VM, IOMMU, or sandbox boundary is crossed by the driver\u0027s own security scope.\\nC:H - The freed RMARGS/WPR-meta DMA pages remain mapped into GSP-RM\u0027s libos address space and hold the physical address of GSP-RM\u0027s shared message queues, so the GPU continues reading memory the kernel has released and reallocated, exposing arbitrary reclaimed kernel data to the device.\\nI:H - Premature `dma_free_coherent()` of buffers whose bus addresses are still programmed into the GPU is a device-side use-after-free; queue physical addresses sprayed into the reclaimed page are consumed by GSP-RM as DMA targets, yielding a write primitive into arbitrary kernel memory.\\nA:H - A guaranteed NULL pointer dereference at NULL+0xa8 in `r535_gsp_fini()` oopses inside the PM path with device locks held, producing the reported system-wide rendering freeze and an unrecoverable suspend/resume failure.\"}]}], \"affected\": [{\"repo\": \"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git\", \"vendor\": \"Linux\", \"product\": \"Linux\", \"versions\": [{\"status\": \"affected\", \"version\": \"6190d4c08897d748dd25f0b78267a90aa1694e15\", \"lessThan\": \"be00e15b240ed71fc30c0576af7ab670c8271661\", \"versionType\": \"git\"}, {\"status\": \"affected\", \"version\": \"042b5f83841fbf7ce39474412db3b5e4765a7ea7\", \"lessThan\": \"f6ecfdad359a01c7fd8a3bcfde3ef0acdf107e6e\", \"versionType\": \"git\"}], \"programFiles\": [\"drivers/gpu/drm/nouveau/nvkm/subdev/gsp/r535.c\"], \"defaultStatus\": \"unaffected\"}, {\"repo\": \"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git\", \"vendor\": \"Linux\", \"product\": \"Linux\", \"versions\": [{\"status\": \"affected\", \"version\": \"6.7.6\", \"lessThan\": \"6.7.9\", \"versionType\": \"semver\"}], \"programFiles\": [\"drivers/gpu/drm/nouveau/nvkm/subdev/gsp/r535.c\"], \"defaultStatus\": \"unaffected\"}], \"references\": [{\"url\": \"https://git.kernel.org/stable/c/be00e15b240ed71fc30c0576af7ab670c8271661\"}, {\"url\": \"https://git.kernel.org/stable/c/f6ecfdad359a01c7fd8a3bcfde3ef0acdf107e6e\"}], \"x_generator\": {\"engine\": \"bippy-1.2.0\"}, \"descriptions\": [{\"lang\": \"en\", \"value\": \"In the Linux kernel, the following vulnerability has been resolved:\\n\\ndrm/nouveau: keep DMA buffers required for suspend/resume\\n\\nNouveau deallocates a few buffers post GPU init which are required for GPU suspend/resume to function correctly.\\nThis is likely not as big an issue on systems where the NVGPU is the only GPU, but on multi-GPU set ups it leads to a regression where the kernel module errors and results in a system-wide rendering freeze.\\n\\nThis commit addresses that regression by moving the two buffers required for suspend and resume to be deallocated at driver unload instead of post init.\"}], \"cpeApplicability\": [{\"nodes\": [{\"negate\": false, \"cpeMatch\": [{\"criteria\": \"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*\", \"vulnerable\": true, \"versionEndExcluding\": \"6.7.9\", \"versionStartIncluding\": \"6.7.6\"}], \"operator\": \"OR\"}]}], \"providerMetadata\": {\"orgId\": \"416baaa9-dc9f-4396-8d5f-8c081fb06d67\", \"shortName\": \"Linux\", \"dateUpdated\": \"2026-08-05T11:29:42.130Z\"}}}",
      "cveMetadata": "{\"cveId\": \"CVE-2024-27411\", \"state\": \"PUBLISHED\", \"dateUpdated\": \"2026-08-05T11:29:42.130Z\", \"dateReserved\": \"2024-02-25T13:47:42.682Z\", \"assignerOrgId\": \"416baaa9-dc9f-4396-8d5f-8c081fb06d67\", \"datePublished\": \"2024-05-17T11:50:46.770Z\", \"assignerShortName\": \"Linux\"}",
      "dataType": "CVE_RECORD",
      "dataVersion": "5.2"
    }
  }
}


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.
  • Published Proof of Concept: A public proof of concept is available for this vulnerability.
  • 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…