CVE-2022-50679 (GCVE-0-2022-50679)

Vulnerability from cvelistv5 – Published: 2025-12-09 01:29 – Updated: 2025-12-09 01:29
VLAI?
Title
i40e: Fix DMA mappings leak
Summary
In the Linux kernel, the following vulnerability has been resolved: i40e: Fix DMA mappings leak During reallocation of RX buffers, new DMA mappings are created for those buffers. steps for reproduction: while : do for ((i=0; i<=8160; i=i+32)) do ethtool -G enp130s0f0 rx $i tx $i sleep 0.5 ethtool -g enp130s0f0 done done This resulted in crash: i40e 0000:01:00.1: Unable to allocate memory for the Rx descriptor ring, size=65536 Driver BUG WARNING: CPU: 0 PID: 4300 at net/core/xdp.c:141 xdp_rxq_info_unreg+0x43/0x50 Call Trace: i40e_free_rx_resources+0x70/0x80 [i40e] i40e_set_ringparam+0x27c/0x800 [i40e] ethnl_set_rings+0x1b2/0x290 genl_family_rcv_msg_doit.isra.15+0x10f/0x150 genl_family_rcv_msg+0xb3/0x160 ? rings_fill_reply+0x1a0/0x1a0 genl_rcv_msg+0x47/0x90 ? genl_family_rcv_msg+0x160/0x160 netlink_rcv_skb+0x4c/0x120 genl_rcv+0x24/0x40 netlink_unicast+0x196/0x230 netlink_sendmsg+0x204/0x3d0 sock_sendmsg+0x4c/0x50 __sys_sendto+0xee/0x160 ? handle_mm_fault+0xbe/0x1e0 ? syscall_trace_enter+0x1d3/0x2c0 __x64_sys_sendto+0x24/0x30 do_syscall_64+0x5b/0x1a0 entry_SYSCALL_64_after_hwframe+0x65/0xca RIP: 0033:0x7f5eac8b035b Missing register, driver bug WARNING: CPU: 0 PID: 4300 at net/core/xdp.c:119 xdp_rxq_info_unreg_mem_model+0x69/0x140 Call Trace: xdp_rxq_info_unreg+0x1e/0x50 i40e_free_rx_resources+0x70/0x80 [i40e] i40e_set_ringparam+0x27c/0x800 [i40e] ethnl_set_rings+0x1b2/0x290 genl_family_rcv_msg_doit.isra.15+0x10f/0x150 genl_family_rcv_msg+0xb3/0x160 ? rings_fill_reply+0x1a0/0x1a0 genl_rcv_msg+0x47/0x90 ? genl_family_rcv_msg+0x160/0x160 netlink_rcv_skb+0x4c/0x120 genl_rcv+0x24/0x40 netlink_unicast+0x196/0x230 netlink_sendmsg+0x204/0x3d0 sock_sendmsg+0x4c/0x50 __sys_sendto+0xee/0x160 ? handle_mm_fault+0xbe/0x1e0 ? syscall_trace_enter+0x1d3/0x2c0 __x64_sys_sendto+0x24/0x30 do_syscall_64+0x5b/0x1a0 entry_SYSCALL_64_after_hwframe+0x65/0xca RIP: 0033:0x7f5eac8b035b This was caused because of new buffers with different RX ring count should substitute older ones, but those buffers were freed in i40e_configure_rx_ring and reallocated again with i40e_alloc_rx_bi, thus kfree on rx_bi caused leak of already mapped DMA. Fix this by reallocating ZC with rx_bi_zc struct when BPF program loads. Additionally reallocate back to rx_bi when BPF program unloads. If BPF program is loaded/unloaded and XSK pools are created, reallocate RX queues accordingly in XSP_SETUP_XSK_POOL handler.
Severity ?
No CVSS data available.
Assigner
Impacted products
Vendor Product Version
Linux Linux Affected: be1222b585fdc410b8c1dbcc57dd03a00f04eff5 , < ed5baf3d0a33caaca4cd4073ebb0854cc77a616d (git)
Affected: be1222b585fdc410b8c1dbcc57dd03a00f04eff5 , < 94a171c982b8a8137a00721c1e62bc2713435bca (git)
Affected: be1222b585fdc410b8c1dbcc57dd03a00f04eff5 , < 5f499596dfa3db9b3172645b6de9e1096a669c95 (git)
Affected: be1222b585fdc410b8c1dbcc57dd03a00f04eff5 , < aae425efdfd1b1d8452260a3cb49344ebf20b1f5 (git)
Create a notification for this product.
    Linux Linux Affected: 5.8
