GCVE Workshop - 22 September 2026 (14:00-18:00), Luxembourg Before The Vulnopticon Conference - Registration

CVE-2021-47446 (GCVE-0-2021-47446)

Vulnerability from cvelistv5 – Published: 2024-05-22 06:19 – Updated: 2026-08-05 08:47
VLAI
Title
drm/msm/a4xx: fix error handling in a4xx_gpu_init()
Summary
In the Linux kernel, the following vulnerability has been resolved: drm/msm/a4xx: fix error handling in a4xx_gpu_init() This code returns 1 on error instead of a negative error. It leads to an Oops in the caller. A second problem is that the check for "if (ret != -ENODATA)" cannot be true because "ret" is set to 1.
SSVC
Exploitation: none Automatable: no Technical Impact: partial
CISA Coordinator · CISA-ADP (v2.0.3)
Decision recorded 2024-06-10 18:56 UTC
Impacted products
Vendor Product Version CPE status
Linux Linux Affected: 5785dd7a8ef0de8049f40a1a109de6a1bf17b479 , < 3962d626eb3e3b23ebb2e2a61537fa764acbfe11 (git)
Affected: 5785dd7a8ef0de8049f40a1a109de6a1bf17b479 , < 980d74e7d03ccf2eaa11d133416946bd880c7c08 (git)
guessed Create a notification for this product.
Linux Linux Affected: 5.11
Unaffected: 0 , < 5.11 (semver)
Unaffected: 5.14.14 , ≤ 5.14.* (semver)
Unaffected: 5.15 , ≤ * (original_commit_for_fix)
guessed Create a notification for this product.
Show details on NVD website

