{
    "dataType": "CVE_RECORD",
    "dataVersion": "5.2",
    "cveMetadata": {
        "cveId": "CVE-2022-49500",
        "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "state": "PUBLISHED",
        "assignerShortName": "Linux",
        "dateReserved": "2025-02-26T02:08:31.586Z",
        "datePublished": "2025-02-26T02:13:34.223Z",
        "dateUpdated": "2026-08-05T08:55:22.523Z"
    },
    "containers": {
        "cna": {
            "providerMetadata": {
                "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
                "shortName": "Linux",
                "dateUpdated": "2026-08-05T08:55:22.523Z"
            },
            "descriptions": [
                {
                    "lang": "en",
                    "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nwl1251: dynamically allocate memory used for DMA\n\nWith introduction of vmap'ed stacks, stack parameters can no\nlonger be used for DMA and now leads to kernel panic.\n\nIt happens at several places for the wl1251 (e.g. when\naccessed through SDIO) making it unuseable on e.g. the\nOpenPandora.\n\nWe solve this by allocating temporary buffers or use wl1251_read32().\n\nTested on v5.18-rc5 with OpenPandora."
                }
            ],
            "metrics": [
                {
                    "cvssV3_1": {
                        "version": "3.1",
                        "vectorString": "CVSS:3.1/AV:A/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H",
                        "baseScore": 8.8,
                        "baseSeverity": "HIGH"
                    },
                    "scenarios": [
                        {
                            "lang": "en",
                            "value": "AV:A - The vulnerable DMA-to-stack paths run in wl1251 IRQ work on TX-result and firmware event mailbox reads; an on-channel attacker can induce those interrupts via wireless activity (deauth/BSS loss, beacon loss, or elicited TX completions), matching Adjacent WiFi reachability used for other wl1251 CVEs.\nAC:L - With VMAP_STACK (default where supported), any SDIO/SPI DMA through the stack-backed buffers deterministically mis-translates via virt_to_page and corrupts host memory; an adjacent attacker can reliably force TX-result/event handling without races or attacker-uncontrollable layout conditions.\nPR:N - TX-complete and event-handle run in driver IRQ/worker context with no credential or capability check on the wireless trigger path; a radio-adjacent attacker needs no account or privileges on the victim.\nUI:N - Once the wl1251 interface is operating, firmware interrupts and completion processing run automatically; the attacker does not need the victim to mount, open a device, or otherwise interact.\nS:U - Corruption stays in host kernel memory managed by the same OS security authority; this is not a VM escape or intentional IOMMU/DMA isolation boundary bypass.\nC:H - DMA into a VMAP stack buffer uses virt_to_page on a non-linear address, so device DMA writes into the wrong physical page; that kernel memory corruption is defensibly leveraged for arbitrary disclosure under high-severity tie-break (same class as other DMA-to-stack scores).\nI:H - The same wrong-page DMA write (and related stack/cacheline hazards on DMA-capable SDIO/SPI) corrupts arbitrary host kernel memory and can yield write/control-flow primitives, so integrity impact is High.\nA:H - The fix commit documents kernel panic from this DMA-to-stack misuse on SDIO platforms (e.g. OpenPandora), and wrong-page DMA corruption can oops/panic the kernel even without full exploitation."
                        }
                    ]
                }
            ],
            "affected": [
                {
                    "product": "Linux",
                    "vendor": "Linux",
                    "defaultStatus": "unaffected",
                    "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
                    "programFiles": [
                        "drivers/net/wireless/ti/wl1251/event.c",
                        "drivers/net/wireless/ti/wl1251/io.c",
                        "drivers/net/wireless/ti/wl1251/tx.c"
                    ],
                    "versions": [
                        {
                            "version": "a1c510d0adc604bb143c86052bc5be48cbcfa17c",
                            "lessThan": "da03bbfbf5acd1ab0b074617e865ad1e8a5779ef",
                            "status": "affected",
                            "versionType": "git"
                        },
                        {
                            "version": "a1c510d0adc604bb143c86052bc5be48cbcfa17c",
                            "lessThan": "454744754cbf2c21b3fc7344e46e10bee2768094",
                            "status": "affected",
                            "versionType": "git"
                        }
                    ]
                },
                {
                    "product": "Linux",
                    "vendor": "Linux",
                    "defaultStatus": "affected",
                    "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
                    "programFiles": [
                        "drivers/net/wireless/ti/wl1251/event.c",
                        "drivers/net/wireless/ti/wl1251/io.c",
                        "drivers/net/wireless/ti/wl1251/tx.c"
                    ],
                    "versions": [
                        {
                            "version": "5.18",
                            "status": "affected"
                        },
                        {
                            "version": "0",
                            "lessThan": "5.18",
                            "status": "unaffected",
                            "versionType": "semver"
                        },
                        {
                            "version": "5.18.3",
                            "lessThanOrEqual": "5.18.*",
                            "status": "unaffected",
                            "versionType": "semver"
                        },
                        {
                            "version": "5.19",
                            "lessThanOrEqual": "*",
                            "status": "unaffected",
                            "versionType": "original_commit_for_fix"
                        }
                    ]
                }
            ],
            "cpeApplicability": [
                {
                    "nodes": [
                        {
                            "operator": "OR",
                            "negate": false,
                            "cpeMatch": [
                                {
                                    "vulnerable": true,
                                    "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                                    "versionStartIncluding": "5.18",
                                    "versionEndExcluding": "5.18.3"
                                },
                                {
                                    "vulnerable": true,
                                    "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                                    "versionStartIncluding": "5.18",
                                    "versionEndExcluding": "5.19"
                                }
                            ]
                        }
                    ]
                }
            ],
            "references": [
                {
                    "url": "https://git.kernel.org/stable/c/da03bbfbf5acd1ab0b074617e865ad1e8a5779ef"
                },
                {
                    "url": "https://git.kernel.org/stable/c/454744754cbf2c21b3fc7344e46e10bee2768094"
                }
            ],
            "title": "wl1251: dynamically allocate memory used for DMA",
            "x_generator": {
                "engine": "bippy-1.2.0"
            }
        }
    }
}