Unaffected: 0 , < 5.8 (semver)
Unaffected: 5.10.152 , ≤ 5.10.* (semver)
Unaffected: 5.15.76 , ≤ 5.15.* (semver)
Unaffected: 6.0.6 , ≤ 6.0.* (semver)
Unaffected: 6.1 , ≤ * (original_commit_for_fix)
Create a notification for this product.
Show details on NVD website

{
  "containers": {
    "cna": {
      "affected": [
        {
          "defaultStatus": "unaffected",
          "product": "Linux",
          "programFiles": [
            "drivers/net/ethernet/intel/i40e/i40e_ethtool.c",
            "drivers/net/ethernet/intel/i40e/i40e_main.c",
            "drivers/net/ethernet/intel/i40e/i40e_txrx.c",
            "drivers/net/ethernet/intel/i40e/i40e_txrx.h",
            "drivers/net/ethernet/intel/i40e/i40e_xsk.c",
            "drivers/net/ethernet/intel/i40e/i40e_xsk.h"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "lessThan": "ed5baf3d0a33caaca4cd4073ebb0854cc77a616d",
              "status": "affected",
              "version": "be1222b585fdc410b8c1dbcc57dd03a00f04eff5",
              "versionType": "git"
            },
            {
              "lessThan": "94a171c982b8a8137a00721c1e62bc2713435bca",
              "status": "affected",
              "version": "be1222b585fdc410b8c1dbcc57dd03a00f04eff5",
              "versionType": "git"
            },
            {
              "lessThan": "5f499596dfa3db9b3172645b6de9e1096a669c95",
              "status": "affected",
              "version": "be1222b585fdc410b8c1dbcc57dd03a00f04eff5",
              "versionType": "git"
            },
            {
              "lessThan": "aae425efdfd1b1d8452260a3cb49344ebf20b1f5",
              "status": "affected",
              "version": "be1222b585fdc410b8c1dbcc57dd03a00f04eff5",
              "versionType": "git"
            }
          ]
        },
        {
          "defaultStatus": "affected",
          "product": "Linux",
          "programFiles": [
            "drivers/net/ethernet/intel/i40e/i40e_ethtool.c",
            "drivers/net/ethernet/intel/i40e/i40e_main.c",
            "drivers/net/ethernet/intel/i40e/i40e_txrx.c",
            "drivers/net/ethernet/intel/i40e/i40e_txrx.h",
            "drivers/net/ethernet/intel/i40e/i40e_xsk.c",
            "drivers/net/ethernet/intel/i40e/i40e_xsk.h"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "status": "affected",
              "version": "5.8"
            },
            {
              "lessThan": "5.8",
              "status": "unaffected",
              "version": "0",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "5.10.*",
              "status": "unaffected",
              "version": "5.10.152",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "5.15.*",
              "status": "unaffected",
              "version": "5.15.76",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.0.*",
              "status": "unaffected",
              "version": "6.0.6",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "*",
              "status": "unaffected",
              "version": "6.1",
              "versionType": "original_commit_for_fix"
            }
          ]
        }
      ],
      "cpeApplicability": [
        {
          "nodes": [
            {
              "cpeMatch": [
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "5.10.152",
                  "versionStartIncluding": "5.8",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "5.15.76",
                  "versionStartIncluding": "5.8",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.0.6",
                  "versionStartIncluding": "5.8",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.1",
                  "versionStartIncluding": "5.8",
                  "vulnerable": true
                }
              ],
              "negate": false,
              "operator": "OR"
            }
          ]
        }
      ],
      "descriptions": [
        {
          "lang": "en",
          "value": "In the Linux kernel, the following vulnerability has been resolved:\n\ni40e: Fix DMA mappings leak\n\nDuring reallocation of RX buffers, new DMA mappings are created for\nthose buffers.\n\nsteps for reproduction:\nwhile :\ndo\nfor ((i=0; i\u003c=8160; i=i+32))\ndo\nethtool -G enp130s0f0 rx $i tx $i\nsleep 0.5\nethtool -g enp130s0f0\ndone\ndone\n\nThis resulted in crash:\ni40e 0000:01:00.1: Unable to allocate memory for the Rx descriptor ring, size=65536\nDriver BUG\nWARNING: CPU: 0 PID: 4300 at net/core/xdp.c:141 xdp_rxq_info_unreg+0x43/0x50\nCall Trace:\ni40e_free_rx_resources+0x70/0x80 [i40e]\ni40e_set_ringparam+0x27c/0x800 [i40e]\nethnl_set_rings+0x1b2/0x290\ngenl_family_rcv_msg_doit.isra.15+0x10f/0x150\ngenl_family_rcv_msg+0xb3/0x160\n? rings_fill_reply+0x1a0/0x1a0\ngenl_rcv_msg+0x47/0x90\n? genl_family_rcv_msg+0x160/0x160\nnetlink_rcv_skb+0x4c/0x120\ngenl_rcv+0x24/0x40\nnetlink_unicast+0x196/0x230\nnetlink_sendmsg+0x204/0x3d0\nsock_sendmsg+0x4c/0x50\n__sys_sendto+0xee/0x160\n? handle_mm_fault+0xbe/0x1e0\n? syscall_trace_enter+0x1d3/0x2c0\n__x64_sys_sendto+0x24/0x30\ndo_syscall_64+0x5b/0x1a0\nentry_SYSCALL_64_after_hwframe+0x65/0xca\nRIP: 0033:0x7f5eac8b035b\nMissing register, driver bug\nWARNING: CPU: 0 PID: 4300 at net/core/xdp.c:119 xdp_rxq_info_unreg_mem_model+0x69/0x140\nCall Trace:\nxdp_rxq_info_unreg+0x1e/0x50\ni40e_free_rx_resources+0x70/0x80 [i40e]\ni40e_set_ringparam+0x27c/0x800 [i40e]\nethnl_set_rings+0x1b2/0x290\ngenl_family_rcv_msg_doit.isra.15+0x10f/0x150\ngenl_family_rcv_msg+0xb3/0x160\n? rings_fill_reply+0x1a0/0x1a0\ngenl_rcv_msg+0x47/0x90\n? genl_family_rcv_msg+0x160/0x160\nnetlink_rcv_skb+0x4c/0x120\ngenl_rcv+0x24/0x40\nnetlink_unicast+0x196/0x230\nnetlink_sendmsg+0x204/0x3d0\nsock_sendmsg+0x4c/0x50\n__sys_sendto+0xee/0x160\n? handle_mm_fault+0xbe/0x1e0\n? syscall_trace_enter+0x1d3/0x2c0\n__x64_sys_sendto+0x24/0x30\ndo_syscall_64+0x5b/0x1a0\nentry_SYSCALL_64_after_hwframe+0x65/0xca\nRIP: 0033:0x7f5eac8b035b\n\nThis was caused because of new buffers with different RX ring count should\nsubstitute older ones, but those buffers were freed in\ni40e_configure_rx_ring and reallocated again with i40e_alloc_rx_bi,\nthus kfree on rx_bi caused leak of already mapped DMA.\n\nFix this by reallocating ZC with rx_bi_zc struct when BPF program loads. Additionally\nreallocate back to rx_bi when BPF program unloads.\n\nIf BPF program is loaded/unloaded and XSK pools are created, reallocate\nRX queues accordingly in XSP_SETUP_XSK_POOL handler."
        }
      ],
      "providerMetadata": {
        "dateUpdated": "2025-12-09T01:29:32.925Z",
        "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "shortName": "Linux"
      },
      "references": [
        {
          "url": "https://git.kernel.org/stable/c/ed5baf3d0a33caaca4cd4073ebb0854cc77a616d"
        },
        {
          "url": "https://git.kernel.org/stable/c/94a171c982b8a8137a00721c1e62bc2713435bca"
        },
        {
          "url": "https://git.kernel.org/stable/c/5f499596dfa3db9b3172645b6de9e1096a669c95"
        },
        {
          "url": "https://git.kernel.org/stable/c/aae425efdfd1b1d8452260a3cb49344ebf20b1f5"
        }
      ],
      "title": "i40e: Fix DMA mappings leak",
      "x_generator": {
        "engine": "bippy-1.2.0"
      }
    }
  },
  "cveMetadata": {
    "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
    "assignerShortName": "Linux",
    "cveId": "CVE-2022-50679",
    "datePublished": "2025-12-09T01:29:32.925Z",
    "dateReserved": "2025-12-09T01:26:45.991Z",
    "dateUpdated": "2025-12-09T01:29:32.925Z",
    "state": "PUBLISHED"
  },
  "dataType": "CVE_RECORD",
  "dataVersion": "5.2",
  "vulnerability-lookup:meta": {
    "nvd": "{\"cve\":{\"id\":\"CVE-2022-50679\",\"sourceIdentifier\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"published\":\"2025-12-09T16:17:20.210\",\"lastModified\":\"2025-12-09T18:37:13.640\",\"vulnStatus\":\"Awaiting Analysis\",\"cveTags\":[],\"descriptions\":[{\"lang\":\"en\",\"value\":\"In the Linux kernel, the following vulnerability has been resolved:\\n\\ni40e: Fix DMA mappings leak\\n\\nDuring reallocation of RX buffers, new DMA mappings are created for\\nthose buffers.\\n\\nsteps for reproduction:\\nwhile :\\ndo\\nfor ((i=0; i\u003c=8160; i=i+32))\\ndo\\nethtool -G enp130s0f0 rx $i tx $i\\nsleep 0.5\\nethtool -g enp130s0f0\\ndone\\ndone\\n\\nThis resulted in crash:\\ni40e 0000:01:00.1: Unable to allocate memory for the Rx descriptor ring, size=65536\\nDriver BUG\\nWARNING: CPU: 0 PID: 4300 at net/core/xdp.c:141 xdp_rxq_info_unreg+0x43/0x50\\nCall Trace:\\ni40e_free_rx_resources+0x70/0x80 [i40e]\\ni40e_set_ringparam+0x27c/0x800 [i40e]\\nethnl_set_rings+0x1b2/0x290\\ngenl_family_rcv_msg_doit.isra.15+0x10f/0x150\\ngenl_family_rcv_msg+0xb3/0x160\\n? rings_fill_reply+0x1a0/0x1a0\\ngenl_rcv_msg+0x47/0x90\\n? genl_family_rcv_msg+0x160/0x160\\nnetlink_rcv_skb+0x4c/0x120\\ngenl_rcv+0x24/0x40\\nnetlink_unicast+0x196/0x230\\nnetlink_sendmsg+0x204/0x3d0\\nsock_sendmsg+0x4c/0x50\\n__sys_sendto+0xee/0x160\\n? handle_mm_fault+0xbe/0x1e0\\n? syscall_trace_enter+0x1d3/0x2c0\\n__x64_sys_sendto+0x24/0x30\\ndo_syscall_64+0x5b/0x1a0\\nentry_SYSCALL_64_after_hwframe+0x65/0xca\\nRIP: 0033:0x7f5eac8b035b\\nMissing register, driver bug\\nWARNING: CPU: 0 PID: 4300 at net/core/xdp.c:119 xdp_rxq_info_unreg_mem_model+0x69/0x140\\nCall Trace:\\nxdp_rxq_info_unreg+0x1e/0x50\\ni40e_free_rx_resources+0x70/0x80 [i40e]\\ni40e_set_ringparam+0x27c/0x800 [i40e]\\nethnl_set_rings+0x1b2/0x290\\ngenl_family_rcv_msg_doit.isra.15+0x10f/0x150\\ngenl_family_rcv_msg+0xb3/0x160\\n? rings_fill_reply+0x1a0/0x1a0\\ngenl_rcv_msg+0x47/0x90\\n? genl_family_rcv_msg+0x160/0x160\\nnetlink_rcv_skb+0x4c/0x120\\ngenl_rcv+0x24/0x40\\nnetlink_unicast+0x196/0x230\\nnetlink_sendmsg+0x204/0x3d0\\nsock_sendmsg+0x4c/0x50\\n__sys_sendto+0xee/0x160\\n? handle_mm_fault+0xbe/0x1e0\\n? syscall_trace_enter+0x1d3/0x2c0\\n__x64_sys_sendto+0x24/0x30\\ndo_syscall_64+0x5b/0x1a0\\nentry_SYSCALL_64_after_hwframe+0x65/0xca\\nRIP: 0033:0x7f5eac8b035b\\n\\nThis was caused because of new buffers with different RX ring count should\\nsubstitute older ones, but those buffers were freed in\\ni40e_configure_rx_ring and reallocated again with i40e_alloc_rx_bi,\\nthus kfree on rx_bi caused leak of already mapped DMA.\\n\\nFix this by reallocating ZC with rx_bi_zc struct when BPF program loads. Additionally\\nreallocate back to rx_bi when BPF program unloads.\\n\\nIf BPF program is loaded/unloaded and XSK pools are created, reallocate\\nRX queues accordingly in XSP_SETUP_XSK_POOL handler.\"}],\"metrics\":{},\"references\":[{\"url\":\"https://git.kernel.org/stable/c/5f499596dfa3db9b3172645b6de9e1096a669c95\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"},{\"url\":\"https://git.kernel.org/stable/c/94a171c982b8a8137a00721c1e62bc2713435bca\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"},{\"url\":\"https://git.kernel.org/stable/c/aae425efdfd1b1d8452260a3cb49344ebf20b1f5\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"},{\"url\":\"https://git.kernel.org/stable/c/ed5baf3d0a33caaca4cd4073ebb0854cc77a616d\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"}]}}"
  }
}


Log in or create an account to share your comment.




Tags
Taxonomy of the tags.


Loading…

Loading…

Loading…

Sightings

Author Source Type Date

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…