CVE-2022-49452 (GCVE-0-2022-49452)

Vulnerability from cvelistv5 – Published: 2025-02-26 02:13 – Updated: 2026-08-05 08:55
VLAI
Title
dpaa2-eth: retrieve the virtual address before dma_unmap
Summary
In the Linux kernel, the following vulnerability has been resolved: dpaa2-eth: retrieve the virtual address before dma_unmap The TSO header was DMA unmapped before the virtual address was retrieved and then used to free the buffer. This meant that we were actually removing the DMA map and then trying to search for it to help in retrieving the virtual address. This lead to a invalid virtual address being used in the kfree call. Fix this by calling dpaa2_iova_to_virt() prior to the dma_unmap call. [ 487.231819] Unable to handle kernel paging request at virtual address fffffd9807000008 (...) [ 487.354061] Hardware name: SolidRun LX2160A Honeycomb (DT) [ 487.359535] pstate: a0400005 (NzCv daif +PAN -UAO -TCO -DIT -SSBS BTYPE=--) [ 487.366485] pc : kfree+0xac/0x304 [ 487.369799] lr : kfree+0x204/0x304 [ 487.373191] sp : ffff80000c4eb120 [ 487.376493] x29: ffff80000c4eb120 x28: ffff662240c46400 x27: 0000000000000001 [ 487.383621] x26: 0000000000000001 x25: ffff662246da0cc0 x24: ffff66224af78000 [ 487.390748] x23: ffffad184f4ce008 x22: ffffad1850185000 x21: ffffad1838d13cec [ 487.397874] x20: ffff6601c0000000 x19: fffffd9807000000 x18: 0000000000000000 [ 487.405000] x17: ffffb910cdc49000 x16: ffffad184d7d9080 x15: 0000000000004000 [ 487.412126] x14: 0000000000000008 x13: 000000000000ffff x12: 0000000000000000 [ 487.419252] x11: 0000000000000004 x10: 0000000000000001 x9 : ffffad184d7d927c [ 487.426379] x8 : 0000000000000000 x7 : 0000000ffffffd1d x6 : ffff662240a94900 [ 487.433505] x5 : 0000000000000003 x4 : 0000000000000009 x3 : ffffad184f4ce008 [ 487.440632] x2 : ffff662243eec000 x1 : 0000000100000100 x0 : fffffc0000000000 [ 487.447758] Call trace: [ 487.450194] kfree+0xac/0x304 [ 487.453151] dpaa2_eth_free_tx_fd.isra.0+0x33c/0x3e0 [fsl_dpaa2_eth] [ 487.459507] dpaa2_eth_tx_conf+0x100/0x2e0 [fsl_dpaa2_eth] [ 487.464989] dpaa2_eth_poll+0xdc/0x380 [fsl_dpaa2_eth]
Impacted products
Vendor Product Version CPE status
Linux Linux Affected: 3dc709e0cd47c602a8d1a6747f1a91e9737eeed3 , < ba5fe3dd4833bbc03609c5c0c2dd2cea5fa5addf (git)
Affected: 3dc709e0cd47c602a8d1a6747f1a91e9737eeed3 , < 06d129946a71f3159b3b40ee95549183edf2c79d (git)
guessed Create a notification for this product.
Linux Linux Affected: 5.18
Unaffected: 0 , < 5.18 (semver)
Unaffected: 5.18.3 , ≤ 5.18.* (semver)
Unaffected: 5.19 , ≤ * (original_commit_for_fix)
guessed Create a notification for this product.
Show details on NVD website

