{
    "dataType": "CVE_RECORD",
    "dataVersion": "5.2",
    "cveMetadata": {
        "cveId": "CVE-2022-49452",
        "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "state": "PUBLISHED",
        "assignerShortName": "Linux",
        "dateReserved": "2025-02-26T02:08:31.572Z",
        "datePublished": "2025-02-26T02:13:01.777Z",
        "dateUpdated": "2026-08-05T08:55:13.910Z"
    },
    "containers": {
        "cna": {
            "providerMetadata": {
                "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
                "shortName": "Linux",
                "dateUpdated": "2026-08-05T08:55:13.910Z"
            },
            "descriptions": [
                {
                    "lang": "en",
                    "value": "In the Linux kernel, the following vulnerability has been resolved:\n\ndpaa2-eth: retrieve the virtual address before dma_unmap\n\nThe TSO header was DMA unmapped before the virtual address was retrieved\nand then used to free the buffer. This meant that we were actually\nremoving the DMA map and then trying to search for it to help in\nretrieving the virtual address. This lead to a invalid virtual address\nbeing used in the kfree call.\n\nFix this by calling dpaa2_iova_to_virt() prior to the dma_unmap call.\n\n[  487.231819] Unable to handle kernel paging request at virtual address fffffd9807000008\n\n(...)\n\n[  487.354061] Hardware name: SolidRun LX2160A Honeycomb (DT)\n[  487.359535] pstate: a0400005 (NzCv daif +PAN -UAO -TCO -DIT -SSBS BTYPE=--)\n[  487.366485] pc : kfree+0xac/0x304\n[  487.369799] lr : kfree+0x204/0x304\n[  487.373191] sp : ffff80000c4eb120\n[  487.376493] x29: ffff80000c4eb120 x28: ffff662240c46400 x27: 0000000000000001\n[  487.383621] x26: 0000000000000001 x25: ffff662246da0cc0 x24: ffff66224af78000\n[  487.390748] x23: ffffad184f4ce008 x22: ffffad1850185000 x21: ffffad1838d13cec\n[  487.397874] x20: ffff6601c0000000 x19: fffffd9807000000 x18: 0000000000000000\n[  487.405000] x17: ffffb910cdc49000 x16: ffffad184d7d9080 x15: 0000000000004000\n[  487.412126] x14: 0000000000000008 x13: 000000000000ffff x12: 0000000000000000\n[  487.419252] x11: 0000000000000004 x10: 0000000000000001 x9 : ffffad184d7d927c\n[  487.426379] x8 : 0000000000000000 x7 : 0000000ffffffd1d x6 : ffff662240a94900\n[  487.433505] x5 : 0000000000000003 x4 : 0000000000000009 x3 : ffffad184f4ce008\n[  487.440632] x2 : ffff662243eec000 x1 : 0000000100000100 x0 : fffffc0000000000\n[  487.447758] Call trace:\n[  487.450194]  kfree+0xac/0x304\n[  487.453151]  dpaa2_eth_free_tx_fd.isra.0+0x33c/0x3e0 [fsl_dpaa2_eth]\n[  487.459507]  dpaa2_eth_tx_conf+0x100/0x2e0 [fsl_dpaa2_eth]\n[  487.464989]  dpaa2_eth_poll+0xdc/0x380 [fsl_dpaa2_eth]"
                }
            ],
            "metrics": [
                {
                    "cvssV3_1": {
                        "version": "3.1",
                        "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H",
                        "baseScore": 7.5,
                        "baseSeverity": "HIGH"
                    },
                    "scenarios": [
                        {
                            "lang": "en",
                            "value": "AV:N - On DPAA2-based routers/gateways (NXP Layerscape appliances), remote TCP traffic that is GRO-coalesced and forwarded egresses as GSO skbs into dpaa2_eth_tx → dpaa2_eth_build_gso_fd → dpaa2_eth_tx_conf → dpaa2_eth_free_tx_fd, so an unauthenticated network peer reaches the buggy free path without a local login.\nAC:L - Any GSO/TSO transmit with software TSO enabled (default NETIF_F_TSO) deterministically hits the SW_TSO branch that unmaps then looks up the TSO header; IOMMU use is common on LX2160A (as in the reported panic), not a rare attacker-uncontrollable condition.\nPR:N - In the highest-impact forwarding deployment the attacker only sends unauthenticated packets on the wire; no host credentials or capabilities are required once IP forwarding and the dpaa2 interface are operational.\nUI:N - Packet receive, GRO, forward, driver TSO, and NAPI TX confirmation run automatically in softirq with no separate victim action such as mounting a device or opening a file.\nS:U - Impact is a host-kernel oops/panic inside the same OS authority as the dpaa2 driver; the bad IOMMU lookup does not bypass IOMMU isolation or cross a VM/sandbox boundary.\nC:N - After dma_unmap, iommu_iova_to_phys yields an unmapped/garbage address and kfree faults with a level-2 translation fault (observed pointers outside the live heap); there is no UAF reclaim or OOB read disclosure primitive.\nI:N - The invalid kfree aborts on an unmapped linear-map address before slab freelist corruption or control of a live object, so there is no exploitable write or control-flow hijack primitive—only the crash.\nA:H - kfree of the invalid post-unmap virtual address oopses and escalates to \"Kernel panic - not syncing: Oops: Fatal exception in interrupt,\" fully taking down the system and re-triggerable by further TSO traffic."
                        }
                    ]
                }
            ],
            "affected": [
                {
                    "product": "Linux",
                    "vendor": "Linux",
                    "defaultStatus": "unaffected",
                    "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
                    "programFiles": [
                        "drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c"
                    ],
                    "versions": [
                        {
                            "version": "3dc709e0cd47c602a8d1a6747f1a91e9737eeed3",
                            "lessThan": "ba5fe3dd4833bbc03609c5c0c2dd2cea5fa5addf",
                            "status": "affected",
                            "versionType": "git"
                        },
                        {
                            "version": "3dc709e0cd47c602a8d1a6747f1a91e9737eeed3",
                            "lessThan": "06d129946a71f3159b3b40ee95549183edf2c79d",
                            "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/freescale/dpaa2/dpaa2-eth.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/ba5fe3dd4833bbc03609c5c0c2dd2cea5fa5addf"
                },
                {
                    "url": "https://git.kernel.org/stable/c/06d129946a71f3159b3b40ee95549183edf2c79d"
                }
            ],
            "title": "dpaa2-eth: retrieve the virtual address before dma_unmap",
            "x_generator": {
                "engine": "bippy-1.2.0"
            }
        }
    }
}