{
  "containers": {
    "adp": [
      {
        "metrics": [
          {
            "other": {
              "content": {
                "id": "CVE-2021-47446",
                "options": [
                  {
                    "Exploitation": "none"
                  },
                  {
                    "Automatable": "no"
                  },
                  {
                    "Technical Impact": "partial"
                  }
                ],
                "role": "CISA Coordinator",
                "timestamp": "2024-06-10T18:56:14.035808Z",
                "version": "2.0.3"
              },
              "type": "ssvc"
            }
          }
        ],
        "providerMetadata": {
          "dateUpdated": "2024-06-10T18:56:22.575Z",
          "orgId": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
          "shortName": "CISA-ADP"
        },
        "title": "CISA ADP Vulnrichment"
      },
      {
        "providerMetadata": {
          "dateUpdated": "2024-08-04T05:39:59.012Z",
          "orgId": "af854a3a-2127-422b-91ae-364da2661108",
          "shortName": "CVE"
        },
        "references": [
          {
            "tags": [
              "x_transferred"
            ],
            "url": "https://git.kernel.org/stable/c/3962d626eb3e3b23ebb2e2a61537fa764acbfe11"
          },
          {
            "tags": [
              "x_transferred"
            ],
            "url": "https://git.kernel.org/stable/c/980d74e7d03ccf2eaa11d133416946bd880c7c08"
          }
        ],
        "title": "CVE Program Container"
      }
    ],
    "cna": {
      "affected": [
        {
          "defaultStatus": "unaffected",
          "product": "Linux",
          "programFiles": [
            "drivers/gpu/drm/msm/adreno/a4xx_gpu.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "lessThan": "3962d626eb3e3b23ebb2e2a61537fa764acbfe11",
              "status": "affected",
              "version": "5785dd7a8ef0de8049f40a1a109de6a1bf17b479",
              "versionType": "git"
            },
            {
              "lessThan": "980d74e7d03ccf2eaa11d133416946bd880c7c08",
              "status": "affected",
              "version": "5785dd7a8ef0de8049f40a1a109de6a1bf17b479",
              "versionType": "git"
            }
          ]
        },
        {
          "defaultStatus": "affected",
          "product": "Linux",
          "programFiles": [
            "drivers/gpu/drm/msm/adreno/a4xx_gpu.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "status": "affected",
              "version": "5.11"
            },
            {
              "lessThan": "5.11",
              "status": "unaffected",
              "version": "0",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "5.14.*",
              "status": "unaffected",
              "version": "5.14.14",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "*",
              "status": "unaffected",
              "version": "5.15",
              "versionType": "original_commit_for_fix"
            }
          ]
        }
      ],
      "cpeApplicability": [
        {
          "nodes": [
            {
              "cpeMatch": [
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "5.14.14",
                  "versionStartIncluding": "5.11",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "5.15",
                  "versionStartIncluding": "5.11",
                  "vulnerable": true
                }
              ],
              "negate": false,
              "operator": "OR"
            }
          ]
        }
      ],
      "descriptions": [
        {
          "lang": "en",
          "value": "In the Linux kernel, the following vulnerability has been resolved:\n\ndrm/msm/a4xx: fix error handling in a4xx_gpu_init()\n\nThis code returns 1 on error instead of a negative error.  It leads to\nan Oops in the caller.  A second problem is that the check for\n\"if (ret != -ENODATA)\" cannot be true because \"ret\" is set to 1."
        }
      ],
      "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 in drm/msm a4xx_gpu_init() during Adreno component bind, with the dangling GPU then used from local DRM open (msm_open\u2192adreno_load_gpu) or the GPU IRQ handler\u2014local device/ioctl paths only, not network or adjacent protocols.\nAC:L - On A4xx platforms with interconnects naming only gfx-mem (ocmem optional/-ENODATA), the buggy IS_ERR\u2192ret=1 path runs deterministically at probe, frees the GPU, and falsely succeeds bind; a later DRM open or IRQ then uses the freed object with no race or layout outside attacker influence.\nPR:L - After the broken probe leaves a dangling GPU drvdata/IRQ cookie, an unprivileged local user or Android app that can open the MSM DRM/render node triggers adreno_load_gpu() on the freed object without real root or init-namespace admin rights.\nUI:N - The attacker opens the DRM device and drives the load path themselves; no separate victim action such as mounting media or opening a crafted file is required.\nS:U - Impact is a host-kernel UAF/oops within the same kernel authority; it is not a VM escape, IOMMU bypass, or other cross-boundary compromise.\nC:H - The fail path kfree\u0027s the msm_gpu while platform drvdata and the IRQ handler still reference it, a use-after-free that per guidance enables reclaim/spray of the object and arbitrary kernel read primitives.\nI:H - Use of the freed gpu (including irq_handler calling gpu-\u003efuncs-\u003eirq and load/pm paths through dangling function pointers) is a classic UAF control-flow hijack primitive, scored Integrity High under kernel UAF guidance.\nA:H - Dereferencing ERR_PTR(1) as a gpu or using the freed msm_gpu causes a kernel oops/panic, which is full availability impact."
            }
          ]
        }
      ],
      "providerMetadata": {
        "dateUpdated": "2026-08-05T08:47:49.798Z",
        "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "shortName": "Linux"
      },
      "references": [
        {
          "url": "https://git.kernel.org/stable/c/3962d626eb3e3b23ebb2e2a61537fa764acbfe11"
        },
        {
          "url": "https://git.kernel.org/stable/c/980d74e7d03ccf2eaa11d133416946bd880c7c08"
        }
      ],
      "title": "drm/msm/a4xx: fix error handling in a4xx_gpu_init()",
      "x_generator": {
        "engine": "bippy-1.2.0"
      }
    }
  },
  "cveMetadata": {
    "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
    "assignerShortName": "Linux",
    "cveId": "CVE-2021-47446",
    "datePublished": "2024-05-22T06:19:38.839Z",
    "dateReserved": "2024-05-21T14:58:30.832Z",
    "dateUpdated": "2026-08-05T08:47:49.798Z",
    "state": "PUBLISHED"
  },
  "dataType": "CVE_RECORD",
  "dataVersion": "5.2",
  "vulnerability-lookup:meta": {
    "epss": {
      "cve": "CVE-2021-47446",
      "date": "2026-09-19",
      "epss": "0.00206",
      "percentile": "0.11063"
    },
    "fkie_nvd": {
      "descriptions": [
        {
          "lang": "en",
          "value": "In the Linux kernel, the following vulnerability has been resolved:\n\ndrm/msm/a4xx: fix error handling in a4xx_gpu_init()\n\nThis code returns 1 on error instead of a negative error.  It leads to\nan Oops in the caller.  A second problem is that the check for\n\"if (ret != -ENODATA)\" cannot be true because \"ret\" is set to 1."
        },
        {
          "lang": "es",
          "value": "En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad: drm/msm/a4xx: corrige el manejo de errores en a4xx_gpu_init() Este c\u00f3digo devuelve 1 en caso de error en lugar de un error negativo. Conduce a un Ups en la persona que llama. Un segundo problema es que la verificaci\u00f3n de \"if (ret! = -ENODATA)\" no puede ser verdadera porque \"ret\" est\u00e1 establecido en 1."
        }
      ],
      "id": "CVE-2021-47446",
      "lastModified": "2024-11-21T06:36:09.843",
      "published": "2024-05-22T07:15:09.820",
      "references": [
        {
          "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
          "url": "https://git.kernel.org/stable/c/3962d626eb3e3b23ebb2e2a61537fa764acbfe11"
        },
        {
          "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
          "url": "https://git.kernel.org/stable/c/980d74e7d03ccf2eaa11d133416946bd880c7c08"
        },
        {
          "source": "af854a3a-2127-422b-91ae-364da2661108",
          "url": "https://git.kernel.org/stable/c/3962d626eb3e3b23ebb2e2a61537fa764acbfe11"
        },
        {
          "source": "af854a3a-2127-422b-91ae-364da2661108",
          "url": "https://git.kernel.org/stable/c/980d74e7d03ccf2eaa11d133416946bd880c7c08"
        }
      ],
      "sourceIdentifier": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
      "vulnStatus": "Awaiting Analysis"
    },
    "nvd": {
      "cve": {
        "affected": [
          {
            "affectedData": [
              {
                "defaultStatus": "unaffected",
                "product": "Linux",
                "programFiles": [
                  "drivers/gpu/drm/msm/adreno/a4xx_gpu.c"
                ],
                "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
                "vendor": "Linux",
                "versions": [
                  {
                    "lessThan": "3962d626eb3e3b23ebb2e2a61537fa764acbfe11",
                    "status": "affected",
                    "version": "5785dd7a8ef0de8049f40a1a109de6a1bf17b479",
                    "versionType": "git"
                  },
                  {
                    "lessThan": "980d74e7d03ccf2eaa11d133416946bd880c7c08",
                    "status": "affected",
                    "version": "5785dd7a8ef0de8049f40a1a109de6a1bf17b479",
                    "versionType": "git"
                  }
                ]
              },
              {
                "defaultStatus": "affected",
                "product": "Linux",
                "programFiles": [
                  "drivers/gpu/drm/msm/adreno/a4xx_gpu.c"
                ],
                "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
                "vendor": "Linux",
                "versions": [
                  {
                    "status": "affected",
                    "version": "5.11"
                  },
                  {
                    "lessThan": "5.11",
                    "status": "unaffected",
                    "version": "0",
                    "versionType": "semver"
                  },
                  {
                    "lessThanOrEqual": "5.14.*",
                    "status": "unaffected",
                    "version": "5.14.14",
                    "versionType": "semver"
                  },
                  {
                    "lessThanOrEqual": "*",
                    "status": "unaffected",
                    "version": "5.15",
                    "versionType": "original_commit_for_fix"
                  }
                ]
              }
            ],
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
          }
        ],
        "configurations": [
          {
            "nodes": [
              {
                "cpeMatch": [
                  {
                    "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                    "matchCriteriaId": "BF43A331-D430-4B9D-A612-E63C62AE4A86",
                    "versionEndExcluding": "5.14.14",
                    "versionStartIncluding": "5.11",
                    "vulnerable": true
                  },
                  {
                    "criteria": "cpe:2.3:o:linux:linux_kernel:5.15:rc1:*:*:*:*:*:*",
                    "matchCriteriaId": "E46C74C6-B76B-4C94-A6A4-FD2FFF62D644",
                    "vulnerable": true
                  },
                  {
                    "criteria": "cpe:2.3:o:linux:linux_kernel:5.15:rc2:*:*:*:*:*:*",
                    "matchCriteriaId": "60134C3A-06E4-48C1-B04F-2903732A4E56",
                    "vulnerable": true
                  },
                  {
                    "criteria": "cpe:2.3:o:linux:linux_kernel:5.15:rc3:*:*:*:*:*:*",
                    "matchCriteriaId": "0460DA88-8FE1-46A2-9DDA-1F1ABA552E71",
                    "vulnerable": true
                  },
                  {
                    "criteria": "cpe:2.3:o:linux:linux_kernel:5.15:rc4:*:*:*:*:*:*",
                    "matchCriteriaId": "AF55383D-4DF2-45DC-93F7-571F4F978EAB",
                    "vulnerable": true
                  },
                  {
                    "criteria": "cpe:2.3:o:linux:linux_kernel:5.15:rc5:*:*:*:*:*:*",
                    "matchCriteriaId": "9E9481B2-8AA6-4CBD-B5D3-C10F51FF6D01",
                    "vulnerable": true
                  }
                ],
                "negate": false,
                "operator": "OR"
              }
            ]
          }
        ],
        "cveTags": [],
        "descriptions": [
          {
            "lang": "en",
            "value": "In the Linux kernel, the following vulnerability has been resolved:\n\ndrm/msm/a4xx: fix error handling in a4xx_gpu_init()\n\nThis code returns 1 on error instead of a negative error.  It leads to\nan Oops in the caller.  A second problem is that the check for\n\"if (ret != -ENODATA)\" cannot be true because \"ret\" is set to 1."
          },
          {
            "lang": "es",
            "value": "En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad: drm/msm/a4xx: corrige el manejo de errores en a4xx_gpu_init() Este c\u00f3digo devuelve 1 en caso de error en lugar de un error negativo. Conduce a un Ups en la persona que llama. Un segundo problema es que la verificaci\u00f3n de \"if (ret! = -ENODATA)\" no puede ser verdadera porque \"ret\" est\u00e1 establecido en 1."
          }
        ],
        "id": "CVE-2021-47446",
        "lastModified": "2026-08-04T10:17:03.467",
        "metrics": {
          "cvssMetricV31": [
            {
              "cvssData": {
                "attackComplexity": "LOW",
                "attackVector": "LOCAL",
                "availabilityImpact": "HIGH",
                "baseScore": 7.8,
                "baseSeverity": "HIGH",
                "confidentialityImpact": "HIGH",
                "integrityImpact": "HIGH",
                "privilegesRequired": "LOW",
                "scope": "UNCHANGED",
                "userInteraction": "NONE",
                "vectorString": "CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H",
                "version": "3.1"
              },
              "exploitabilityScore": 1.8,
              "impactScore": 5.9,
              "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
              "type": "Secondary"
            },
            {
              "cvssData": {
                "attackComplexity": "LOW",
                "attackVector": "LOCAL",
                "availabilityImpact": "HIGH",
                "baseScore": 5.5,
                "baseSeverity": "MEDIUM",
                "confidentialityImpact": "NONE",
                "integrityImpact": "NONE",
                "privilegesRequired": "LOW",
                "scope": "UNCHANGED",
                "userInteraction": "NONE",
                "vectorString": "CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H",
                "version": "3.1"
              },
              "exploitabilityScore": 1.8,
              "impactScore": 3.6,
              "source": "nvd@nist.gov",
              "type": "Primary"
            }
          ],
          "ssvcV203": [
            {
              "source": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
              "ssvcData": {
                "id": "CVE-2021-47446",
                "options": [
                  {
                    "exploitation": "none"
                  },
                  {
                    "automatable": "no"
                  },
                  {
                    "technicalImpact": "partial"
                  }
                ],
                "role": "CISA Coordinator",
                "timestamp": "2024-06-10T18:56:14.035808Z",
                "version": "2.0.3"
              }
            }
          ]
        },
        "published": "2024-05-22T07:15:09.820",
        "references": [
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "tags": [
              "Patch"
            ],
            "url": "https://git.kernel.org/stable/c/3962d626eb3e3b23ebb2e2a61537fa764acbfe11"
          },
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "tags": [
              "Patch"
            ],
            "url": "https://git.kernel.org/stable/c/980d74e7d03ccf2eaa11d133416946bd880c7c08"
          },
          {
            "source": "af854a3a-2127-422b-91ae-364da2661108",
            "tags": [
              "Patch"
            ],
            "url": "https://git.kernel.org/stable/c/3962d626eb3e3b23ebb2e2a61537fa764acbfe11"
          },
          {
            "source": "af854a3a-2127-422b-91ae-364da2661108",
            "tags": [
              "Patch"
            ],
            "url": "https://git.kernel.org/stable/c/980d74e7d03ccf2eaa11d133416946bd880c7c08"
          }
        ],
        "sourceIdentifier": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "vulnStatus": "Modified",
        "weaknesses": [
          {
            "description": [
              {
                "lang": "en",
                "value": "CWE-908"
              }
            ],
            "source": "nvd@nist.gov",
            "type": "Primary"
          }
        ]
      }
    },
    "redhat_vex": {
      "aggregate_severity": "Low",
      "current_release_date": "2026-08-04T23:02:34+00:00",
      "cve": "CVE-2021-47446",
      "id": "CVE-2021-47446",
      "initial_release_date": "2021-01-01T00:00:00+00:00",
      "product_status:known_affected": "42",
      "product_status:known_not_affected": "156",
      "source": "Red Hat CSAF VEX",
      "status": "final",
      "title": "kernel: drm/msm/a4xx: fix error handling in a4xx_gpu_init()",
      "url": "https://security.access.redhat.com/data/csaf/v2/vex/2021/cve-2021-47446.json",
      "version": "3"
    },
    "suse_vex": {
      "aggregate_severity": "moderate",
      "current_release_date": "2026-09-04T00:42:34Z",
      "cve": "CVE-2021-47446",
      "id": "CVE-2021-47446",
      "initial_release_date": "2024-05-25T03:34:11Z",
      "product_status:known_affected": "275",
      "product_status:known_not_affected": "266",
      "product_status:recommended": "452",
      "source": "SUSE CSAF VEX",
      "status": "interim",
      "title": "SUSE CVE CVE-2021-47446",
      "url": "https://ftp.suse.com/pub/projects/security/csaf-vex/cve-2021-47446.json",
      "version": "55"
    },
    "vulnrichment": {
      "containers": {
        "adp": [
          {
            "providerMetadata": {
              "dateUpdated": "2024-08-04T05:39:59.012Z",
              "orgId": "af854a3a-2127-422b-91ae-364da2661108",
              "shortName": "CVE"
            },
            "references": [
              {
                "tags": [
                  "x_transferred"
                ],
                "url": "https://git.kernel.org/stable/c/3962d626eb3e3b23ebb2e2a61537fa764acbfe11"
              },
              {
                "tags": [
                  "x_transferred"
                ],
                "url": "https://git.kernel.org/stable/c/980d74e7d03ccf2eaa11d133416946bd880c7c08"
              }
            ],
            "title": "CVE Program Container"
          },
          {
            "metrics": [
              {
                "other": {
                  "content": {
                    "id": "CVE-2021-47446",
                    "options": [
                      {
                        "Exploitation": "none"
                      },
                      {
                        "Automatable": "no"
                      },
                      {
                        "Technical Impact": "partial"
                      }
                    ],
                    "role": "CISA Coordinator",
                    "timestamp": "2024-06-10T18:56:14.035808Z",
                    "version": "2.0.3"
                  },
                  "type": "ssvc"
                }
              }
            ],
            "providerMetadata": {
              "dateUpdated": "2024-06-10T18:56:19.387Z",
              "orgId": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
              "shortName": "CISA-ADP"
            },
            "title": "CISA ADP Vulnrichment"
          }
        ],
        "cna": {
          "affected": [
            {
              "defaultStatus": "unaffected",
              "product": "Linux",
              "programFiles": [
                "drivers/gpu/drm/msm/adreno/a4xx_gpu.c"
              ],
              "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
              "vendor": "Linux",
              "versions": [
                {
                  "lessThan": "3962d626eb3e3b23ebb2e2a61537fa764acbfe11",
                  "status": "affected",
                  "version": "5785dd7a8ef0de8049f40a1a109de6a1bf17b479",
                  "versionType": "git"
                },
                {
                  "lessThan": "980d74e7d03ccf2eaa11d133416946bd880c7c08",
                  "status": "affected",
                  "version": "5785dd7a8ef0de8049f40a1a109de6a1bf17b479",
                  "versionType": "git"
                }
              ]
            },
            {
              "defaultStatus": "affected",
              "product": "Linux",
              "programFiles": [
                "drivers/gpu/drm/msm/adreno/a4xx_gpu.c"
              ],
              "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
              "vendor": "Linux",
              "versions": [
                {
                  "status": "affected",
                  "version": "5.11"
                },
                {
                  "lessThan": "5.11",
                  "status": "unaffected",
                  "version": "0",
                  "versionType": "semver"
                },
                {
                  "lessThanOrEqual": "5.14.*",
                  "status": "unaffected",
                  "version": "5.14.14",
                  "versionType": "semver"
                },
                {
                  "lessThanOrEqual": "*",
                  "status": "unaffected",
                  "version": "5.15",
                  "versionType": "original_commit_for_fix"
                }
              ]
            }
          ],
          "cpeApplicability": [
            {
              "nodes": [
                {
                  "cpeMatch": [
                    {
                      "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                      "versionEndExcluding": "5.14.14",
                      "versionStartIncluding": "5.11",
                      "vulnerable": true
                    },
                    {
                      "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                      "versionEndExcluding": "5.15",
                      "versionStartIncluding": "5.11",
                      "vulnerable": true
                    }
                  ],
                  "negate": false,
                  "operator": "OR"
                }
              ]
            }
          ],
          "descriptions": [
            {
              "lang": "en",
              "value": "In the Linux kernel, the following vulnerability has been resolved:\n\ndrm/msm/a4xx: fix error handling in a4xx_gpu_init()\n\nThis code returns 1 on error instead of a negative error.  It leads to\nan Oops in the caller.  A second problem is that the check for\n\"if (ret != -ENODATA)\" cannot be true because \"ret\" is set to 1."
            }
          ],
          "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 in drm/msm a4xx_gpu_init() during Adreno component bind, with the dangling GPU then used from local DRM open (msm_open\u2192adreno_load_gpu) or the GPU IRQ handler\u2014local device/ioctl paths only, not network or adjacent protocols.\nAC:L - On A4xx platforms with interconnects naming only gfx-mem (ocmem optional/-ENODATA), the buggy IS_ERR\u2192ret=1 path runs deterministically at probe, frees the GPU, and falsely succeeds bind; a later DRM open or IRQ then uses the freed object with no race or layout outside attacker influence.\nPR:L - After the broken probe leaves a dangling GPU drvdata/IRQ cookie, an unprivileged local user or Android app that can open the MSM DRM/render node triggers adreno_load_gpu() on the freed object without real root or init-namespace admin rights.\nUI:N - The attacker opens the DRM device and drives the load path themselves; no separate victim action such as mounting media or opening a crafted file is required.\nS:U - Impact is a host-kernel UAF/oops within the same kernel authority; it is not a VM escape, IOMMU bypass, or other cross-boundary compromise.\nC:H - The fail path kfree\u0027s the msm_gpu while platform drvdata and the IRQ handler still reference it, a use-after-free that per guidance enables reclaim/spray of the object and arbitrary kernel read primitives.\nI:H - Use of the freed gpu (including irq_handler calling gpu-\u003efuncs-\u003eirq and load/pm paths through dangling function pointers) is a classic UAF control-flow hijack primitive, scored Integrity High under kernel UAF guidance.\nA:H - Dereferencing ERR_PTR(1) as a gpu or using the freed msm_gpu causes a kernel oops/panic, which is full availability impact."
                }
              ]
            }
          ],
          "providerMetadata": {
            "dateUpdated": "2026-08-05T08:47:49.798Z",
            "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "shortName": "Linux"
          },
          "references": [
            {
              "url": "https://git.kernel.org/stable/c/3962d626eb3e3b23ebb2e2a61537fa764acbfe11"
            },
            {
              "url": "https://git.kernel.org/stable/c/980d74e7d03ccf2eaa11d133416946bd880c7c08"
            }
          ],
          "title": "drm/msm/a4xx: fix error handling in a4xx_gpu_init()",
          "x_generator": {
            "engine": "bippy-1.2.0"
          }
        }
      },
      "cveMetadata": {
        "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "assignerShortName": "Linux",
        "cveId": "CVE-2021-47446",
        "datePublished": "2024-05-22T06:19:38.839Z",
        "dateReserved": "2024-05-21T14:58:30.832Z",
        "dateUpdated": "2026-08-05T08:47:49.798Z",
        "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…

Forecast uses a logistic model when the trend is rising, or an exponential decay model when the trend is falling. Fitted via linearized least squares.

Sightings

Author Source Type Date Other

Nomenclature

  • Seen: The vulnerability was mentioned, discussed, or observed by the user.
  • Confirmed: The vulnerability has been validated from an analyst's perspective.
  • Published Proof of Concept: A public proof of concept is available for this vulnerability.
  • Exploited: The vulnerability was observed as exploited by the user who reported the sighting.
  • Patched: The vulnerability was observed as successfully patched by the user who reported the sighting.
  • Not exploited: The vulnerability was not observed as exploited by the user who reported the sighting.
  • Not confirmed: The user expressed doubt about the validity of the vulnerability.
  • Not patched: The vulnerability was not observed as successfully patched by the user who reported the sighting.

Loading…

Detection rules are retrieved from Rulezet.

Loading…

Loading…

Related by attack behaviour

Vulnerabilities whose description is nearest to this one in the vector space of the CIRCL/vulnerability-attack-technique-biencoder model. This is a similarity search over the bi-encoder space (plain cosine), not a classification, and it has no measured accuracy.


Loading…