{
    "dataType": "CVE_RECORD",
    "dataVersion": "5.2",
    "cveMetadata": {
        "cveId": "CVE-2021-46969",
        "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "state": "PUBLISHED",
        "assignerShortName": "Linux",
        "dateReserved": "2024-02-27T18:42:55.943Z",
        "datePublished": "2024-02-27T18:47:05.463Z",
        "dateUpdated": "2026-08-05T08:45:18.172Z"
    },
    "containers": {
        "cna": {
            "providerMetadata": {
                "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
                "shortName": "Linux",
                "dateUpdated": "2026-08-05T08:45:18.172Z"
            },
            "descriptions": [
                {
                    "lang": "en",
                    "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nbus: mhi: core: Fix invalid error returning in mhi_queue\n\nmhi_queue returns an error when the doorbell is not accessible in\nthe current state. This can happen when the device is in non M0\nstate, like M3, and needs to be waken-up prior ringing the DB. This\ncase is managed earlier by triggering an asynchronous M3 exit via\ncontroller resume/suspend callbacks, that in turn will cause M0\ntransition and DB update.\n\nSo, since it's not an error but just delaying of doorbell update, there\nis no reason to return an error.\n\nThis also fixes a use after free error for skb case, indeed a caller\nqueuing skb will try to free the skb if the queueing fails, but in\nthat case queueing has been done."
                }
            ],
            "metrics": [
                {
                    "cvssV3_1": {
                        "version": "3.1",
                        "vectorString": "CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H",
                        "baseScore": 7.8,
                        "baseSeverity": "HIGH"
                    },
                    "scenarios": [
                        {
                            "lang": "en",
                            "value": "AV:L - The vulnerability is reached by transmitting through local MHI client paths (mhi_net ndo_start_xmit or AF_QIPCRTR → qrtr_mhi xmit → mhi_queue_skb), which require local process access to a PCIe WWAN/MHI device interface rather than remote packet parsing.\nAC:L - With MHI PCI runtime autosuspend (2s), M3 is a normal idle state the attacker can wait for and then reliably trigger by sending traffic; no attacker-uncontrollable condition is required.\nPR:L - An unprivileged local user can open AF_QIPCRTR sockets (no capability required for ephemeral ports) or send packets via an already-up MHI WWAN netdev route; CAP_NET_ADMIN is not required for the vulnerable queue path itself.\nUI:N - Exploitation requires only attacker-initiated transmit while the modem is suspended; no separate victim user action is needed.\nS:U - Impact is confined to the host kernel's memory/process security authority (standard local privilege-escalation UAF), with no VM/IOMMU/sandbox boundary crossed.\nC:H - The skb remains referenced in the MHI transfer ring after the caller frees it, yielding a classic heap UAF that can be reclaimed/sprayed to obtain arbitrary kernel read primitives.\nI:H - The same skb UAF/double-free on completion (e.g. mhi_net_ul_callback / qrtr ul_callback consuming the freed skb) enables heap corruption and control-flow hijacking for arbitrary write/code execution.\nA:H - Use-after-free and double-free of the queued skb reliably cause kernel oops/panic when the deferred doorbell/completion path runs after M3 exit."
                        }
                    ]
                }
            ],
            "affected": [
                {
                    "product": "Linux",
                    "vendor": "Linux",
                    "defaultStatus": "unaffected",
                    "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
                    "programFiles": [
                        "drivers/bus/mhi/core/main.c"
                    ],
                    "versions": [
                        {
                            "version": "a8f75cb348fd52e7a5cf25991cdf9c89fb0cfd41",
                            "lessThan": "a99b661c3187365f81026d89b1133a76cd2652b3",
                            "status": "affected",
                            "versionType": "git"
                        },
                        {
                            "version": "a8f75cb348fd52e7a5cf25991cdf9c89fb0cfd41",
                            "lessThan": "0ecc1c70dcd32c0f081b173a1a5d89952686f271",
                            "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/bus/mhi/core/main.c"
                    ],
                    "versions": [
                        {
                            "version": "5.12",
                            "status": "affected"
                        },
                        {
                            "version": "0",
                            "lessThan": "5.12",
                            "status": "unaffected",
                            "versionType": "semver"
                        },
                        {
                            "version": "5.12.3",
                            "lessThanOrEqual": "5.12.*",
                            "status": "unaffected",
                            "versionType": "semver"
                        },
                        {
                            "version": "5.13",
                            "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.12",
                                    "versionEndExcluding": "5.12.3"
                                },
                                {
                                    "vulnerable": true,
                                    "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                                    "versionStartIncluding": "5.12",
                                    "versionEndExcluding": "5.13"
                                }
                            ]
                        }
                    ]
                }
            ],
            "references": [
                {
                    "url": "https://git.kernel.org/stable/c/a99b661c3187365f81026d89b1133a76cd2652b3"
                },
                {
                    "url": "https://git.kernel.org/stable/c/0ecc1c70dcd32c0f081b173a1a5d89952686f271"
                }
            ],
            "title": "bus: mhi: core: Fix invalid error returning in mhi_queue",
            "x_generator": {
                "engine": "bippy-1.2.0"
            }
        },
        "adp": [
            {
                "providerMetadata": {
                    "orgId": "af854a3a-2127-422b-91ae-364da2661108",
                    "shortName": "CVE",
                    "dateUpdated": "2024-08-04T05:17:42.873Z"
                },
                "title": "CVE Program Container",
                "references": [
                    {
                        "url": "https://git.kernel.org/stable/c/a99b661c3187365f81026d89b1133a76cd2652b3",
                        "tags": [
                            "x_transferred"
                        ]
                    },
                    {
                        "url": "https://git.kernel.org/stable/c/0ecc1c70dcd32c0f081b173a1a5d89952686f271",
                        "tags": [
                            "x_transferred"
                        ]
                    }
                ]
            },
            {
                "metrics": [
                    {
                        "other": {
                            "type": "ssvc",
                            "content": {
                                "id": "CVE-2021-46969",
                                "role": "CISA Coordinator",
                                "options": [
                                    {
                                        "Exploitation": "none"
                                    },
                                    {
                                        "Automatable": "no"
                                    },
                                    {
                                        "Technical Impact": "partial"
                                    }
                                ],
                                "version": "2.0.3",
                                "timestamp": "2024-09-10T16:01:28.491057Z"
                            }
                        }
                    }
                ],
                "title": "CISA ADP Vulnrichment",
                "providerMetadata": {
                    "orgId": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
                    "shortName": "CISA-ADP",
                    "dateUpdated": "2024-09-11T17:33:45.299Z"
                }
            }
        ]
    }
}