CVE-2025-37911

bnxt_en: Fix out-of-bound memcpy() during ethtool -w

State
Published
Severity
7.8 High
Published
May 20, 2025
Updated
Oct 15, 2026
Reserved
Apr 16, 2025

Read the record on cve.org

Description

In the Linux kernel, the following vulnerability has been resolved:

bnxt_en: Fix out-of-bound memcpy() during ethtool -w

When retrieving the FW coredump using ethtool, it can sometimes cause memory corruption:

BUG: KFENCE: memory corruption in __bnxt_get_coredump+0x3ef/0x670 [bnxt_en] Corrupted memory at 0x000000008f0f30e8 [ ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ] (in kfence-#45): __bnxt_get_coredump+0x3ef/0x670 [bnxt_en] ethtool_get_dump_data+0xdc/0x1a0 __dev_ethtool+0xa1e/0x1af0 dev_ethtool+0xa8/0x170 dev_ioctl+0x1b5/0x580 sock_do_ioctl+0xab/0xf0 sock_ioctl+0x1ce/0x2e0 __x64_sys_ioctl+0x87/0xc0 do_syscall_64+0x5c/0xf0 entry_SYSCALL_64_after_hwframe+0x78/0x80

...

This happens when copying the coredump segment list in bnxt_hwrm_dbg_dma_data() with the HWRM_DBG_COREDUMP_LIST FW command. The info->dest_buf buffer is allocated based on the number of coredump segments returned by the FW. The segment list is then DMA'ed by the FW and the length of the DMA is returned by FW. The driver then copies this DMA'ed segment list to info->dest_buf.

In some cases, this DMA length may exceed the info->dest_buf length and cause the above BUG condition. Fix it by capping the copy length to not exceed the length of info->dest_buf. The extra DMA data contains no useful information.

This code path is shared for the HWRM_DBG_COREDUMP_LIST and the HWRM_DBG_COREDUMP_RETRIEVE FW commands. The buffering is different for these 2 FW commands. To simplify the logic, we need to move the line to adjust the buffer length for HWRM_DBG_COREDUMP_RETRIEVE up, so that the new check to cap the copy length will work for both commands.

Scores

CVSSScoreVectorSource
3.17.8 HighCVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:HLinux

Weaknesses

The record names no weakness.

Affected Products

ProductVersions
LinuxLinux
  • c74751f4c39232c31214ec6a3bc1c7e62f5c728b to before 69b10dd23ab826d0c7f2d9ab311842251978d0c1Affected
  • c74751f4c39232c31214ec6a3bc1c7e62f5c728b to before 43292b83424158fa6ec458799f3cb9c54d18c484Affected
  • c74751f4c39232c31214ec6a3bc1c7e62f5c728b to before 4d69864915a3a052538e4ba76cd6fd77cfc64ebeAffected
  • c74751f4c39232c31214ec6a3bc1c7e62f5c728b to before 44807af79efd0d78fa36383dd865ddfe7992c0a6Affected
  • c74751f4c39232c31214ec6a3bc1c7e62f5c728b to before 44d81a9ebf0cad92512e0ffdf7412bfe20db66ecAffected
  • c74751f4c39232c31214ec6a3bc1c7e62f5c728b to before 6b87bd94f34370bbf1dfa59352bed8efab5bf419Affected
  • 4bf973a1f84aefb64750bdb3afe72d54de3199d7Affected
  • a76837dd731b68cc3b5690470bc9efa2a8e3801aAffected
  • 4.19.95 to before 4.20Affected
  • 5.4.8 to before 5.5Affected
LinuxLinux
  • 5.5Affected
  • before 5.5Not affected
  • 5.15.182 through 5.15.*Not affected
  • 6.1.138 through 6.1.*Not affected
  • 6.6.90 through 6.6.*Not affected
  • 6.12.28 through 6.12.*Not affected
  • 6.14.6 through 6.14.*Not affected
  • 6.15 and laterNot affected

References

Every record here comes from the CVE Program’s CVE List. © 1999–2026 The MITRE Corporation. CVE is a registered trademark of The MITRE Corporation. The records are reproduced under the CVE Program terms of use.