{
  "containers": {
    "cna": {
      "affected": [
        {
          "defaultStatus": "unaffected",
          "product": "Linux",
          "programFiles": [
            "drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "lessThan": "ba5fe3dd4833bbc03609c5c0c2dd2cea5fa5addf",
              "status": "affected",
              "version": "3dc709e0cd47c602a8d1a6747f1a91e9737eeed3",
              "versionType": "git"
            },
            {
              "lessThan": "06d129946a71f3159b3b40ee95549183edf2c79d",
              "status": "affected",
              "version": "3dc709e0cd47c602a8d1a6747f1a91e9737eeed3",
              "versionType": "git"
            }
          ]
        },
        {
          "defaultStatus": "affected",
          "product": "Linux",
          "programFiles": [
            "drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "status": "affected",
              "version": "5.18"
            },
            {
              "lessThan": "5.18",
              "status": "unaffected",
              "version": "0",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "5.18.*",
              "status": "unaffected",
              "version": "5.18.3",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "*",
              "status": "unaffected",
              "version": "5.19",
              "versionType": "original_commit_for_fix"
            }
          ]
        }
      ],
      "cpeApplicability": [
        {
          "nodes": [
            {
              "cpeMatch": [
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "5.18.3",
                  "versionStartIncluding": "5.18",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "5.19",
                  "versionStartIncluding": "5.18",
                  "vulnerable": true
                }
              ],
              "negate": false,
              "operator": "OR"
            }
          ]
        }
      ],
      "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": {
            "baseScore": 7.5,
            "baseSeverity": "HIGH",
            "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H",
            "version": "3.1"
          },
          "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 \u2192 dpaa2_eth_build_gso_fd \u2192 dpaa2_eth_tx_conf \u2192 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\u2014only 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."
            }
          ]
        }
      ],
      "providerMetadata": {
        "dateUpdated": "2026-08-05T08:55:13.910Z",
        "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "shortName": "Linux"
      },
      "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"
      }
    }
  },
  "cveMetadata": {
    "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
    "assignerShortName": "Linux",
    "cveId": "CVE-2022-49452",
    "datePublished": "2025-02-26T02:13:01.777Z",
    "dateReserved": "2025-02-26T02:08:31.572Z",
    "dateUpdated": "2026-08-05T08:55:13.910Z",
    "state": "PUBLISHED"
  },
  "dataType": "CVE_RECORD",
  "dataVersion": "5.2",
  "vulnerability-lookup:meta": {
    "epss": {
      "cve": "CVE-2022-49452",
      "date": "2026-08-25",
      "epss": "0.00466",
      "percentile": "0.3829"
    },
    "nvd": "{\"cve\":{\"id\":\"CVE-2022-49452\",\"sourceIdentifier\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"published\":\"2025-02-26T07:01:21.587\",\"lastModified\":\"2026-08-04T10:17:48.390\",\"vulnStatus\":\"Modified\",\"cveTags\":[],\"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]\"},{\"lang\":\"es\",\"value\":\"En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad: dpaa2-eth: recuperar la direcci\u00f3n virtual antes de dma_unmap El encabezado TSO fue desasignado por DMA antes de que se recuperara la direcci\u00f3n virtual y luego se usara para liberar el b\u00fafer. Esto significaba que en realidad est\u00e1bamos eliminando el mapa DMA y luego tratando de buscarlo para ayudar a recuperar la direcci\u00f3n virtual. Esto llev\u00f3 a que se usara una direcci\u00f3n virtual no v\u00e1lida en la llamada kfree. Solucione esto llamando a dpaa2_iova_to_virt() antes de la llamada dma_unmap. [ 487.231819] No se puede gestionar la solicitud de paginaci\u00f3n del n\u00facleo en la direcci\u00f3n virtual fffffd9807000008 (...) [ 487.354061] Hardware name: SolidRun LX2160A Honeycomb (DT) [ 487.359535] pstate: a0400005 (NzCv daif +PAN -UAO -TCO -DIT -SSBS BTYPE=--) [ 487.366485] pc : kfree+0xac/0x304 [ 487.369799] lr : kfree+0x204/0x304 [ 487.373191] sp : ffff80000c4eb120 [ 487.376493] x29: ffff80000c4eb120 x28: ffff662240c46400 x27: 0000000000000001 [ 487.383621] x26: 0000000000000001 x25: ffff662246da0cc0 x24: ffff66224af78000 [ 487.390748] x23: ffffad184f4ce008 x22: ffffad1850185000 x21: ffffad1838d13cec [ 487.397874] x20: ffff6601c0000000 x19: fffffd9807000000 x18: 0000000000000000 [ 487.405000] x17: ffffb910cdc49000 x16: ffffad184d7d9080 x15: 0000000000004000 [ 487.412126] x14: 0000000000000008 x13: 000000000000ffff x12: 0000000000000000 [ 487.419252] x11: 0000000000000004 x10: 0000000000000001 x9 : ffffad184d7d927c [ 487.426379] x8 : 0000000000000000 x7 : 0000000ffffffd1d x6 : ffff662240a94900 [ 487.433505] x5 : 0000000000000003 x4 : 0000000000000009 x3 : ffffad184f4ce008 [ 487.440632] x2 : ffff662243eec000 x1 : 0000000100000100 x0 : fffffc0000000000 [ 487.447758] Call trace: [ 487.450194] kfree+0xac/0x304 [ 487.453151] dpaa2_eth_free_tx_fd.isra.0+0x33c/0x3e0 [fsl_dpaa2_eth] [ 487.459507] dpaa2_eth_tx_conf+0x100/0x2e0 [fsl_dpaa2_eth] [ 487.464989] dpaa2_eth_poll+0xdc/0x380 [fsl_dpaa2_eth] \"}],\"affected\":[{\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"affectedData\":[{\"vendor\":\"Linux\",\"product\":\"Linux\",\"defaultStatus\":\"unaffected\",\"programFiles\":[\"drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c\"],\"repo\":\"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git\",\"versions\":[{\"version\":\"3dc709e0cd47c602a8d1a6747f1a91e9737eeed3\",\"lessThan\":\"ba5fe3dd4833bbc03609c5c0c2dd2cea5fa5addf\",\"versionType\":\"git\",\"status\":\"affected\"},{\"version\":\"3dc709e0cd47c602a8d1a6747f1a91e9737eeed3\",\"lessThan\":\"06d129946a71f3159b3b40ee95549183edf2c79d\",\"versionType\":\"git\",\"status\":\"affected\"}]},{\"vendor\":\"Linux\",\"product\":\"Linux\",\"defaultStatus\":\"affected\",\"programFiles\":[\"drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c\"],\"repo\":\"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git\",\"versions\":[{\"version\":\"5.18\",\"status\":\"affected\"},{\"version\":\"0\",\"lessThan\":\"5.18\",\"versionType\":\"semver\",\"status\":\"unaffected\"},{\"version\":\"5.18.3\",\"lessThanOrEqual\":\"5.18.*\",\"versionType\":\"semver\",\"status\":\"unaffected\"},{\"version\":\"5.19\",\"lessThanOrEqual\":\"*\",\"versionType\":\"original_commit_for_fix\",\"status\":\"unaffected\"}]}]}],\"metrics\":{\"cvssMetricV31\":[{\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"type\":\"Secondary\",\"cvssData\":{\"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\",\"attackVector\":\"NETWORK\",\"attackComplexity\":\"LOW\",\"privilegesRequired\":\"NONE\",\"userInteraction\":\"NONE\",\"scope\":\"UNCHANGED\",\"confidentialityImpact\":\"NONE\",\"integrityImpact\":\"NONE\",\"availabilityImpact\":\"HIGH\"},\"exploitabilityScore\":3.9,\"impactScore\":3.6},{\"source\":\"nvd@nist.gov\",\"type\":\"Primary\",\"cvssData\":{\"version\":\"3.1\",\"vectorString\":\"CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H\",\"baseScore\":5.5,\"baseSeverity\":\"MEDIUM\",\"attackVector\":\"LOCAL\",\"attackComplexity\":\"LOW\",\"privilegesRequired\":\"LOW\",\"userInteraction\":\"NONE\",\"scope\":\"UNCHANGED\",\"confidentialityImpact\":\"NONE\",\"integrityImpact\":\"NONE\",\"availabilityImpact\":\"HIGH\"},\"exploitabilityScore\":1.8,\"impactScore\":3.6}]},\"weaknesses\":[{\"source\":\"nvd@nist.gov\",\"type\":\"Primary\",\"description\":[{\"lang\":\"en\",\"value\":\"CWE-401\"}]}],\"configurations\":[{\"nodes\":[{\"operator\":\"OR\",\"negate\":false,\"cpeMatch\":[{\"vulnerable\":true,\"criteria\":\"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*\",\"versionStartIncluding\":\"5.18\",\"versionEndExcluding\":\"5.18.3\",\"matchCriteriaId\":\"8E122216-2E9E-4B3E-B7B8-D575A45BA3C2\"}]}]}],\"references\":[{\"url\":\"https://git.kernel.org/stable/c/06d129946a71f3159b3b40ee95549183edf2c79d\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"tags\":[\"Patch\"]},{\"url\":\"https://git.kernel.org/stable/c/ba5fe3dd4833bbc03609c5c0c2dd2cea5fa5addf\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"tags\":[\"Patch\"]}]}}",
    "redhat_vex": {
      "aggregate_severity": "None",
      "current_release_date": "2026-06-30T10:14:10+00:00",
      "cve": "CVE-2022-49452",
      "id": "CVE-2022-49452",
      "initial_release_date": "2022-01-01T00:00:00+00:00",
      "product_status:known_not_affected": "274",
      "source": "Red Hat CSAF VEX",
      "status": "final",
      "title": "kernel: dpaa2-eth: retrieve the virtual address before dma_unmap",
      "url": "https://security.access.redhat.com/data/csaf/v2/vex/2022/cve-2022-49452.json",
      "version": "3"
    },
    "suse_vex": {
      "aggregate_severity": "moderate",
      "current_release_date": "2026-08-05T01:13:45Z",
      "cve": "CVE-2022-49452",
      "id": "CVE-2022-49452",
      "initial_release_date": "2025-02-27T03:06:38Z",
      "product_status:known_not_affected": "352",
      "source": "SUSE CSAF VEX",
      "status": "interim",
      "title": "SUSE CVE CVE-2022-49452",
      "url": "https://ftp.suse.com/pub/projects/security/csaf-vex/cve-2022-49452.json",
      "version": "14"
    }
  }
}



Log in or create an account to share your comment.




Tags
Taxonomy of the tags.


Loading…

Loading…

Loading…

Forecast uses a logistic model when the trend is rising, or an exponential decay model when the trend is falling. Fitted via linearized least squares.

Sightings

Author Source Type Date Other

Nomenclature

  • Seen: The vulnerability was mentioned, discussed, or observed by the user.
  • Confirmed: The vulnerability has been validated from an analyst's perspective.
  • Published Proof of Concept: A public proof of concept is available for this vulnerability.
  • Exploited: The vulnerability was observed as exploited by the user who reported the sighting.
  • Patched: The vulnerability was observed as successfully patched by the user who reported the sighting.
  • Not exploited: The vulnerability was not observed as exploited by the user who reported the sighting.
  • Not confirmed: The user expressed doubt about the validity of the vulnerability.
  • Not patched: The vulnerability was not observed as successfully patched by the user who reported the sighting.

Loading…

Detection rules are retrieved from Rulezet.

Loading…

Loading…

Loading…