CVE-2022-49645 (GCVE-0-2022-49645)
Vulnerability from cvelistv5
Published
2025-02-26 02:23
Modified
2026-08-05 08:55
Summary
In the Linux kernel, the following vulnerability has been resolved: drm/panfrost: Fix shrinker list corruption by madvise IOCTL Calling madvise IOCTL twice on BO causes memory shrinker list corruption and crashes kernel because BO is already on the list and it's added to the list again, while BO should be removed from the list before it's re-added. Fix it.
Impacted products
Vendor Product Version
Linux Linux Version: 013b6510131568ce4e01856d5360bfdfe9c3632f
Version: 013b6510131568ce4e01856d5360bfdfe9c3632f
Version: 013b6510131568ce4e01856d5360bfdfe9c3632f
Version: 013b6510131568ce4e01856d5360bfdfe9c3632f
Version: 013b6510131568ce4e01856d5360bfdfe9c3632f
Create a notification for this product.
Show details on NVD website


{
  "containers": {
    "cna": {
      "affected": [
        {
          "defaultStatus": "unaffected",
          "product": "Linux",
          "programFiles": [
            "drivers/gpu/drm/panfrost/panfrost_drv.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "lessThan": "393594aad55179eb761af41533d8d1d6eb4543b0",
              "status": "affected",
              "version": "013b6510131568ce4e01856d5360bfdfe9c3632f",
              "versionType": "git"
            },
            {
              "lessThan": "0581613df7f9a4c5fac096ce1d5fb15b7b994240",
              "status": "affected",
              "version": "013b6510131568ce4e01856d5360bfdfe9c3632f",
              "versionType": "git"
            },
            {
              "lessThan": "1807d8867402a58b831a7fc16832747ff559a0d1",
              "status": "affected",
              "version": "013b6510131568ce4e01856d5360bfdfe9c3632f",
              "versionType": "git"
            },
            {
              "lessThan": "f036392edd9c49090781d8cca26ad6557a63bae4",
              "status": "affected",
              "version": "013b6510131568ce4e01856d5360bfdfe9c3632f",
              "versionType": "git"
            },
            {
              "lessThan": "9fc33eaaa979d112d10fea729edcd2a2e21aa912",
              "status": "affected",
              "version": "013b6510131568ce4e01856d5360bfdfe9c3632f",
              "versionType": "git"
            }
          ]
        },
        {
          "defaultStatus": "affected",
          "product": "Linux",
          "programFiles": [
            "drivers/gpu/drm/panfrost/panfrost_drv.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "status": "affected",
              "version": "5.4"
            },
            {
              "lessThan": "5.4",
              "status": "unaffected",
              "version": "0",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "5.4.*",
              "status": "unaffected",
              "version": "5.4.207",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "5.10.*",
              "status": "unaffected",
              "version": "5.10.132",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "5.15.*",
              "status": "unaffected",
              "version": "5.15.56",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "5.18.*",
              "status": "unaffected",
              "version": "5.18.13",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "*",
              "status": "unaffected",
              "version": "5.19",
              "versionType": "original_commit_for_fix"
            }
          ]
        }
      ],
      "cpeApplicability": [
        {
          "nodes": [
            {
              "cpeMatch": [
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "5.4.207",
                  "versionStartIncluding": "5.4",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "5.10.132",
                  "versionStartIncluding": "5.4",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "5.15.56",
                  "versionStartIncluding": "5.4",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "5.18.13",
                  "versionStartIncluding": "5.4",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "5.19",
                  "versionStartIncluding": "5.4",
                  "vulnerable": true
                }
              ],
              "negate": false,
              "operator": "OR"
            }
          ]
        }
      ],
      "descriptions": [
        {
          "lang": "en",
          "value": "In the Linux kernel, the following vulnerability has been resolved:\n\ndrm/panfrost: Fix shrinker list corruption by madvise IOCTL\n\nCalling madvise IOCTL twice on BO causes memory shrinker list corruption\nand crashes kernel because BO is already on the list and it\u0027s added to\nthe list again, while BO should be removed from the list before it\u0027s\nre-added. Fix it."
        }
      ],
      "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 bug is reached via DRM_IOCTL_PANFROST_MADVISE on a local Panfrost render node (/dev/dri/renderD*), after CREATE_BO; it is not reachable from the network.\nAC:L - An attacker reliably triggers corruption by issuing MADVISE(DONTNEED) twice on the same BO; drm_gem_shmem_madvise still returns retained=true, so list_add_tail runs on an already-linked entry with no race or external conditions.\nPR:L - The ioctl is DRM_RENDER_ALLOW with no capability checks in panfrost_open; unprivileged users can open render nodes (common on Android/ARM Mali devices) and create/madvise BOs.\nUI:N - Exploitation requires only the attacker\u0027s own open/create/madvise ioctls; no victim action is needed.\nS:U - Impact is confined to the local kernel/OS authority (privilege escalation or crash); there is no VM/IOMMU/sandbox boundary crossing.\nC:H - Double list_add_tail corrupts the shrinker list so later free/shrinker walks leave dangling pointers into freed panfrost_gem_object memory, enabling UAF-based arbitrary reads.\nI:H - The same list corruption yields UAF and unsafe list_del unlinks on poisoned prev/next pointers, which are classic kernel arbitrary-write/control-flow primitives.\nA:H - The fix commit documents kernel crashes from the corrupted shrinker list, and UAF/list walks can oops or panic the kernel."
            }
          ]
        }
      ],
      "providerMetadata": {
        "dateUpdated": "2026-08-05T08:55:54.011Z",
        "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "shortName": "Linux"
      },
      "references": [
        {
          "url": "https://git.kernel.org/stable/c/393594aad55179eb761af41533d8d1d6eb4543b0"
        },
        {
          "url": "https://git.kernel.org/stable/c/0581613df7f9a4c5fac096ce1d5fb15b7b994240"
        },
        {
          "url": "https://git.kernel.org/stable/c/1807d8867402a58b831a7fc16832747ff559a0d1"
        },
        {
          "url": "https://git.kernel.org/stable/c/f036392edd9c49090781d8cca26ad6557a63bae4"
        },
        {
          "url": "https://git.kernel.org/stable/c/9fc33eaaa979d112d10fea729edcd2a2e21aa912"
        }
      ],
      "title": "drm/panfrost: Fix shrinker list corruption by madvise IOCTL",
      "x_generator": {
        "engine": "bippy-1.2.0"
      }
    }
  },
  "cveMetadata": {
    "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
    "assignerShortName": "Linux",
    "cveId": "CVE-2022-49645",
    "datePublished": "2025-02-26T02:23:50.598Z",
    "dateReserved": "2025-02-26T02:21:30.432Z",
    "dateUpdated": "2026-08-05T08:55:54.011Z",
    "state": "PUBLISHED"
  },
  "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…