{
  "schema_version": "1.6.1",
  "id": "RPI-CVE-2024-50117",
  "modified": "2026-10-09T11:39:44Z",
  "upstream": [
    "CVE-2024-50117"
  ],
  "published": "2024-11-05T17:11:07Z",
  "summary": "drm/amd: Guard against bad data for ATIF ACPI method",
  "details": "In the Linux kernel, the following vulnerability has been resolved:\n\ndrm/amd: Guard against bad data for ATIF ACPI method\n\nIf a BIOS provides bad data in response to an ATIF method call\nthis causes a NULL pointer dereference in the caller.\n\n```\n? show_regs (arch/x86/kernel/dumpstack.c:478 (discriminator 1))\n? __die (arch/x86/kernel/dumpstack.c:423 arch/x86/kernel/dumpstack.c:434)\n? page_fault_oops (arch/x86/mm/fault.c:544 (discriminator 2) arch/x86/mm/fault.c:705 (discriminator 2))\n? do_user_addr_fault (arch/x86/mm/fault.c:440 (discriminator 1) arch/x86/mm/fault.c:1232 (discriminator 1))\n? acpi_ut_update_object_reference (drivers/acpi/acpica/utdelete.c:642)\n? exc_page_fault (arch/x86/mm/fault.c:1542)\n? asm_exc_page_fault (./arch/x86/include/asm/idtentry.h:623)\n? amdgpu_atif_query_backlight_caps.constprop.0 (drivers/gpu/drm/amd/amdgpu/amdgpu_acpi.c:387 (discriminator 2)) amdgpu\n? amdgpu_atif_query_backlight_caps.constprop.0 (drivers/gpu/drm/amd/amdgpu/amdgpu_acpi.c:386 (discriminator 1)) amdgpu\n```\n\nIt has been encountered on at least one system, so guard for it.\n\n(cherry picked from commit c9b7c809b89f24e9372a4e7f02d64c950b07fdee)",
  "severity": [
    {
      "type": "CVSS_V3",
      "score": "CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:L/A:H"
    }
  ],
  "affected": [
    {
      "package": {
        "ecosystem": "Raspberry Pi OS:12",
        "name": "linux"
      },
      "versions": [
        "1:6.1.47-1+rpt4"
      ],
      "ecosystem_specific": {
        "binaries": [
          {
            "binary_name": "linux-image-6.1.0-rpi3-rpi-2712",
            "binary_version": "1:6.1.47-1+rpt4"
          },
          {
            "binary_name": "linux-image-6.1.0-rpi3-rpi-v6",
            "binary_version": "1:6.1.47-1+rpt4"
          },
          {
            "binary_name": "linux-image-6.1.0-rpi3-rpi-v7",
            "binary_version": "1:6.1.47-1+rpt4"
          },
          {
            "binary_name": "linux-image-6.1.0-rpi3-rpi-v7l",
            "binary_version": "1:6.1.47-1+rpt4"
          },
          {
            "binary_name": "linux-image-6.1.0-rpi3-rpi-v8",
            "binary_version": "1:6.1.47-1+rpt4"
          }
        ]
      },
      "database_specific": {
        "per_version": {
          "1:6.1.47-1+rpt4": {
            "linux_commit": "655fc658a15ae7a6f37103754adb39ba52a9a14e",
            "upstream_version": "6.1.47",
            "assessment": "commit ancestry (strak rule)",
            "upstream_fixed": "6.1.115",
            "compiled_filter": false
          }
        }
      }
    }
  ],
  "references": [
    {
      "type": "ADVISORY",
      "url": "https://www.cve.org/CVERecord?id=CVE-2024-50117"
    },
    {
      "type": "FIX",
      "url": "https://git.kernel.org/stable/c/58556dcbd5606a5daccaee73b2130bc16b48e025"
    },
    {
      "type": "FIX",
      "url": "https://git.kernel.org/stable/c/43b4fa6e0e238c6e2662f4fb61d9f51c2785fb1d"
    },
    {
      "type": "FIX",
      "url": "https://git.kernel.org/stable/c/234682910971732cd4da96fd95946e296e486b38"
    },
    {
      "type": "FIX",
      "url": "https://git.kernel.org/stable/c/6032287747f874b52dc8b9d7490e2799736e035f"
    },
    {
      "type": "FIX",
      "url": "https://git.kernel.org/stable/c/cd67af3c1762de4c2483ae4dbdd98f9ea8fa56e3"
    },
    {
      "type": "FIX",
      "url": "https://git.kernel.org/stable/c/975ede2a7bec52b5da1428829b3439667c8a234b"
    },
    {
      "type": "FIX",
      "url": "https://git.kernel.org/stable/c/1d7175f9c57b1abf9ecfbdfd53ea760761f52ffe"
    },
    {
      "type": "FIX",
      "url": "https://git.kernel.org/stable/c/bf58f03931fdcf7b3c45cb76ac13244477a60f44"
    }
  ],
  "database_specific": {
    "source": "https://git.kernel.org/pub/scm/linux/security/vulns.git",
    "upstream_modified": "2026-08-05T11:52:36Z",
    "severity": {
      "source": "kernel CNA",
      "cvss_v3_score": 7.3,
      "cvss_v3_severity": "High",
      "scenario": "AV:L - The vulnerable `amdgpu_atif_call()` path is reached only from the local host \u2014 `amdgpu_acpi_detect()` at amdgpu module init and `amdgpu_acpi_event()`/`amdgpu_atif_handler()` on ACPI video notifications \u2014 with no network-facing component involved. Supplying a malformed ATIF return object is done through local software interfaces (initrd ACPI table override, acpi_configfs SSDT load, driver rebind), not physical access, so Local rather than Physical.\nAC:L - Once the ATIF method yields a non-buffer object, the missing type check is bypassed unconditionally and `info->buffer.pointer` is dereferenced deterministically on every probe \u2014 no race, no memory-layout luck, no timing window. This matches the sibling CVE-2024-53060 in the same function, also scored AC:L.\nPR:L - The oops occurs in the amdgpu probe/ACPI-notify path on an affected system with no capability check gating it, and the resulting kernel-memory disclosure surfaces to any unprivileged local user via `/sys/class/backlight/amdgpu_bl*/brightness`. Consistent with the CNA's scoring of the directly-related CVE-2024-53060 in this same function at PR:L.\nUI:N - The faulting ATIF calls fire autonomously during driver initialization and on firmware-generated ACPI video notify events; no victim must open a file, mount anything, or interact in any way.\nS:U - The type confusion, wild read, and crash all occur inside kernel memory within the kernel's own security authority, with no crossing of a VM, IOMMU, or sandbox boundary.\nC:H - For an `ACPI_TYPE_INTEGER` return, `buffer.pointer` aliases `integer.value` exactly, so the driver reads `*(u16 *)` and then `memcpy()`s from a fully firmware-controlled arbitrary kernel address \u2014 an unbounded read primitive, not a read clamped to a few bytes. Part of that harvested memory (`ac_level`/`dc_level`) escapes the DM sanity clamp and is published to userspace as the initial backlight brightness.\nI:L - Bytes read out of bounds are written into persistent driver state (`atif->backlight_caps`, `notification_cfg.command_code`) and drive device behavior through `backlight_device_set_brightness()`, so kernel state is modified in an attacker-influenced way. It is not High because every `memcpy()` is length-clamped by `min(sizeof(dst), size)` into a fixed-size object, giving no out-of-bounds write or control-flow hijack primitive.\nA:H - Dereferencing the aliased firmware value produces the page-fault oops shown in the commit's backtrace, and because it happens in `amdgpu_acpi_detect()` during module init the box fails to bring up graphics on every boot \u2014 a reliably repeatable kernel crash."
    }
  }
}
