{
    "dataType": "CVE_RECORD",
    "dataVersion": "5.2",
    "cveMetadata": {
        "cveId": "CVE-2022-49858",
        "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "state": "PUBLISHED",
        "assignerShortName": "Linux",
        "dateReserved": "2025-05-01T14:05:17.235Z",
        "datePublished": "2025-05-01T14:10:11.559Z",
        "dateUpdated": "2026-08-05T08:56:28.608Z"
    },
    "containers": {
        "cna": {
            "providerMetadata": {
                "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
                "shortName": "Linux",
                "dateUpdated": "2026-08-05T08:56:28.608Z"
            },
            "descriptions": [
                {
                    "lang": "en",
                    "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nocteontx2-pf: Fix SQE threshold checking\n\nCurrent way of checking available SQE count which is based on\nHW updated SQB count could result in driver submitting an SQE\neven before CQE for the previously transmitted SQE at the same\nindex is processed in NAPI resulting losing SKB pointers,\nhence a leak. Fix this by checking a consumer index which\nis updated once CQE is processed."
                }
            ],
            "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 bug is in the local ndo_start_xmit TX path (otx2_xmit/otx2vf_xmit → otx2_sq_append_skb) on Marvell OcteonTX2 PF/VF NICs; it is driver TX-ring bookkeeping under local transmit load, not parsing of remotely injected frames.\nAC:L - An attacker who can generate sustained TX traffic fully drives ring wrap and widens the HW-SQB-free versus NAPI-CQE window (IRQ coalescing/NAPI budget), so the index reuse and wrong-skb free are reliably inducible with no attacker-uncontrollable precondition.\nPR:L - Any unprivileged local user (or container with a delegated SR-IOV VF) can open sockets and send traffic out an already-up octeontx2 interface without CAP_NET_ADMIN or init-namespace root.\nUI:N - The attacker triggers the defect solely by generating their own transmit traffic; no separate victim action such as mounting a filesystem or opening a crafted file is required.\nS:U - Impact is confined to host-kernel sk_buff/DMA state within the same OS security authority; this is not a VM escape, IOMMU boundary bypass, or other cross-authority compromise.\nC:H - Reusing an SQE index before CQE processing overwrites sg[].skb and causes otx2_snd_pkt_handler to dma_unmap and napi_consume_skb the new in-flight skb while HW may still DMA-read its pages, a use-after-free/DMA-after-free that can disclose recycled page contents (including via transmission on the wire).\nI:H - The same premature free/unmap of an in-flight sk_buff and its DMA-mapped fragments is a reclaimable heap use-after-free under attacker-driven TX load; per UAF guidance this class enables heap corruption and control-flow hijack primitives.\nA:H - Losing the prior SKB pointer permanently leaks sk_buffs under load, and freeing/unmapping the wrong in-flight packet can IOMMU-fault or oops the kernel; any such UAF/crash scores Availability High."
                        }
                    ]
                }
            ],
            "affected": [
                {
                    "product": "Linux",
                    "vendor": "Linux",
                    "defaultStatus": "unaffected",
                    "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
                    "programFiles": [
                        "drivers/net/ethernet/marvell/octeontx2/nic/otx2_common.c",
                        "drivers/net/ethernet/marvell/octeontx2/nic/otx2_txrx.c",
                        "drivers/net/ethernet/marvell/octeontx2/nic/otx2_txrx.h"
                    ],
                    "versions": [
                        {
                            "version": "3ca6c4c882a7f34085b170d93cf0d0e843aa00e6",
                            "lessThan": "015e3c0a3b16193aab23beefe4719484b9984c2d",
                            "status": "affected",
                            "versionType": "git"
                        },
                        {
                            "version": "3ca6c4c882a7f34085b170d93cf0d0e843aa00e6",
                            "lessThan": "f0dfc4c88ef39be0ba736aa0ce6119263fc19aeb",
                            "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/ethernet/marvell/octeontx2/nic/otx2_common.c",
                        "drivers/net/ethernet/marvell/octeontx2/nic/otx2_txrx.c",
                        "drivers/net/ethernet/marvell/octeontx2/nic/otx2_txrx.h"
                    ],
                    "versions": [
                        {
                            "version": "5.6",
                            "status": "affected"
                        },
                        {
                            "version": "0",
                            "lessThan": "5.6",
                            "status": "unaffected",
                            "versionType": "semver"
                        },
                        {
                            "version": "6.0.9",
                            "lessThanOrEqual": "6.0.*",
                            "status": "unaffected",
                            "versionType": "semver"
                        },
                        {
                            "version": "6.1",
                            "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.6",
                                    "versionEndExcluding": "6.0.9"
                                },
                                {
                                    "vulnerable": true,
                                    "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                                    "versionStartIncluding": "5.6",
                                    "versionEndExcluding": "6.1"
                                }
                            ]
                        }
                    ]
                }
            ],
            "references": [
                {
                    "url": "https://git.kernel.org/stable/c/015e3c0a3b16193aab23beefe4719484b9984c2d"
                },
                {
                    "url": "https://git.kernel.org/stable/c/f0dfc4c88ef39be0ba736aa0ce6119263fc19aeb"
                }
            ],
            "title": "octeontx2-pf: Fix SQE threshold checking",
            "x_generator": {
                "engine": "bippy-1.2.0"
            }
        }
    }
}